Example #1
0
 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;
     }
 }
Example #2
0
 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));
 }