コード例 #1
0
 /**
  * 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');
 }