Config.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 海豚PHP框架 [ DolphinPHP ]
  4. // +----------------------------------------------------------------------
  5. // | 版权所有 2016~2019 广东卓锐软件有限公司 [ http://www.zrthink.com ]
  6. // +----------------------------------------------------------------------
  7. // | 官方网站: http://dolphinphp.com
  8. // +----------------------------------------------------------------------
  9. namespace app\common\behavior;
  10. use app\admin\model\Config as ConfigModel;
  11. use app\admin\model\Module as ModuleModel;
  12. use think\facade\Env;
  13. use think\facade\Request;
  14. use think\facade\App;
  15. /**
  16. * 初始化配置信息行为
  17. * 将系统配置信息合并到本地配置
  18. * @package app\common\behavior
  19. * @author CaiWeiMing <314013107@qq.com>
  20. */
  21. class Config
  22. {
  23. /**
  24. * 执行行为 run方法是Behavior唯一的接口
  25. * @access public
  26. * @return void
  27. */
  28. public function run()
  29. {
  30. // 如果是安装操作,直接返回
  31. if(defined('BIND_MODULE') && BIND_MODULE === 'install') return;
  32. // 路由检测
  33. $dispatch = App::routeCheck()->init()->getDispatch();
  34. if (is_array($dispatch)) {
  35. // 获取当前模块名称
  36. $module = isset($dispatch[0]) ? $dispatch[0] : '';
  37. } else {
  38. // 闭包路由,直接返回
  39. return;
  40. }
  41. // 获取入口目录
  42. $base_file = Request::baseFile();
  43. $base_dir = substr($base_file, 0, strripos($base_file, '/') + 1);
  44. define('PUBLIC_PATH', $base_dir);
  45. // 视图输出字符串内容替换
  46. $view_replace_str = [
  47. // 静态资源目录
  48. '__STATIC__' => PUBLIC_PATH. 'static',
  49. // 文件上传目录
  50. '__UPLOADS__' => PUBLIC_PATH. 'uploads',
  51. // JS插件目录
  52. '__LIBS__' => PUBLIC_PATH. 'static/libs',
  53. // 后台CSS目录
  54. '__ADMIN_CSS__' => PUBLIC_PATH. 'static/admin/css',
  55. // 后台JS目录
  56. '__ADMIN_JS__' => PUBLIC_PATH. 'static/admin/js',
  57. // 后台IMG目录
  58. '__ADMIN_IMG__' => PUBLIC_PATH. 'static/admin/img',
  59. // 前台CSS目录
  60. '__HOME_CSS__' => PUBLIC_PATH. 'static/home/css',
  61. // 前台JS目录
  62. '__HOME_JS__' => PUBLIC_PATH. 'static/home/js',
  63. // 前台IMG目录
  64. '__HOME_IMG__' => PUBLIC_PATH. 'static/home/img',
  65. // 表单项扩展目录
  66. '__EXTEND_FORM__' => PUBLIC_PATH.'extend/form'
  67. ];
  68. config('template.tpl_replace_string', $view_replace_str);
  69. // 如果定义了入口为admin,则修改默认的访问控制器层
  70. if(defined('ENTRANCE') && ENTRANCE == 'admin') {
  71. define('ADMIN_FILE', substr($base_file, strripos($base_file, '/') + 1));
  72. if ($module == '') {
  73. header("Location: ".$base_file.'/admin', true, 302);exit();
  74. }
  75. if (!in_array($module, config('module.default_controller_layer'))) {
  76. // 修改默认访问控制器层
  77. config('url_controller_layer', 'admin');
  78. // 修改视图模板路径
  79. config('template.view_path', Env::get('app_path'). $module. '/view/admin/');
  80. }
  81. // 插件静态资源目录
  82. config('template.tpl_replace_string.__PLUGINS__', '/plugins');
  83. } else {
  84. if ($module == 'admin') {
  85. header("Location: ".$base_dir.ADMIN_FILE.'/admin', true, 302);exit();
  86. }
  87. if ($module != '' && !in_array($module, config('module.default_controller_layer'))) {
  88. // 修改默认访问控制器层
  89. config('url_controller_layer', 'home');
  90. }
  91. }
  92. // 定义模块资源目录
  93. config('template.tpl_replace_string.__MODULE_CSS__', PUBLIC_PATH. 'static/'. $module .'/css');
  94. config('template.tpl_replace_string.__MODULE_JS__', PUBLIC_PATH. 'static/'. $module .'/js');
  95. config('template.tpl_replace_string.__MODULE_IMG__', PUBLIC_PATH. 'static/'. $module .'/img');
  96. config('template.tpl_replace_string.__MODULE_LIBS__', PUBLIC_PATH. 'static/'. $module .'/libs');
  97. // 静态文件目录
  98. config('public_static_path', PUBLIC_PATH. 'static/');
  99. // 读取系统配置
  100. $system_config = cache('system_config');
  101. if (!$system_config) {
  102. $ConfigModel = new ConfigModel();
  103. $system_config = $ConfigModel->getConfig();
  104. // 所有模型配置
  105. $module_config = ModuleModel::where('config', 'neq', '')->column('config', 'name');
  106. foreach ($module_config as $module_name => $config) {
  107. $system_config[strtolower($module_name).'_config'] = json_decode($config, true);
  108. }
  109. // 非开发模式,缓存系统配置
  110. if ($system_config['develop_mode'] == 0) {
  111. cache('system_config', $system_config);
  112. }
  113. }
  114. // 设置配置信息
  115. config($system_config, 'app');
  116. }
  117. }