/** * Delete an Action from the Database * * @return array * @todo fixme, currently unused */ public function saveDeleteActionAction() { $actionModel = new Admin_Model_DbTable_Acl_Action(); $actionRow = new Admin_Model_DbRow_Action($actionModel->find($this->request->getParam('id', 0))); if ($actionRow->get('id')) { // delete all rules which are bound to this action $rulesModel = new Admin_Model_DbTable_Acl_Rule(); $rulesModel->deleteByActionId($actionRow->get('id')); $actionModel->deleteById($actionRow->get('id')); return $this->responseSuccess(); } else { return $this->responseFailure('Failed Saving informations', 'Action Id is not valid'); } }
/** * change to permission for this action * * @view views/scripts/action/permission.phtml * @access public */ public function permissionAction() { $actionRow = new Admin_Model_DbRow_Action($this->dbAction->find($this->checkActionIdParam())); $ctrlRow = new Admin_Model_DbRow_Controller($this->dbController->find($actionRow->get('mcId'))); $dbRoles = new Admin_Model_DbTable_Acl_Role(); $dbRules = new Admin_Model_DbTable_Acl_Rule(); $roles = array(); $rules = array(); $allowRules = array(); $denyRules = array(); foreach ($dbRoles->fetchActiveRoles() as $row) { $roles[] = new Admin_Model_DbRow_Role($row); } foreach ($dbRules->fetchRulesForAction($actionRow->get('id')) as $row) { $rules[] = new Admin_Model_DbRow_Rule($row); } foreach ($rules as $rule) { if ($rule->get('rule') === Admin_Model_DbTable_Acl_Rule::RULE_DB_ALLOW) { $allowRules[] = $rule->get('roleId'); } elseif ($rule->get('rule') === Admin_Model_DbTable_Acl_Rule::RULE_DB_DENY) { $denyRules[] = $rule->get('roleId'); } } $form = new Admin_Form_Action_Permission($ctrlRow, $actionRow, $roles, $allowRules, $denyRules); $form->setAction('/noc/admin/action/permission'); if ($this->getRequest()->isPost()) { if ($form->isValid($this->getRequest()->getParams()) && $form->hasPermissionCollision($this->getRequest()) === FALSE) { $dbRules->deleteByActionId($actionRow->get('id')); $allow = (array) $form->getElement('rolesallow')->getValue(); $deny = (array) $form->getElement('rolesdeny')->getValue(); foreach ($allow as $roleId) { $dbRules->addRule($ctrlRow->get('id'), $actionRow->get('id'), $roleId, Admin_Model_DbTable_Acl_Rule::RULE_DB_ALLOW); } foreach ($deny as $roleId) { $dbRules->addRule($ctrlRow->get('id'), $actionRow->get('id'), $roleId, Admin_Model_DbTable_Acl_Rule::RULE_DB_DENY); } $this->_redirect(sprintf('admin/action/index/control/%d/id/%d', $ctrlRow->get('id'), $actionRow->get('id'))); } else { $form->addError('Mindestens eine Rolle wurde der Zugriff erlaubt und verweigert.'); } } $this->view->form = $form; $this->view->controller = $ctrlRow; }