/** * Save a new Role in the database, if all tests passed * * @return array */ public function saveNewRoleAction() { $pUsers = Zend_Json_Decoder::decode($this->request->getParam('users', array())); $pGroups = Zend_Json_Decoder::decode($this->request->getParam('groups', array())); $pRoles = Zend_Json_Decoder::decode($this->request->getParam('roles', array())); $roleModel = new Admin_Model_DbTable_Acl_Role(); $roleMembers = new Admin_Model_DbTable_Acl_RoleMember(); $roleInherits = new Admin_Model_DbTable_Acl_RoleInherit(); $roleRow = $roleModel->fetchAll($roleModel->select()->where('LOWER(uar_name) = ?', strtolower($this->request->getParam('name')))); if ($roleRow->count() === 0) { $roleRow = new Admin_Model_DbRow_Role(array('name' => $this->request->getParam('name', ''), 'enabled' => $this->request->getParam('enabled', 'false') == 'true' ? 1 : 0, 'description' => $this->request->getParam('description', ''))); $roleModel->insert($roleRow->toDbArray()); $lastInsertId = $roleModel->getAdapter()->lastInsertId(); foreach ($pGroups as $group) { $roleMembers->insert($lastInsertId, $group, Admin_Model_DbTable_Acl_RoleMember::MEMBER_TYPE_GROUP); } foreach ($pUsers as $user) { $roleMembers->insert($lastInsertId, $user, Admin_Model_DbTable_Acl_RoleMember::MEMBER_TYPE_USER); } foreach ($pRoles as $inheritRole) { $roleInherits->insert($lastInsertId, $inheritRole); } return $this->responseSuccess(); } return $this->responseFailure('Failed saving informations', 'This Rolename is already in use'); }