| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 | 
							- <?php
 
- // +----------------------------------------------------------------------
 
- // | ThinkCMF [ WE CAN DO IT MORE SIMPLE ]
 
- // +----------------------------------------------------------------------
 
- // | Copyright (c) 2013-2018 http://www.thinkcmf.com All rights reserved.
 
- // +----------------------------------------------------------------------
 
- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
 
- // +---------------------------------------------------------------------
 
- // | Author: Dean <zxxjjforever@163.com>
 
- // +----------------------------------------------------------------------
 
- namespace cmf\controller;
 
- use think\Db;
 
- use admin\admin\model\ThemeModel;
 
- use think\View;
 
- class HomeBaseController extends BaseController
 
- {
 
-     public function _initialize()
 
-     {
 
-         // 监听home_init
 
-         hook('home_init');
 
-         parent::_initialize();
 
-         $siteInfo = cmf_get_site_info();
 
-         View::share('site_info', $siteInfo);
 
-     }
 
-     public function _initializeView()
 
-     {
 
-         $cmfThemePath    = config('cmf_theme_path');
 
-         $cmfDefaultTheme = cmf_get_current_theme();
 
-         $themePath = "{$cmfThemePath}{$cmfDefaultTheme}";
 
-         $root = cmf_get_root();
 
-         //使cdn设置生效
 
-         $cdnSettings = cmf_get_option('cdn_settings');
 
-         if (empty($cdnSettings['cdn_static_root'])) {
 
-             $viewReplaceStr = [
 
-                 '__ROOT__'     => $root,
 
-                 '__TMPL__'     => "{$root}/{$themePath}",
 
-                 '__STATIC__'   => "{$root}/static",
 
-                 '__WEB_ROOT__' => $root
 
-             ];
 
-         } else {
 
-             $cdnStaticRoot  = rtrim($cdnSettings['cdn_static_root'], '/');
 
-             $viewReplaceStr = [
 
-                 '__ROOT__'     => $root,
 
-                 '__TMPL__'     => "{$cdnStaticRoot}/{$themePath}",
 
-                 '__STATIC__'   => "{$cdnStaticRoot}/static",
 
-                 '__WEB_ROOT__' => $cdnStaticRoot
 
-             ];
 
-         }
 
-         $viewReplaceStr = array_merge(config('view_replace_str'), $viewReplaceStr);
 
-         config('template.view_base', "{$themePath}/");
 
-         config('view_replace_str', $viewReplaceStr);
 
-         $themeErrorTmpl = "{$themePath}/error.html";
 
-         if (file_exists_case($themeErrorTmpl)) {
 
-             config('dispatch_error_tmpl', $themeErrorTmpl);
 
-         }
 
-         $themeSuccessTmpl = "{$themePath}/success.html";
 
-         if (file_exists_case($themeSuccessTmpl)) {
 
-             config('dispatch_success_tmpl', $themeSuccessTmpl);
 
-         }
 
-     }
 
-     /**
 
-      * 加载模板输出
 
-      * @access protected
 
-      * @param string $template 模板文件名
 
-      * @param array $vars 模板输出变量
 
-      * @param array $replace 模板替换
 
-      * @param array $config 模板参数
 
-      * @return mixed
 
-      */
 
-     protected function fetch($template = '', $vars = [], $replace = [], $config = [])
 
-     {
 
-         $template = $this->parseTemplate($template);
 
-         $more     = $this->getThemeFileMore($template);
 
-         $this->assign('theme_vars', $more['vars']);
 
-         $this->assign('theme_widgets', $more['widgets']);
 
-         return parent::fetch($template, $vars, $replace, $config);
 
-     }
 
-     /**
 
-      * 自动定位模板文件
 
-      * @access private
 
-      * @param string $template 模板文件规则
 
-      * @return string
 
-      */
 
-     private function parseTemplate($template)
 
-     {
 
-         // 分析模板文件规则
 
-         $request = $this->request;
 
-         // 获取视图根目录
 
-         if (strpos($template, '@')) {
 
-             // 跨模块调用
 
-             list($module, $template) = explode('@', $template);
 
-         }
 
-         $viewBase = config('template.view_base');
 
-         if ($viewBase) {
 
-             // 基础视图目录
 
-             $module = isset($module) ? $module : $request->module();
 
-             $path   = $viewBase . ($module ? $module . DS : '');
 
-         } else {
 
-             $path = isset($module) ? APP_PATH . $module . DS . 'view' . DS : config('template.view_path');
 
-         }
 
-         $depr = config('template.view_depr');
 
-         if (0 !== strpos($template, '/')) {
 
-             $template   = str_replace(['/', ':'], $depr, $template);
 
-             $controller = cmf_parse_name($request->controller());
 
-             if ($controller) {
 
-                 if ('' == $template) {
 
-                     // 如果模板文件名为空 按照默认规则定位
 
-                     $template = str_replace('.', DS, $controller) . $depr . $request->action();
 
-                 } elseif (false === strpos($template, $depr)) {
 
-                     $template = str_replace('.', DS, $controller) . $depr . $template;
 
-                 }
 
-             }
 
-         } else {
 
-             $template = str_replace(['/', ':'], $depr, substr($template, 1));
 
-         }
 
-         return $path . ltrim($template, '/') . '.' . ltrim(config('template.view_suffix'), '.');
 
-     }
 
-     /**
 
-      * 获取模板文件变量
 
-      * @param string $file
 
-      * @param string $theme
 
-      * @return array
 
-      */
 
-     private function getThemeFileMore($file, $theme = "")
 
-     {
 
-         //TODO 增加缓存
 
-         $theme = empty($theme) ? cmf_get_current_theme() : $theme;
 
-         // 调试模式下自动更新模板
 
-         if (APP_DEBUG) {
 
-             $themeModel = new ThemeModel();
 
-             $themeModel->updateTheme($theme);
 
-         }
 
-         $themePath = config('cmf_theme_path');
 
-         $file      = str_replace('\\', '/', $file);
 
-         $file      = str_replace('//', '/', $file);
 
-         $file      = str_replace(['.html', '.php', $themePath . $theme . "/"], '', $file);
 
-         $files = Db::name('theme_file')->field('more')->where(['theme' => $theme])->where(function ($query) use ($file) {
 
-             $query->where(['is_public' => 1])->whereOr(['file' => $file]);
 
-         })->select();
 
-         $vars    = [];
 
-         $widgets = [];
 
-         foreach ($files as $file) {
 
-             $oldMore = json_decode($file['more'], true);
 
-             if (!empty($oldMore['vars'])) {
 
-                 foreach ($oldMore['vars'] as $varName => $var) {
 
-                     $vars[$varName] = $var['value'];
 
-                 }
 
-             }
 
-             if (!empty($oldMore['widgets'])) {
 
-                 foreach ($oldMore['widgets'] as $widgetName => $widget) {
 
-                     $widgetVars = [];
 
-                     if (!empty($widget['vars'])) {
 
-                         foreach ($widget['vars'] as $varName => $var) {
 
-                             $widgetVars[$varName] = $var['value'];
 
-                         }
 
-                     }
 
-                     $widget['vars']       = $widgetVars;
 
-                     $widgets[$widgetName] = $widget;
 
-                 }
 
-             }
 
-         }
 
-         return ['vars' => $vars, 'widgets' => $widgets];
 
-     }
 
-     public function checkUserLogin()
 
-     {
 
-         $userId = cmf_get_current_user_id();
 
-         if (empty($userId)) {
 
-             if ($this->request->isAjax()) {
 
-                 $this->error("您尚未登录", cmf_url("user/Login/index"));
 
-             } else {
 
-                 $this->redirect(cmf_url("user/Login/index"));
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |