예제 #1
0
 public function saveAction()
 {
     $returnJson = array();
     $returnJson['error'] = false;
     $roleModel = new Admin_Model_Role();
     $data = array('role_name' => $_POST['role_name'], 'role_acl_key' => $_POST['role_acl_key']);
     $validate = array('role_name' => array('required' => true, 'alphanumeric', 'roleExists'), 'role_acl_key' => array('required' => true, 'ealphanumeric', 'roleExists'));
     // var_dump($validate);
     if ($_POST['save_type'] == 'update') {
         $data['role_id'] = intval($_POST['role_id']);
         $validate['role_name'][1] = 'roleExistsUpdate';
         $validate['role_acl_key'][1] = 'roleExistsUpdate';
     }
     if ($roleModel->isValidRow($data, $validate)) {
         // узнаём уровень вложенности предка
         $parentId = intval($_POST['role_parent_id']);
         if ($parentId) {
             $result = $roleModel->find(K_Db_Select::create()->fields('role_level,role_name')->where(array('role_id' => $parentId)));
             if (isset($result) && is_array($result) && count($result)) {
                 $roleParent = $result[0]->toArray();
                 $roleParentName = $roleParent['role_name'];
                 $data['role_parent_id'] = $parentId;
                 $data['role_level'] = $roleParent['role_level'] + 1;
             } else {
                 $data['role_level'] = 0;
                 $data['role_parent_id'] = null;
                 $roleParentName = 'Нет предка';
             }
         } else {
             $data['role_level'] = 0;
             $data['role_parent_id'] = null;
             $roleParentName = 'Нет предка';
         }
         if ($_POST['save_type'] == 'add') {
             $role_id = $roleModel->save($data);
             $returnJson['role']['type'] = 'add';
             $returnJson['role']['id'] = $role_id;
         } else {
             if ($_POST['save_type'] == 'update') {
                 $role_id = $roleModel->update($data, array('role_id' => (int) $_POST['role_id']));
                 $returnJson['role']['type'] = 'update';
                 $role_id = intval($_POST['role_id']);
                 $returnJson['role']['id'] = $_POST['role_id'];
             }
         }
         $returnJson['role']['name'] = $data['role_name'];
         $returnJson['role']['role_acl_key'] = $data['role_acl_key'];
         $returnJson['role']['parentid'] = $data['role_parent_id'] == null ? '' : $data['role_parent_id'];
         $returnJson['role']['parentname'] = $roleParentName;
         $returnJson['error'] = false;
         $returnJson['msg'] = "<strong>OK:</strong>Роль удачно сохранена теперь вы можете настроить доступы для неё";
     } else {
         $returnJson['error'] = true;
         $returnJson['msg'] = $roleModel->getErrorsD($this->dictionary);
     }
     $this->putJSON($returnJson);
 }
예제 #2
0
 public function updateAction()
 {
     $roleForm = new Admin_Form_Role();
     $roleForm->setAction('/admin/role/update')->setMethod('post');
     if ($this->_request->isPost()) {
         if ($roleForm->isValid($_POST)) {
             $roleData = $roleForm->getValues();
             $roleModel = new Admin_Model_Role();
             $roleModel->updateRole($roleData['role_id'], $roleData['role_name'], $roleData['description']);
             $this->_redirect('/admin/role/list');
         }
     } else {
         $roleModel = new Admin_Model_Role();
         $id = $this->_request->getParam('id');
         $roleRow = $roleModel->find($id)->current();
         $roleForm->populate($roleRow->toArray());
     }
     $this->view->form = $roleForm;
 }