123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506 |
- <?php
- namespace Home\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 $nav_header;
- // 底部导航
- protected $nav_footer;
- // 用户信息
- protected $user;
- /**
- * [__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->CommonInit();
- // 菜单
- $this->NavInit();
- // 视图初始化
- $this->ViewInit();
- // 站点状态校验
- $this->SiteStateCheck();
- }
- /**
- * [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));
- }
- /**
- * [Is_Login 登录校验]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2017-03-09T11:43:48+0800
- */
- protected function Is_Login()
- {
- if(empty($_SESSION['user']))
- {
- $this->error(L('common_login_invalid'), U('Home/User/LoginInfo'));
- }
- }
- /**
- * [CommonInit 公共数据初始化]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2017-03-09T11:43:48+0800
- */
- private function CommonInit()
- {
- // 用户数据
- if(!empty($_SESSION['user']))
- {
- $this->user = I('session.user');
- }
- }
- /**
- * [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('nav_header', $this->nav_header);
- $this->assign('nav_footer', $this->nav_footer);
- // 当前页面选择导航状态
- $nav_pid = 0;
- $nav_id = 0;
- foreach($this->nav_header as $v)
- {
- if(I('viewid') == $v['id'])
- {
- $nav_id = $v['id'];
- }
- if(!empty($v['item']))
- {
- foreach($v['item'] as $vs)
- {
- if(I('viewid') == $vs['id'])
- {
- $nav_pid = $v['id'];
- $nav_id = $vs['id'];
- }
- }
- }
- }
- $this->assign('nav_pid', $nav_pid);
- $this->assign('nav_id', $nav_id);
- // 图片host地址
- $this->assign('image_host', C('IMAGE_HOST'));
- // 标题
- $this->assign('home_seo_site_title', MyC('home_seo_site_title'));
- // 页面最大宽度
- $max_width = MyC('home_content_max_width', 0, true);
- $max_width_style = ($max_width == 0) ? '' : 'max-width:'.$max_width.'px;';
- $this->assign('max_width_style', $max_width_style);
- // 用户数据
- $this->assign('user', $this->user);
- // 用户中心菜单
- $this->assign('user_left_menu', L('user_left_menu'));
- // 用户顶部菜单
- $this->assign('user_nav_menu', L('user_nav_menu'));
- }
- /**
- * [NavInit 导航初始化]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2016-12-19T22:41:20+0800
- */
- private function NavInit()
- {
- // 读取缓存数据
- $this->nav_header = S(C('cache_common_home_nav_header_key'));
- $this->nav_footer = S(C('cache_common_home_nav_footer_key'));
- // 导航模型
- $m = M('Navigation');
- $field = array('id', 'pid', 'name', 'url', 'value', 'data_type', 'is_new_window_open');
- // 缓存没数据则从数据库重新读取,顶部菜单
- if(empty($this->nav_header))
- {
- $this->nav_header = NavDataDealWith($m->field($field)->where(array('nav_type'=>'header', 'is_show'=>1, 'pid'=>0))->order('sort')->select());
- if(!empty($this->nav_header))
- {
- foreach($this->nav_header as $k=>$v)
- {
- $this->nav_header[$k]['item'] = NavDataDealWith($m->field($field)->where(array('nav_type'=>'header', 'is_show'=>1, 'pid'=>$v['id']))->order('sort')->select());
- }
- }
- S(C('cache_common_home_nav_header_key'), $this->nav_header);
- }
- // 底部导航
- if(empty($this->nav_footer))
- {
- $this->nav_footer = NavDataDealWith($m->field($field)->where(array('nav_type'=>'footer', 'is_show'=>1))->order('sort')->select());
- S(C('cache_common_home_nav_footer_key'), $this->nav_footer);
- }
- }
- /**
- * [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;
- }
- /**
- * [GetLayoutList 获取布局-模块列表]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2017-02-22T10:15:40+0800
- * @param [string] $type [布局类型(home, channel, detail)]
- * @return [array] [布局+模块数据]
- */
- protected function GetLayoutList($type = 'home')
- {
- // 布局+模块列表
- $data = M('Layout')->field(array('id', 'value'))->where(array('is_enable'=>1, 'type'=>$type))->order('sort asc, id desc')->select();
- if(!empty($data))
- {
- // 布局模块处理驱动
- $lay = \My\LayoutModule::SetInstance();
- // 开始处理布局数据
- foreach($data as $k=>$v)
- {
- // 模块
- $item = M('LayoutModule')->where(array('layout_id'=>$v['id']))->select();
- if(!empty($item))
- {
- foreach($item as $ik=>$iv)
- {
- // 获取文章数据
- $article = LayoutArticleList($lay->GetLayoutMouleWhere($iv), $iv);
- // 模块数据生成
- $fun = GetViewTitleStyleFun($iv['title_style']);
- if(method_exists($lay, $fun))
- {
- $html = $lay->$fun($article, $iv);
- $iv = $lay->GetRules();
- } else {
- $html = '';
- }
- // 重新赋值
- $item[$ik] = $html;
- // 模板赋值
- $this->assign('data_'.$iv['id'], $article);
- $this->assign('rules_'.$iv['id'], $iv);
- }
- }
- $data[$k]['item'] = $item;
- }
- }
- return $data;
- }
- /**
- * [GetBrowserSeoTitle 获取浏览器seo标题]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2017-02-25T14:21:21+0800
- * @param [string] $title [标题]
- * @param [int] $type [页面类型 0, 1, 2]
- * @return [string] [浏览器seo标题]
- */
- protected function GetBrowserSeoTitle($title, $type)
- {
- switch($type)
- {
- case 0:
- break;
- case 1:
- $site_name = MyC('home_site_name');
- break;
- default:
- $site_name = MyC('home_seo_site_title');
- }
- return empty($title) ? $site_name : $title.' - '.$site_name;
- }
- /**
- * [_empty 空方法操作]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2017-02-25T15:47:50+0800
- * @param [string] $name [方法名称]
- */
- protected function _empty($name)
- {
- $this->assign('msg', L('common_unauthorized_access'));
- $this->assign('is_footer', 0);
- $this->display('/Public/Error');
- }
- /**
- * [SiteStateCheck 站点状态校验]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2017-02-25T21:43:07+0800
- */
- private function SiteStateCheck()
- {
- if(MyC('home_site_state') == 0)
- {
- $this->assign('msg', MyC('home_site_close_reason', L('common_site_maintenance_tips'), true));
- $this->assign('is_footer', 0);
- $this->display('/Public/Error');
- exit;
- }
- }
- /**
- * [CommonIsImaVerify 是否开启图片验证码校验]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2017-03-22T15:48:31+0800
- * @param [array] $verify_param [配置参数]
- * @return [object] [图片验证码类对象]
- */
- protected function CommonIsImaVerify($verify_param)
- {
- if(MyC('home_img_verify_state') == 1)
- {
- if(empty($_POST['verify']))
- {
- $this->ajaxReturn(L('common_param_error'), -10);
- }
- $verify = new \My\Verify($verify_param);
- if(!$verify->CheckExpire())
- {
- $this->ajaxReturn(L('common_verify_expire'), -11);
- }
- if(!$verify->CheckCorrect(I('verify')))
- {
- $this->ajaxReturn(L('common_verify_error'), -12);
- }
- return $verify;
- }
- }
- /**
- * [CommonVerifyEntry 验证码显示]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2017-03-05T15:10:21+0800
- * @param [string] $type [验证码类型]
- */
- protected function CommonVerifyEntry($type = 'schoolcms')
- {
- $param = array(
- 'width' => 100,
- 'height' => 32,
- 'key_prefix' => $type,
- );
- $verify = new \My\Verify($param);
- $verify->Entry();
- }
- /**
- * [UserLoginRecord 用户登录记录]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2017-03-09T11:37:43+0800
- * @param [int] $user_id [用户id]
- * @return [boolean] [记录成功true, 失败false]
- */
- protected function UserLoginRecord($user_id = 0)
- {
- if(!empty($user_id))
- {
- $field = array('id', 'mobile', 'email', 'nickname', 'gender', 'signature', 'describe', 'birthday', 'add_time', 'upd_time');
- $user = M('User')->field($field)->find($user_id);
- if(!empty($user))
- {
- // 基础数据处理
- $user['add_time_text'] = date('Y-m-d H:i:s', $user['add_time']);
- $user['upd_time_text'] = date('Y-m-d H:i:s', $user['upd_time']);
- $user['gender_text'] = L('common_gender_list')[$user['gender']]['name'];
- $user['birthday_text'] = empty($user['birthday']) ? '' : date('Y-m-d', $user['birthday']);
- $user['mobile_security']= empty($user['mobile']) ? '' : substr($user['mobile'], 0, 3).'***'.substr($user['mobile'], -3);
- $user['email_security'] = empty($user['email']) ? '' : substr($user['email'], 0, 3).'***'.substr($user['email'], -3);
- // 存储session
- $_SESSION['user'] = $user;
- return !empty($_SESSION['user']);
- }
- }
- return false;
- }
- protected function http($url, $method = 'GET', $postfields = null, $headers = array(), $debug = false) {
- $ci = curl_init();
- /* Curl settings */
- curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
- curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);
- curl_setopt($ci, CURLOPT_TIMEOUT, 30);
- curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
-
- switch ($method) {
- case 'POST':
- curl_setopt($ci, CURLOPT_POST, true);
- if (!empty($postfields)) {
- curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
- $this->postdata = $postfields;
- }
- break;
- }
- curl_setopt($ci, CURLOPT_URL, $url);
- curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
- curl_setopt($ci, CURLINFO_HEADER_OUT, true);
-
- $response = curl_exec($ci);
- $http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
-
- if ($debug) {
- echo '=====$header=====' . "\r\n";
- print_r($headers);
- echo "=====post data======\r\n";
- var_dump($postfields);
-
- echo '=====info=====' . "\r\n";
- print_r(curl_getinfo($ci));
-
- echo '=====$response=====' . "\r\n";
- print_r($response);
- }
- curl_close($ci);
- return array($http_code, $response);
- }
- }
|