Delete module permissions
public static deleteModulePermissions ( array $modulePermissions ) | ||
$modulePermissions | array | The module permissions to delete. |
/** * Update the permissions * * @param \SpoonFormElement[] $actionPermissions The action permissions. * @param array $bundledActionPermissions The bundled action permissions. */ private function updatePermissions($actionPermissions, $bundledActionPermissions) { $modulesDenied = array(); $modulesGranted = array(); $actionsDenied = array(); $actionsGranted = array(); $checkedModules = array(); $uncheckedModules = array(); // loop through action permissions foreach ($actionPermissions as $permission) { // get bits $bits = explode('_', $permission->getName()); // convert camelcasing to underscore notation $module = $bits[1]; $action = $bits[2]; // permission checked? if ($permission->getChecked()) { // add to granted $actionsGranted[] = array('group_id' => $this->id, 'module' => $module, 'action' => $action, 'level' => ACTION_RIGHTS_LEVEL); // if not yet present, add to checked modules if (!in_array($module, $checkedModules)) { $checkedModules[] = $module; } } else { // add to denied $actionsDenied[] = array('group_id' => $this->id, 'module' => $module, 'action' => $action, 'level' => ACTION_RIGHTS_LEVEL); // if not yet present add to unchecked modules if (!in_array($module, $uncheckedModules)) { $uncheckedModules[] = $module; } } } // loop through bundled action permissions foreach ($bundledActionPermissions as $permission) { // get bits $bits = explode('_', $permission->getName()); // convert camelcasing to underscore notation $module = $bits[1]; $group = $bits[3]; // create new item $moduleItem = array('group_id' => $this->id, 'module' => $module); // loop through actions foreach ($this->actions[$module] as $moduleAction) { // permission checked? if ($permission->getChecked()) { // add to granted if in the right group if (in_array($group, $moduleAction)) { $actionsGranted[] = array('group_id' => $this->id, 'module' => $module, 'action' => $moduleAction['value'], 'level' => ACTION_RIGHTS_LEVEL); } // if not yet present, add to checked modules if (!in_array($module, $checkedModules)) { $checkedModules[] = $module; } } else { // add to denied if (in_array($group, $moduleAction)) { $actionsDenied[] = array('group_id' => $this->id, 'module' => $module, 'action' => $moduleAction['value'], 'level' => ACTION_RIGHTS_LEVEL); } // if not yet present add to unchecked modules if (!in_array($module, $uncheckedModules)) { $uncheckedModules[] = $module; } } } } // loop through granted modules and add to array foreach ($checkedModules as $module) { $modulesGranted[] = array('group_id' => $this->id, 'module' => $module); } // loop through denied modules and add to array foreach (array_diff($uncheckedModules, $checkedModules) as $module) { $modulesDenied[] = array('group_id' => $this->id, 'module' => $module); } // add granted permissions BackendGroupsModel::addModulePermissions($modulesGranted); BackendGroupsModel::addActionPermissions($actionsGranted); // delete denied permissions BackendGroupsModel::deleteModulePermissions($modulesDenied); BackendGroupsModel::deleteActionPermissions($actionsDenied); }