/**
  * 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;
 }