/** * get controller select form * @return array */ public function getControllerList() { $db = new ControllerTable(); $where = array('controller_no <> 0'); return $db->getPairs(null, null, 0, $where); }
/** * get update page + update processing * @return ViewModel */ public function editAction() { $this->init(); $err_msg = ''; // check auth by id $id = (int) $this->params()->fromRoute('id', 0); if (!$id) { $success = false; } else { $success = 2 < $this->ctrlLv ? true : false; } // redirect to error page if (!$success) { return $this->redirect()->toRoute('app', array('controller' => 'failed', 'action' => 'forbidden')); } $db = new RoleEntity(); // get update information from db $postRequest = $this->container()->get('postRequest'); if ($postRequest) { $this->container()->clear('postRequest'); $row = get_array_object(json_decode($postRequest, true)); } else { $row = $db->db()->getFetchOne($id); } // if not exist target record $success = false; if (!$row || $row->deleted) { $this->flashMessenger()->addMessage('Target does not exist'); // $this->flashMessenger()->addMessage('指定レコードは存在しません。'); } else { if (!$this->auth()->get('admin') && $this->auth()->get('branch_no') != $row->branch_no) { $this->flashMessenger()->addMessage('Not allowed'); // $this->flashMessenger()->addMessage('許可されていません。'); } else { $success = true; } } if (!$success) { return $this->redirect()->toRoute('app', array('controller' => 'failed', 'action' => 'index')); } $request = $this->getRequest(); $branch_no = $this->auth()->get('branch_no'); if ($this->auth()->get('admin')) { $branch_no = !$request->isPost() ? $row->branch_no : $request->getPost('branch_no'); } $form_opt = array('name' => !$request->isPost() && !$postRequest ? 'edit' : 'faild', 'user_no' => isset($row->user_no) && $row->user_no ? $row->user_no : $request->getPost('user_no'), 'branch_no' => $branch_no, 'role_no' => (int) $id); $form = new RoleForm(); $form->setEditForm($form_opt); $filter = new RoleFilter(); // get update page if (!$request->isPost()) { $form->bind($row); $beforeData = make_before_data($row, 'role_no'); if ($beforeData) { $form->bind($beforeData); } $users = array(); $rows = $db->db()->getRoleUserPairs($id); $users = array_keys($rows); $levels = array(); $ctrlList = $db->db()->getRoleCtrl($id)->toArray(); foreach ($ctrlList as $r) { $levels[gv('controller_no', $r)] = gv('level', $r); } $beforeData = array('before_user_no' => $users, 'before_level' => $levels); } else { // check belonging branch if ($this->auth()->get('branch_no') != $this->params()->fromPost('branch_no') && !$this->auth()->get('admin')) { $this->flashMessenger()->addMessage('Not allowed'); // $this->flashMessenger()->addMessage('許可されていません。'); return $this->redirect()->toRoute('app', array('controller' => 'failed', 'action' => 'index')); } $token_id = $this->container()->get('token_id'); $this->container()->clear('token_id'); $filter->setCreateToken($token_id); $form->setInputFilter($filter->getInputFilter()); $form->setData($request->getPost()); $success = $form->isValid(); if ($success) { $success = check_change_data($request->getPost()); $err_msg = $success ? '' : 'Not cahnged'; // $err_msg = $success ? '' : '変更を確認できません。'; } if ($success) { // update $chg_user = $request->getPost('user_no') != $request->getPost('before_user_no'); $chg_lv = $request->getPost('level') != $request->getPost('before_level'); $chg = array('chg_user' => $chg_user, 'chg_lv' => $chg_lv); $success = $db->updateRecord($this->auth()->get('user_no'), $form->getData(), $chg); } else { // set result to form $data = $form->getInputFilter()->getValues(); $form->bind(get_array_object($data)); } if (false !== $success) { $this->flashMessenger()->addMessage("Success"); // $this->flashMessenger()->addMessage("成功しました。"); return $this->redirect()->toRoute('app', array('controller' => 'role', 'action' => 'list')); } $beforeData = array('before_user_no' => $request->getPost('before_user_no'), 'before_level' => $request->getPost('before_level')); $ctrl = new ControllerTable(); $ctrlList = $ctrl->search(array('deleted <> 1'), array('controller_no' => 'ASC'), null, null); } $token_id = make_token_id(); $this->container()->set('token_id', $token_id); $form->get('token_id')->setAttribute('value', $token_id); $form->get('section_no')->setAttribute('value', ''); $form->get('submit')->setAttribute('value', 'Update'); // $form->get('submit')->setAttribute('value', '更新'); $form->get('reset')->setAttribute('value', 'Reset'); // $form->get('reset')->setAttribute('value', 'リセット'); if (!$this->auth()->get('admin')) { $form->setData(array('branch_no' => $this->auth()->get('branch_no'))); } $values = array('id' => $id, 'action' => 'edit', 'form' => $form, 'admin' => $this->auth()->get('admin'), 'err_msg' => $err_msg, 'ctrlList' => $ctrlList, 'form_level' => $request->getPost('level'), 'beforeData' => $beforeData); $view = new ViewModel($values); $view->setTemplate('/' . VIEW_DIR . '/role/edit.phtml'); return $view; }