123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350 |
- <?php
- namespace Admin\Controller;
- use Think\Controller;
- /**
- * 管理员
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2016-12-01T21:51:08+0800
- */
- class CommonController extends Controller
- {
- // 用户
- protected $user;
- // 权限
- protected $power;
- // 左边权限菜单
- protected $left_menu;
- /**
- * [__construt 构造方法]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2016-12-03T12:29:53+0800
- * @param [string] $msg [提示信息]
- * @param [int] $code [状态码]
- * @param [mixed] $data [数据]
- */
- protected function _initialize()
- {
- // 配置信息初始化
- MyConfigInit();
-
- // 权限
- $this->PowerInit();
- // 视图初始化
- $this->ViewInit();
- }
- /**
- * [ajaxReturn 重写ajax返回方法]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2016-12-07T22:03:40+0800
- * @param [string] $msg [提示信息]
- * @param [int] $code [状态码]
- * @param [mixed] $data [数据]
- * @return [json] [json数据]
- */
- protected function ajaxReturn($msg = '', $code = 0, $data = '')
- {
- // ajax的时候,success和error错误由当前方法接收
- if(IS_AJAX)
- {
- if(isset($msg['info']))
- {
- // success模式下code=0, error模式下code参数-1
- $result = array('msg'=>$msg['info'], 'code'=>-1, 'data'=>'');
- }
- }
-
- // 默认情况下,手动调用当前方法
- if(empty($result))
- {
- $result = array('msg'=>$msg, 'code'=>$code, 'data'=>$data);
- }
- // 错误情况下,防止提示信息为空
- if($result['code'] != 0 && empty($result['msg']))
- {
- $result['msg'] = L('common_operation_error');
- }
- exit(json_encode($result));
- }
- /*
- * 设置分导航参数
- * @param object $page 导航连接对象
- * @param string|array $config 参数设置
- */
- function page_config($page, $config = "PAGE_CONFIG"){
- if(!is_object($page)) return $page;
- if(method_exists($page,'setConfig')){
- $page ->lastSuffix =false;
- if(is_string($config)) $config = C($config);
- if(is_array($config)){
- foreach ($config as $key => $val){
- $page->setConfig($key,$val);
- }
- }
- }
- return $page;
- }
- /**
- * [Is_Login 登录校验]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2016-12-03T12:42:35+0800
- */
- protected function Is_Login()
- {
- if(empty($_SESSION['admin']))
- {
- $this->error(L('common_login_invalid'), U('Admin/Admin/LoginInfo'));
- } else {
- // 用户
- $this->admin = I('session.admin');
- }
- }
- /**
- * [ViewInit 视图初始化]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2016-12-03T12:30:06+0800
- */
- public function ViewInit()
- {
- // 主题
- $default_theme = C('DEFAULT_THEME');
- $this->assign('default_theme', $default_theme);
- // 控制器静态文件状态css,js
- $module_css = MODULE_NAME.DS.$default_theme.DS.'Css'.DS.CONTROLLER_NAME.'.css';
- $this->assign('module_css', file_exists(ROOT_PATH.'Public'.DS.$module_css) ? $module_css : '');
- $module_js = MODULE_NAME.DS.$default_theme.DS.'Js'.DS.CONTROLLER_NAME.'.js';
- $this->assign('module_js', file_exists(ROOT_PATH.'Public'.DS.$module_js) ? $module_js : '');
- // 权限菜单
- $this->assign('left_menu', $this->left_menu);
- // 用户
- $this->assign('admin', $this->admin);
- // 图片host地址
- $this->assign('image_host', C('IMAGE_HOST'));
- }
- /**
- * [PowerInit 权限初始化]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2016-12-19T22:41:20+0800
- */
- private function PowerInit()
- {
- // 基础参数
- $admin_id = isset($_SESSION['admin']['id']) ? intval($_SESSION['admin']['id']) : 0;
- $role_id = isset($_SESSION['admin']['role_id']) ? intval($_SESSION['admin']['role_id']) : 0;
- // 读取缓存数据
- $this->left_menu = S(C('cache_admin_left_menu_key').$admin_id);
- $this->power = S(C('cache_admin_power_key').$admin_id);
- // 缓存没数据则从数据库重新读取
- if(($role_id > 0 || $admin_id == 1) && empty($this->left_menu))
- {
- // 获取一级数据
- $p = M('Power');
- if($admin_id == 1)
- {
- $field = array('id', 'name', 'control', 'action', 'is_show', 'icon');
- $this->left_menu = $p->where(array('pid' => 0))->field($field)->order('sort')->select();
- } else {
- $field = array('p.id', 'p.name', 'p.control', 'p.action', 'p.is_show', 'p.icon');
- $this->left_menu = $p->alias('p')->join('__ROLE_POWER__ AS rp ON p.id = rp.power_id')->where(array('rp.role_id' => $role_id, 'p.pid' => 0))->field($field)->order('p.sort')->select();
- }
-
- // 有数据,则处理子级数据
- if(!empty($this->left_menu))
- {
- foreach($this->left_menu as $k=>$v)
- {
- // 权限
- $this->power[$v['id']] = strtolower($v['control'].'_'.$v['action']);
- // 获取子权限
- if($admin_id == 1)
- {
- $item = $p->where(array('pid' => $v['id']))->field($field)->order('sort')->select();
- } else {
- $item = $p->alias('p')->join('__ROLE_POWER__ AS rp ON p.id = rp.power_id')->where(array('rp.role_id' => $role_id, 'p.pid' => $v['id']))->field($field)->order('p.sort')->select();
- }
- // 权限列表
- if(!empty($item))
- {
- foreach($item as $ks=>$vs)
- {
- // 权限
- $this->power[$vs['id']] = strtolower($vs['control'].'_'.$vs['action']);
- // 是否显示视图
- if($vs['is_show'] == 0)
- {
- unset($item[$ks]);
- }
- }
- }
- // 是否显示视图
- if($v['is_show'] == 1)
- {
- // 子级
- $this->left_menu[$k]['item'] = $item;
- } else {
- unset($this->left_menu[$k]);
- }
- }
- }
- S(C('cache_admin_left_menu_key').$admin_id, $this->left_menu);
- S(C('cache_admin_power_key').$admin_id, $this->power);
- }
- }
- /**
- * [Is_Power 是否有权限]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2016-12-20T19:18:29+0800
- */
- protected function Is_Power()
- {
- // 不需要校验权限的方法
- $unwanted_power = array('getnodeson');
- if(!in_array(strtolower(ACTION_NAME), $unwanted_power))
- {
- // 角色组权限列表校验
- if(!in_array(strtolower(CONTROLLER_NAME.'_'.ACTION_NAME), $this->power))
- {
- $this->error(L('common_there_is_no_power'));
- }
- }
- }
- /**
- * [GetClassList 获取班级列表,二级]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2016-12-30T13:26:00+0800
- * @return [array] [班级列表]
- */
- protected function GetClassList()
- {
- $m = M('Class');
- $data = $m->field(array('id', 'name'))->where(array('is_enable'=>1, 'pid'=>0))->select();
- if(!empty($data))
- {
- foreach($data as $k=>$v)
- {
- $data[$k]['item'] = $m->field(array('id', 'name'))->where(array('is_enable'=>1, 'pid'=>$v['id']))->select();
- }
- }
- return $data;
- }
- /**
- * [GetRoomList 获取教室列表,二级]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2016-12-30T13:26:00+0800
- * @return [array] [班级列表]
- */
- protected function GetRoomList()
- {
- $m = M('Room');
- $data = $m->field(array('id', 'name'))->where(array('is_enable'=>1, 'pid'=>0))->select();
- if(!empty($data))
- {
- foreach($data as $k=>$v)
- {
- $data[$k]['item'] = $m->field(array('id', 'name'))->where(array('is_enable'=>1, 'pid'=>$v['id']))->select();
- }
- }
- return $data;
- }
- /**
- * [MyConfigSave 配置数据保存]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2017-01-02T23:08:19+0800
- */
- protected function MyConfigSave()
- {
- // 是否ajax请求
- if(!IS_AJAX)
- {
- $this->error(L('common_unauthorized_access'));
- }
- // 参数校验
- if(empty($_POST))
- {
- $this->error(L('common_param_error'));
- }
- // 循环保存数据
- $success = 0;
- $c = M('Config');
- // 不实例化的字段
- $no_all = array(
- 'home_footer_info',
- 'home_site_close_reason',
- 'home_email_user_reg',
- 'home_email_user_forget_pwd',
- 'home_email_user_student_binding',
- 'home_email_user_email_binding',
- );
- // 开始更新数据
- foreach($_POST as $k=>$v)
- {
- if(!in_array($k, $no_all))
- {
- $v = I($k);
- }
- if($c->where(array('only_tag'=>$k))->save(array('value'=>$v, 'upd_time'=>time())))
- {
- $success++;
- }
- }
- if($success > 0)
- {
- // 配置信息更新
- MyConfigInit(1);
- $this->ajaxReturn(L('common_operation_edit_success').'['.$success.']');
- } else {
- $this->ajaxReturn(L('common_operation_edit_error'), -100);
- }
- }
- }
- ?>
|