/** * check if a valid user Id is given. if not throw an exception * * @access private * @throws Exception if no valid id is given * @return integer the Id */ private function checkUserIdParam() { $id = $this->getRequest()->getParam('id'); if ($id === NULL || is_numeric($id) === FALSE || $this->dbUser->find($id)->count() === 0) { throw new Admin_Model_Acl_Exception('Invalid or no Id Parameter given'); } return (int) $id; }
/** * Update the informations for a selected role * * @return array */ public function saveEditRoleAction() { $roleModel = new Admin_Model_DbTable_Acl_Role(); $roleMembers = new Admin_Model_DbTable_Acl_RoleMember(); $roleInherits = new Admin_Model_DbTable_Acl_RoleInherit(); $userModel = new Admin_Model_DbTable_Users(); $groupModel = new Admin_Model_DbTable_Groups(); $roleRow = new Admin_Model_DbRow_Role($roleModel->find($this->request->getParam('id', 0))); $pUsers = Zend_Json_Decoder::decode($this->request->getParam('users', '')); $pGroups = Zend_Json_Decoder::decode($this->request->getParam('groups', '')); $pRoles = Zend_Json_Decoder::decode($this->request->getParam('roles', '')); $errors = array(); if (strtolower($this->request->getParam('name', '')) !== strtolower($roleRow->get('name'))) { if ($roleModel->fetchRowByRoleName($this->request->getParam('name', ''))) { return $this->responseFailure('Error saving informations', 'The role name is already used'); } } // validate the posted users, groups and inherited roles if (is_array($pUsers)) { $tmp = array(); foreach ($pUsers as $user) { $u = $userModel->find($user); if ($u->count() === 1) { $tmp[] = new Admin_Model_DbRow_User($u); } } $pUsers = $tmp; } if (is_array($pGroups)) { $tmp = array(); foreach ($pGroups as $group) { $g = $groupModel->find($group); if ($g->count() === 1) { $tmp[] = new Admin_Model_DbRow_Group($g); } } $pGroups = $tmp; } if (is_array($pRoles)) { $tmp = array(); foreach ($pRoles as $role) { $r = $roleModel->find($role); if ($r->count() === 1) { $tmp[] = new Admin_Model_DbRow_Role($r); } } $pRoles = $tmp; } if ($roleRow->get('id')) { $roleRow->fromArray(array('name' => $this->request->getParam('name'), 'description' => $this->request->getParam('description', ''), 'enabled' => $this->request->getParam('enabled', 'false') == 'true' ? 1 : 0)); $roleModel->update($roleRow->toDbArray(), $roleRow->get('id')); $roleMembers->deleteWithRoleId($roleRow->get('id')); $roleInherits->deleteWithRoleId($roleRow->get('id')); foreach ($pGroups as $group) { $roleMembers->insert($roleRow->get('id'), $group->get('id'), Admin_Model_DbTable_Acl_RoleMember::MEMBER_TYPE_GROUP); } foreach ($pUsers as $user) { $roleMembers->insert($roleRow->get('id'), $user->get('id'), Admin_Model_DbTable_Acl_RoleMember::MEMBER_TYPE_USER); } foreach ($pRoles as $inheritRole) { // do not add self row als inherit role, could cause loop in acl if ($inheritRole != $roleRow->get('id')) { $roleInherits->insert($roleRow->get('id'), $inheritRole->get('id')); } } return $this->responseSuccess(); } return $this->responseFailure('Error saving informations', 'Unknown Role ID. Editing not possible'); }