/** * Update action for permission controller * @throws Zend_Exception * @return NULL */ public function updateAction() { // action body try { $translate = Zend_Registry::get('Zend_Translate'); $roleId = $this->getRequest()->getParam('id', 0); $mdlRole = new Acl_Model_Role(); $role = $mdlRole->find($roleId)->current(); if (!$role) { throw new Exception($translate->translate("LBL_ROW_NOT_FOUND")); } #Zend_Debug::dump( $this->getRequest()->getParams() ); $mdlPermission = new Acl_Model_Permission(); #$resources = $this->getRequest()->getParam( 'hrs'); $hrs = new Zend_Session_Namespace('resourceDataIds'); $resources = $hrs->hrs; zend_session::namespaceUnset('resourceDataIds'); $arrResources = explode(',', $resources); #$mdlPermission->deleteByRole($role); $permissions = $role->findDependentRowset('Acl_Model_Permission', 'Role'); foreach ($permissions as $perm) { #$perm = $mdlPermission->find()->current(); $perm->delete(); } foreach ($arrResources as $resourceId) { #echo $this->getRequest()->getParam('cb_res_'.$resourceId, 'deny')."<br>"; $permission = $mdlPermission->createRow(); $permission->role_id = $role->id; $permission->resource_id = $resourceId; $permission->privilege = $this->getRequest()->getParam('cb_res_' . $resourceId, 'deny'); $permission->save(); } /* @var $cache Zend_Cache_Backend_File */ $cache = Zend_Registry::get('cacheACL'); $mdlRole = new Acl_Model_Role(); $roles = $mdlRole->getList(); foreach ($roles as $role) { if ($cache->test('cacheACL_' . $role->id)) { $cache->remove('cacheACL_' . $role->id); } } $this->_helper->flashMessenger->addMessage(array('type' => 'info', 'header' => '', 'message' => $translate->translate("LBL_CHANGES_SAVED"))); //$this->_helper->redirector( "manage", "permission", "acl", array('role'=>$role->id) ); $this->_helper->redirector("list", "role", "acl"); } catch (Exception $e) { $this->_helper->flashMessenger->addMessage(array('type' => 'error', 'header' => '', 'message' => $e->getMessage())); $this->_helper->redirector("list", "role", "acl"); } return null; }