public function updateAction() { $userForm = new Admin_Form_Users(); $userForm->setAction('/admin/users/update')->setMethod('post'); $userForm->disableUsernameInput(); $userForm->disableRequiredOnPassword(); if ($this->_request->isPost()) { // get params from $_POST $id = $this->_request->getParam('user_id'); $isPasswordChanged = $this->_request->getParam('isPasswordChanged'); $roles = $this->_request->getParam('roles'); if ($userForm->isValid($_POST)) { $userData = $userForm->getValues(); $userModel = new Admin_Model_Users(); $userModel->updateUser($userData['user_id'], $userData['newUsername'], $userData['password'], $isPasswordChanged); $roleModel = new Admin_Model_Role(); $roleIDs = $roleModel->getRoleIDsFromRoleIDIsCheckedMap($roles); $userModel->updateRolesOfUser($roleIDs, $id); return $this->_redirect('/admin/users/list'); } } else { // get userID from link you clicked $id = $this->_request->getParam('id'); } // populate the fields we need $userModel = new Admin_Model_Users(); $userRow = $userModel->find($id)->current(); // populate form $userForm->getElement('user_id')->setValue($userRow['user_id']); $userForm->getElement('newUsername')->setValue($userRow['username']); // add some needed to form $userForm->addIsPasswordChangedCheckbox(); $userForm->addRoleCheckboxes($id); $this->view->form = $userForm; }
public function getrolelistAction() { $data = array(); $role = new Admin_Model_Role(); $data = $role->getList(); echo Zend_Json::encode($data); exit; }
public function init() { $obj = new Application_Model_DbTable_User(); $primaryKey = $obj->getPrimaryKey(); $this->setMethod('post'); $this->setEnctype('multipart/form-data'); $this->setAttrib('iduser', $primaryKey); $this->setAction('/admin/usuarios/edit'); $e = new Zend_Form_Element_Hidden($primaryKey); $this->addElement($e); $objType = new Admin_Model_Role(); $e = new Zend_Form_Element_Select('idrol'); $e->setMultiOptions($objType->getRoleAll()); $this->addElement($e); $e = new Zend_Form_Element_Text('email'); $e->setAttrib('class', 'inpt-medium'); $e->setAttrib('placeholder', 'Correo'); $this->addElement($e); $e = new Zend_Form_Element_Text('login'); $e->setAttrib('class', 'inpt-medium'); $e->setAttrib('placeholder', 'usuario'); $this->addElement($e); $e = new Zend_Form_Element_Text('name'); $e->setAttrib('class', 'inpt-medium'); $e->setAttrib('placeholder', 'nombre'); $this->addElement($e); $e = new Zend_Form_Element_Text('apepat'); $e->setAttrib('class', 'inpt-medium'); $e->setAttrib('placeholder', 'Apellido Paterno'); $this->addElement($e); $e = new Zend_Form_Element_Text('apemat'); $e->setAttrib('class', 'inpt-medium'); $e->setAttrib('placeholder', 'Apellido Materno'); $this->addElement($e); $e = new Zend_Form_Element_Submit('Guardar'); $this->addElement($e); $e = new Zend_Form_Element_Checkbox('state'); $e->setValue(true); $this->addElement($e); $e = new Zend_Form_Element_Password('confirmone'); $e->setRequired(false); $e->setAttrib('class', 'inpt-medium'); $e->setAttrib('placeholder', 'Contraseña'); $this->addElement($e); $e = new Zend_Form_Element_Password('confirmtwo'); $e->setRequired(false); $e->setAttrib('class', 'inpt-medium'); $e->setAttrib('placeholder', 'Repetir Contraseña'); $this->addElement($e); foreach ($this->getElements() as $element) { $element->removeDecorator('Label'); $element->removeDecorator('DtDdWrapper'); $element->removeDecorator('HtmlTag'); } }
public function listAction() { $roleModel = new Admin_Model_Role(); $roleArray = $roleModel->getRoleArray(); if (count($roleArray) > 0) { $paginator = Zend_Paginator::factory($roleArray); $page = $this->_request->getParam('page', 1); $paginator->setItemCountPerPage(5); $paginator->setCurrentPageNumber($page); $this->view->paginator = $paginator; } }
/** * 删除当前角色及下级角色的所有当前用户 * @param number $user_id * @param number $role_id */ public function deleteUserFromRole($user_id, $role_id) { $role = new Admin_Model_Role(); // 检查当前角色是否存在下级角色 $r = $role->fetchAll("parentid = " . $role_id); // 当前角色拥有下级角色 if ($r->count() > 0) { $data = $r->toArray(); foreach ($data as $d) { // 从下级角色中清除当前用户 $this->deleteUserFromRole($user_id, $d['id']); } } // 从当前角色清除用户 $this->delete("role_id = " . $role_id . " and user_id = " . $user_id); }
public function init() { $roleDt = new Application_Model_DbTable_Role(); $primaryKey = $roleDt->getPrimaryKey(); $this->setMethod('post'); $this->setEnctype('multipart/form-data'); $this->setAttrib('idrol', $primaryKey); $this->setAction('/admin/role/edit'); $objType2 = new Admin_Model_Acl(); $objfea = new Admin_Model_AclRole(); $e = new Zend_Form_Element_Hidden($primaryKey); $this->addElement($e); $e = new Zend_Form_Element_MultiCheckbox('idacl'); $e->setMultiOptions($objType2->getGreatAll()); if ($this->_idrol !== null) { $ma = $objfea->getRoleAcl($this->_idrol); $idsgreat = array(); foreach ($ma as $resulta) { $idsgreat[] = $resulta['idacl']; } $e->setValue($idsgreat); $role = new Admin_Model_Role(); $b = $role->getRoleId($this->_idrol); } $this->addElement($e); $e = new Zend_Form_Element_Text('name'); $e->setAttrib('class', 'inpt-medium'); $e->setAttrib('placeholder', 'Nombre'); $this->addElement($e); $e = new Zend_Form_Element_Checkbox('state'); $e->setValue(true); $this->addElement($e); foreach ($this->getElements() as $element) { $element->removeDecorator('Label'); $element->removeDecorator('DtDdWrapper'); $element->removeDecorator('HtmlTag'); } }
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); }
/** * Update role of user * @param int $newRoles $newRoles has form Array([11] => 1, [12] => 0, ..., [n] => m)) with n is role ID and m is checked/unchecked * @param int $userID * @return bool */ public function updateRolesOfUser($roleIDs, $userID) { // get old roles $oldRoles = $this->getRolesOfUser($userID); // extract old role ID except "customer role ID" $roleModel = new Admin_Model_Role(); $customerRoleID = $roleModel->getCustomerRoleID(); $oldRoleIDs = array(); foreach ($oldRoles as $oldRole) { if ($oldRole['role_id'] != $customerRoleID) { $oldRoleIDs[] = $oldRole['role_id']; } } // assign $roleIDs to $newRoleIDs; $newRoleIDs = $roleIDs; $db = Zend_Db_Table::getDefaultAdapter(); $db->beginTransaction(); try { // following the algorithm, we have oldRoleIDs as A, newRoleIDs as B foreach ($oldRoleIDs as $index => $id) { if (!in_array($id, $newRoleIDs)) { $this->deleteRoleOfUser($id, $userID); unset($oldRoleIDs[$index]); } } foreach ($newRoleIDs as $id) { if (!in_array($id, $oldRoleIDs)) { $this->insertRoleOfUser($id, $userID); } } $db->commit(); return true; } catch (Zend_Exception $e) { $db->rollBack(); return false; } }
public function editmenuAction() { // 返回值数组 $result = array('success' => true, 'info' => '编辑成功'); $request = $this->getRequest()->getParams(); $now = date('Y-m-d H:i:s'); $user_session = new Zend_Session_Namespace('user'); $user = $user_session->user_info['user_id']; $json = json_decode($request['json']); $updated = $json->updated; $inserted = $json->inserted; $deleted = $json->deleted; $menu = new Home_Model_Menu(); $menurole = new Home_Model_Menurole(); if (count($updated) > 0) { foreach ($updated as $val) { if ($menu->fetchAll("id != " . $val->id . " and text = '" . $val->text . "'")->count() > 0) { $result['result'] = false; $result['info'] = '菜单重名'; echo Zend_Json::encode($result); exit; } else { $data = array('parent_id' => $val->parentId, 'text' => $val->text, 'iconCls' => $val->iconCls, 'tooltip' => $val->tooltip, 'handler' => $val->handler, 'url' => $val->url, 'disabled' => $val->disabled, 'params' => $val->params, 'update_time' => $now, 'update_user' => $user); $where = "id = " . $val->id; try { $menu->update($data, $where); } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } } } } if (count($inserted) > 0) { foreach ($inserted as $val) { if ($menu->fetchAll("text = '" . $val->text . "'")->count() > 0) { $result['result'] = false; $result['info'] = '菜单重名'; echo Zend_Json::encode($result); exit; } else { $data = array('parent_id' => $val->parentId, 'text' => $val->text, 'iconCls' => $val->iconCls, 'tooltip' => $val->tooltip, 'handler' => $val->handler, 'url' => $val->url, 'disabled' => $val->disabled, 'params' => $val->params, 'create_time' => $now, 'create_user' => $user, 'update_time' => $now, 'update_user' => $user); try { $menu_id = $menu->insert($data); try { $user_role = new Admin_Model_Role(); $menurole->insert(array('menu_id' => $menu_id, 'role_id' => $user_role->getAdminId())); } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } } } } if (count($deleted) > 0) { foreach ($deleted as $val) { if ($menurole->fetchAll("menu_id = " . $val->id)->count() == 0) { try { $menu->deleteMenuTreeData($val->id); } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } } else { $result['result'] = false; $result['info'] = '角色ID' . $val->id . '已使用,不能删除'; echo Zend_Json::encode($result); exit; } } } echo Zend_Json::encode($result); exit; }
/** * Create checkboxes for updating user * @param int $userID * @return array */ private function _createCheckboxesForUpdatingUser($userID) { $roleCheckboxes = array(); // get role array $roleModel = new Admin_Model_Role(); $roleArray = $roleModel->getRoleArray(); // get customer role ID $customerRoleID = $roleModel->getCustomerRoleID(); // get roles of the user $userModel = new Admin_Model_Users(); $rolesOfUser = $userModel->getRolesOfUser($userID); // extract role_id of $roleOfUser array $roleIDs = array(); foreach ($rolesOfUser as $role) { $roleIDs[] = $role['role_id']; } // create role checkboxes foreach ($roleArray as $index => $role) { if (in_array($role['role_id'], $roleIDs)) { $roleCheckbox = $this->createElement('checkbox', (string) $role['role_id'], array('checked' => 'checked')); } else { $roleCheckbox = $this->createElement('checkbox', (string) $role['role_id'], array()); } // check if the role is customer if ($role['role_id'] == $customerRoleID) { $roleCheckbox->setAttrib('disabled', 'disabled'); } $roleCheckbox->setLabel($role['role_name']); $this->_customizeRoleCheckBox($roleCheckbox); $roleCheckboxes[] = $roleCheckbox; } return $roleCheckboxes; }
/** * @abstract 添加文件编码 * @return null */ public function saveAction() { // 返回值数组 $result = array('success' => true, 'result' => true, 'info' => '申请成功'); $request = $this->getRequest()->getParams(); $now = date('Y-m-d H:i:s'); $user_session = new Zend_Session_Namespace('user'); $user = $user_session->user_info['employee_id']; $val = (object) $request; $code = new Dcc_Model_Code(); $type = new Dcc_Model_Type(); $db = $code->getAdapter(); if ($val->id) { // 编辑 if (isset($val->code) && $val->code) { $auto_code = $val->code; // 检查是否文件号已经存在 if ($code->fetchAll("id != " . $val->id . " and code = '" . $auto_code . "'")->count() > 0) { $result['result'] = false; $result['info'] = "文件编码“" . $val->code . "”已经存在"; echo Zend_Json::encode($result); exit; } } else { $auto_code = ""; } $data = array('code' => $auto_code, 'active' => isset($val->active) ? 1 : 0, 'project_no' => $val->project_no, 'project_standard_no' => isset($val->project_standard_no) ? $val->project_standard_no : "", 'description' => $val->description, 'remark' => $val->remark, 'update_time' => $now, 'update_user' => $user); try { $code->update($data, "id = " . $val->id); $result['info'] = "修改成功"; } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } } else { // 检查是自动生成编码还是手动 $typedata = $db->query("select t2.automethod from oa_doc_type t1 inner join oa_doc_auto t2 on t1.autotype=t2.id where t1.state = 1 and t1.id = " . $val->prefix)->fetchObject(); if ($typedata && $typedata->automethod != 'H' && $typedata->automethod != 'A' && $typedata->automethod != 'F') { $auto_code = $this->getCode($val->prefix, $val->project_no); if (!$auto_code) { $result['result'] = false; $result['info'] = "文件编码获取失败"; echo Zend_Json::encode($result); exit; } } else { if ($typedata && $typedata->automethod == 'A' && (!isset($val->code) || !$val->code)) { $auto_code = ""; // 需发邮件 $mailId = ''; $type = "文件编码申请"; $subject = "文件号分配"; // $to = 文件管理员 $employee = new Hra_Model_Employee(); $member = new Admin_Model_Member(); $role = new Admin_Model_Role(); $toArr = array(); $roleArr = $role->getRoleIdByName('文件管理员'); $roleData = array(); if ($roleArr['role_id']) { $roleData = $member->getMember($roleArr['role_id']); } foreach ($roleData as $r) { if ($r['user_id'] == 1) { continue; } $toArr[] = $r['email']; } $to = implode(',', $toArr); if ($to) { $emp = $employee->getInfoById($user); $userName = ''; if (count($emp) > 0) { $userName = $emp[0]['cname']; } $user_name = $user_session->user_info['user_name']; $content = "<p>你有一个文件编码申请需要分配文件号</p>"; $content .= "<p><b>文件描述:</b>" . $val->description . "</p><p><b>备注:</b>" . $val->remark . "</p><p><b>申请人:</b>" . $user_name . "</p><p><b>申请时间:</b>" . $now . "</p><p>请登录系统查看详情!</p>"; $mailData = array('type' => $type, 'subject' => $subject, 'to' => $to, 'content' => $content, 'send_time' => $now, 'add_date' => $now); $mail = new Application_Model_Log_Mail(); try { $mailId = $mail->insert($mailData); } catch (Exception $e) { } if ($mailId) { $mail->send($mailId); } } } else { if ($typedata && $typedata->automethod == 'F' && (!isset($val->code) || !$val->code)) { // 流程 // 获取当前文件类别对应的流程ID $row = $type->getList("id='{$val->prefix}'"); $flow_id = ''; if ($row && count($row) > 0) { $flow_id = $row[0]['apply_flow_id']; } else { $result['info'] = "文件类型未设置审核流程"; echo Zend_Json::encode($result); exit; } // 根据流程ID获取阶段 $flow = new Admin_Model_Flow(); $step = new Admin_Model_Step(); $member = new Admin_Model_Member(); $employee = new Hra_Model_Employee(); $mail = new Application_Model_Log_Mail(); $record = new Dcc_Model_Record(); $review = new Dcc_Model_Review(); $flowRow = $flow->getRow($flow_id); $step_ids = $flowRow['step_ids']; if ($step_ids) { $data = array('prefix' => $val->prefix, 'code' => '', 'state' => 'Reviewing', 'active' => isset($val->active) ? 1 : 0, 'project_no' => $val->project_no, 'project_standard_no' => isset($val->project_standard_no) ? $val->project_standard_no : "", 'description' => $val->description, 'remark' => $val->remark, 'create_time' => $now, 'create_user' => $user, 'update_time' => $now, 'update_user' => $user); try { $id = $code->insert($data); $inserted = true; // 操作记录 $data = array('type' => "code_apply", 'table_name' => "oa_doc_code", 'table_id' => $id, 'handle_user' => $user, 'handle_time' => $now, 'action' => "申请", 'ip' => $_SERVER['REMOTE_ADDR']); $record->insert($data); } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } $stepRows = $step->getListByFlow($step_ids); $state = "Reviewing"; // 把阶段信息插入review记录 $first = true; foreach ($stepRows as $s) { $plan_user = $s['user']; if ($s['dept']) { $tmpUser = array(); $plan_dept = $s['dept']; foreach (explode(',', $plan_dept) as $role) { $tmpRole = $member->getMemberWithNoManager($role); foreach ($tmpRole as $m) { $tmpUser[] = $m['user_id']; } } if (count($tmpUser) == 0 && !$plan_user) { $tmpUser = $member->getUserids("系统管理员"); } if (count($tmpUser) > 0) { $tmpUser = $employee->getAdapter()->query("select group_concat(employee_id) as users from oa_user where active = 1 and id in ( " . implode(',', $tmpUser) . ")")->fetchObject(); $users = $tmpUser->users; } if ($users) { if ($plan_user) { $plan_user .= ","; } $plan_user .= $users; } } $repeatUser = explode(',', $plan_user); $repeatUser = array_unique($repeatUser); $plan_user = implode(',', $repeatUser); $reviewData = array('type' => "code_apply", 'file_id' => $id, 'plan_user' => $plan_user, 'method' => $s['method'], 'return' => $s['return'], 'step_name' => $s['step_name'], 'step_ename' => $s['step_ename']); $review->insert($reviewData); // 邮件任务 if ($first) { // 需发邮件 $mailId = ''; $type = "文件编码申请"; $subject = "文件编码申请审核"; $user_name = $user_session->user_info['user_name']; $to = $employee->getAdapter()->query("select group_concat(email) as mail_to from oa_employee where id in ( " . $plan_user . ")")->fetchObject(); $content = "<p>你有一个文件编码申请需要审核</p>"; $content .= "<p><b>文件描述:</b>" . $val->description . "</p><p><b>备注:</b>" . $val->remark . "</p><p><b>申请人:</b>" . $user_name . "</p><p><b>申请时间:</b>" . $now . "</p><p>请登录系统查看详情!</p>"; $mailData = array('type' => $type, 'subject' => $subject, 'to' => $to->mail_to, 'content' => $content, 'send_time' => $now, 'add_date' => $now); $mailId = $mail->insert($mailData); if ($mailId) { $mail->send($mailId); } } $first = false; } $result['info'] = "申请成功,已通知相关人员审核"; echo Zend_Json::encode($result); exit; } } else { $auto_code = $val->code; // 检查是否文件号已经存在 if ($auto_code && $code->fetchAll("code = '" . $auto_code . "'")->count() > 0) { $result['result'] = false; $result['info'] = "文件编码“" . $val->code . "”已经存在"; echo Zend_Json::encode($result); exit; } } } } $auto_code = strtoupper($auto_code); $data = array('prefix' => $val->prefix, 'code' => $auto_code, 'state' => isset($state) ? 'Reviewing' : 'Active', 'active' => isset($val->active) ? 1 : 0, 'project_no' => $val->project_no, 'project_standard_no' => isset($val->project_standard_no) ? $val->project_standard_no : "", 'description' => $val->description, 'remark' => $val->remark, 'create_time' => $now, 'create_user' => $user, 'update_time' => $now, 'update_user' => $user); try { $code->insert($data); if ($auto_code) { $result['info'] = "申请成功,文件编码:{$auto_code}"; } else { $result['info'] = "申请成功,请通知管理员分配文件编码"; } } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } } echo Zend_Json::encode($result); exit; }