function oa_access_cleanup_permissions in Open Atrium Core 7.2
Removes left over permissions that are no longer valid.
Parameters
string|NULL $module: (Optional) If specified it will only attempt to cleanup permissions for the given module; otherwise it'll do them all.
1 call to oa_access_cleanup_permissions()
- OpenAtriumAccessTestCase::testCleanupPermissions in modules/
oa_access/ tests/ oa_access.test
File
- modules/
oa_access/ oa_access.module, line 746 - Code for the Open Atrium Access module.
Code
function oa_access_cleanup_permissions($module = NULL) {
$valid_permissions = oa_access_get_permissions();
$query = db_select('oa_access', 'a')
->distinct()
->fields('a', array(
'permission',
));
if ($module) {
$query
->condition('a.module', $module);
}
// Find all the permissions in the database which aren't declared by
// hook_oa_access_permission().
$invalid = array();
foreach ($query
->execute() as $row) {
if (!isset($valid_permissions[$row->permission])) {
$invalid[] = $row->permission;
}
}
// And delete them!
if (!empty($invalid)) {
db_delete('oa_access')
->condition('permission', $invalid, 'IN')
->execute();
}
}