| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350 | <?phpnamespace 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);		}	}}?>
 |