public function actionManageRole() { $oper = $_POST['oper']; $role_id = empty($_POST['role_id']) ? $_POST['id'] : $_POST['role_id']; $role_name = $_POST['role_name']; $role_state = $_POST['role_state']; if ('Yes' == $role_state) { $role_state = 0; } else { $role_state = 1; } switch ($oper) { case 'add': $vcosAdminRole = new VcosAdminRole(); $vcosAdminRole->role_name = $role_name; $vcosAdminRole->role_state = $role_state; $vcosAdminRole->save(); break; case 'edit': $vcosAdminRole = VcosAdminRole::model()->findByPk($role_id); $vcosAdminRole->role_name = $role_name; $vcosAdminRole->role_state = $role_state; $vcosAdminRole->update(); break; case 'del': $vcosAdminRole = VcosAdminRole::model()->findByPk($role_id); $vcosAdminRole->delete(); break; default: break; } }
public function actionRole_edit() { $this->setauth(); //检查有无权限 $edit_id = isset($_POST['edit_id']) ? $_POST['edit_id'] : FALSE; $edit_id2 = isset($_POST['edit_id2']) ? $_POST['edit_id2'] : FALSE; $id = $edit_id ? $edit_id : $edit_id2; $role = VcosAdminRole::model()->findByPk($id); $permission = $role['permission_menu']; $permission = json_decode($permission, true); $admin_id = Yii::app()->user->id; if ($_POST) { if (!$edit_id) { if ($_POST['role'] == '超级管理员') { die(Helper::show_message(yii::t('vcos', '你不能命名为超级管理员!'), Yii::app()->createUrl("Auth/role"))); } $sql = "SELECT * FROM vcos_admin_role WHERE role_name = '{$_POST['role']}' AND role_id NOT IN ({$_POST['role_id']})"; $result = Yii::app()->m_db->createCommand($sql)->queryAll(); if ($result) { die(Helper::show_message(yii::t('vcos', '此分组名已被使用。'))); } $a = explode(',', $_POST['hidden']); $num = count($a); unset($a[$num - 1]); $new_permission = array(); foreach ($a as $row) { $sql = "SELECT a.menu_id AS amenu_id ,a.parent_menu_id AS aparent_menu_id , b.menu_id AS bmenu_id ,b.parent_menu_id AS bparent_menu_id FROM vcos_permission_menux a, vcos_permission_menux b WHERE a.parent_menu_id = b.menu_id AND a.menu_id = {$row}"; $b = Yii::app()->m_db->createCommand($sql)->queryRow(); //跟住自id查找父目录的id, if ($b['bparent_menu_id'] != '0') { //当父目录不为顶级目录时继续查找父目录 $sql = "SELECT a.menu_id AS amenu_id ,a.parent_menu_id AS aparent_menu_id , b.menu_id AS bmenu_id ,b.parent_menu_id AS bparent_menu_id FROM vcos_permission_menux a, vcos_permission_menux b WHERE a.parent_menu_id = b.menu_id AND a.menu_id = {$b['bmenu_id']}"; $c = Yii::app()->m_db->createCommand($sql)->queryRow(); $new_permission[$c['bmenu_id']][$c['amenu_id']][] = $row; //封装第三级目录数组 } else { $new_permission[$b['bmenu_id']][] = $row; //封装第二级目录数组 } } $n_permission = Yii::app()->session[$admin_id . 'test']; unset($n_permission[0]); //var_dump($n_permission);unset(Yii::app()->session[$admin_id.'test']);die; foreach ($n_permission as $key => $row) { if (is_array($row)) { //判断是否是3级目录 foreach ($row as $k => $item) { $n_permission[$key][$k] = array(); //将点击过的权限组封装成空数组 } } else { $n_permission[$key] = array(); } } foreach ($new_permission as $key => $row) { if (is_array($row)) { //判断是否是3级目录 foreach ($row as $k => $item) { $n_permission[$key][$k] = $item; } } else { $n_permission[$key] = $row; } } foreach ($n_permission as $key => $row) { if (is_array($row)) { //判断是否是3级目录 foreach ($row as $k => $item) { if (empty($item)) { unset($permission[$key][$k]); } } } else { if (empty($row)) { unset($permission[$key]); } } } foreach ($new_permission as $key => $row) { if (is_array($row)) { //判断是否是3级目录 foreach ($row as $k => $item) { $permission[$key][$k] = $item; } } else { $permission[$key] = $row; } } if (empty($permission)) { die(Helper::show_message(yii::t('vcos', '该分组不能没有权限!'), Yii::app()->createUrl("Auth/role"))); } $permission = json_encode($permission); $state = isset($_POST['state']) ? $_POST['state'] : '0'; if ($_POST['role'] != '' && $_POST['describe'] != '') { //var_dump($_POST); //判断若hidden值为空,代表打开分类为全部不选中状态, if ($_POST['hidden'] == '' && $_POST['hidden_parent'] != '') { $del_json = $_POST['hidden_parent']; $del_id = explode(',', $del_json); foreach ($del_id as $v) { $reg = "/\"" . $v . "\"\\:\\[(.*?)\\](,?)/"; $permission = preg_replace($reg, "", $permission); } } elseif ($_POST['hidden'] != '' && $_POST['hidden_parent'] != '') { //查询子类的父级键名,将hidden_parent中去除该父级键名 $hidden = trim($_POST['hidden'], ','); $hidden_parent = $_POST['hidden_parent']; $hidden_parent = explode(',', $hidden_parent); $sql = "SELECT parent_menu_id FROM `vcos_permission_menux` WHERE menu_id in ({$hidden}) GROUP BY parent_menu_id"; //var_dump($sql);exit; $result = Yii::app()->m_db->createCommand($sql)->queryAll(); foreach ($result as $val) { if (in_array($val['parent_menu_id'], $hidden_parent)) { unset($hidden_parent[array_search($val['parent_menu_id'], $hidden_parent)]); } } foreach ($hidden_parent as $v) { $reg = "/\"" . $v . "\"\\:\\[(.*?)\\](,?)/"; $permission = preg_replace($reg, "", $permission); } } //将最外层{...,}的最后一个逗号去除,有时有有时无 $permission = substr($permission, 1, -1); $permission = trim($permission, ","); $permission = '{' . $permission . '}'; //var_dump($permission); //exit; $role->role_id = $id; $role->role_name = $_POST['role']; $role->role_desc = $_POST['describe']; $role->permission_menu = $permission; $role->role_state = $state; $count = $role->update('role_id', 'role_name', 'role_desc', 'permission_menu', 'role_state'); if ($count > 0) { unset(Yii::app()->session[$admin_id . 'test']); Helper::show_message(yii::t('vcos', '修改成功。'), Yii::app()->createUrl("Auth/role")); } else { unset(Yii::app()->session[$admin_id . 'test']); Helper::show_message(yii::t('vcos', '修改失败。'), Yii::app()->createUrl("Auth/role")); } } else { unset(Yii::app()->session[$admin_id . 'test']); Helper::show_message(yii::t('vcos', '修改失败。'), Yii::app()->createUrl("Auth/role")); } } } $permission_click = VcosPermissionClick::model()->findAll(); $this->render('role_edit', array('role' => $role, 'permission_click' => $permission_click, 'id' => $id)); }