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); }
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; }