InitModuleBehavior.class.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace Common\Behavior;
  3. use Think\Behavior;
  4. defined('THINK_PATH') or exit();
  5. /**
  6. * 初始化允许访问模块信息
  7. *
  8. */
  9. class InitModuleBehavior extends Behavior
  10. {
  11. /**
  12. * 行为扩展的执行入口必须是run
  13. *
  14. */
  15. public function run(&$content)
  16. {
  17. // 安装模式下直接返回
  18. if (defined('BIND_MODULE') && BIND_MODULE === 'Install') {
  19. return;
  20. }
  21. // 数据缓存前缀
  22. $config['DATA_CACHE_PREFIX'] = strtolower(ENV_PRE . MODULE_MARK . '_');
  23. // 获取数据库存储的配置
  24. $database_config = D('Admin/Config')->lists();
  25. // URL_MODEL必须在app_init阶段就从数据库读取出来应用
  26. // 不然系统就会读取config.php中的配置导致后台的配置失效
  27. $config['URL_MODEL'] = $database_config['URL_MODEL'];
  28. // 允许访问模块列表加上安装的功能模块
  29. $module_name_list = D('Admin/Module')
  30. ->where(array('status' => 1, 'is_system' => 0))
  31. ->getField('name', true);
  32. $module_allow_list = array_merge(
  33. C('MODULE_ALLOW_LIST'),
  34. $module_name_list
  35. );
  36. if (MODULE_MARK === 'Admin') {
  37. $module_allow_list[] = 'Admin';
  38. $config['URL_MODEL'] = 3;
  39. }
  40. C('MODULE_ALLOW_LIST', $module_allow_list);
  41. // 如果是后台访问自动设置默认模块为Admin
  42. if (MODULE_MARK === 'Admin') {
  43. C('DEFAULT_MODULE', 'Admin');
  44. }
  45. // 设置默认模块
  46. if ($database_config['DEFAULT_MODULE']) {
  47. $config['DEFAULT_MODULE'] = $database_config['DEFAULT_MODULE'];
  48. }
  49. // 设置WAP和微信标记
  50. define('IS_WAP', is_wap() ? true : false);
  51. define('IS_WEIXIN', is_weixin() ? true : false);
  52. // 获取不带端口的域名
  53. $_host = explode(':', $_SERVER['HTTP_HOST']);
  54. define('HTTP_HOST', $_host[0]);
  55. // 获取scheme
  56. define('HTTP_SCHEME', (is_ssl() ? 'https' : 'http'));
  57. // 获取域名
  58. define('HTTP_DOMAIN', HTTP_SCHEME . '://' . $_SERVER['HTTP_HOST']);
  59. C($config);
  60. }
  61. }