Exemplo n.º 1
0
 private function initWebEnv($system)
 {
     global $f3;
     global $smarty;
     $systemUpperFirst = ucfirst($system);
     $saeStorage = new \SaeStorage();
     // -------------------- 1. 设置 data 路径 --------------------------------------
     // 当前网站的 webroot_schema_host
     if (!$f3->get('sysConfig[webroot_schema_host]')) {
         $f3->set('sysConfig[webroot_schema_host]', $f3->get('SCHEME') . '://' . $f3->get('HOST') . ('80' != $f3->get('PORT') ? ':' . $f3->get('PORT') : ''));
     }
     // 当前网站的 webroot_url_prefix
     if (!$f3->get('sysConfig[webroot_url_prefix]')) {
         $f3->set('sysConfig[webroot_url_prefix]', $f3->get('sysConfig[webroot_schema_host]') . $f3->get('BASE'));
     }
     //数据路径
     $f3->set('sysConfig[data_path_root]', $f3->get('sysConfig[sae_storage_data_path]'));
     $f3->set('sysConfig[data_url_prefix]', rtrim($saeStorage->getUrl($f3->get('sysConfig[sae_storage_data_domain]'), ''), '/'));
     //图片 image_url_prefix
     if (!$f3->get('sysConfig[image_url_prefix]')) {
         $f3->set('sysConfig[image_url_prefix]', $f3->get('sysConfig[data_url_prefix]'));
     }
     // -------------------- 2. 设置 runtime 路径 --------------------------------------
     // RunTime 路径
     $f3->set('sysConfig[runtime_path]', $f3->get('sysConfig[sae_runtime]'));
     define('RUNTIME_PATH', $f3->get('sysConfig[runtime_path]'));
     // 设置 Tmp 路径
     $f3->set('TEMP', RUNTIME_PATH . '/Temp/');
     // 设置 Log 路径
     $f3->set('LOGS', RUNTIME_PATH . '/Log/' . $systemUpperFirst . '/');
     //Sae 禁止 Cache 功能
     $f3->set('CACHE', false);
     // -------------------- 3. 设置 Smarty --------------------------------------
     //设置 smarty 工作目录
     $smarty->setCompileDir(RUNTIME_PATH . '/Smarty');
     $smarty->setCacheDir(RUNTIME_PATH . '/Smarty');
     $smarty->compile_locking = false;
     //smarty 在 SAE 下禁用缓存
     $f3->set('sysConfig[smarty_caching]', false);
     // smarty 会对生成的模板文件做一个 chmod 操作,这个操作会导致 Sae 报错
     $smarty->_file_perms = null;
     // -------------------- 4. 设置 Asset 管理 --------------------------------------
     // 关闭系统的 asset 合并功能
     $f3->set('sysConfig[enable_asset_merge]', false);
     // 我们使用 Sae 专用的 AssetManager
     SaeAssetManager::instance($system);
     \Core\Asset\ManagerHelper::setAssetManager(SaeAssetManager::instance());
 }
Exemplo n.º 2
0
 private function initWebEnv($system)
 {
     global $f3;
     global $smarty;
     // 预先加载一些模块,提高后面的加载效率
     require_once PROTECTED_PATH . '/Core/Asset/SimpleManager.php';
     $systemUpperFirst = ucfirst($system);
     $sysPath = '';
     $sysDir = '';
     switch ($system) {
         case PluginHelper::SYSTEM_SHOP:
             $sysPath = SHOP_PATH;
             $sysDir = SHOP_DIR;
             break;
         case PluginHelper::SYSTEM_AIMEIDAREN:
             $sysPath = AIMEIDAREN_PATH;
             $sysDir = AIMEIDAREN_DIR;
             break;
         case PluginHelper::SYSTEM_GROUPON:
             $sysPath = GROUPON_PATH;
             $sysDir = GROUPON_DIR;
             break;
         case PluginHelper::SYSTEM_MOBILE:
             $sysPath = MOBILE_PATH;
             $sysDir = MOBILE_DIR;
             break;
         case PluginHelper::SYSTEM_MANAGE:
             $sysPath = MANAGE_PATH;
             $sysDir = MANAGE_DIR;
             break;
         case PluginHelper::SYSTEM_SUPPLIER:
             $sysPath = SUPPLIER_PATH;
             $sysDir = SUPPLIER_DIR;
             break;
         case PluginHelper::SYSTEM_INSTALL:
             $sysPath = INSTALL_PATH;
             $sysDir = INSTALL_DIR;
             // install use tmp directory for cache
             $f3->set('sysConfig[cache]', 'folder=' . sys_get_temp_dir());
             break;
         default:
             throw new \InvalidArgumentException('can not init for system [' . $system . ']');
     }
     // -------------------- 1. 设置 data 路径 --------------------------------------
     // 当前网站的 webroot_schema_host
     if (!$f3->get('sysConfig[webroot_schema_host]')) {
         $f3->set('sysConfig[webroot_schema_host]', $f3->get('SCHEME') . '://' . $f3->get('HOST') . ('80' != $f3->get('PORT') ? ':' . $f3->get('PORT') : ''));
     }
     // 当前网站的 webroot_url_prefix
     if (!$f3->get('sysConfig[webroot_url_prefix]')) {
         $f3->set('sysConfig[webroot_url_prefix]', $f3->get('sysConfig[webroot_schema_host]') . $f3->get('BASE'));
     }
     // 没有自己的目录,比如把 shop 放在根目录了
     if (empty($sysDir)) {
         //数据路径
         if (!$f3->get('sysConfig[data_path_root]')) {
             $f3->set('sysConfig[data_path_root]', realpath($sysPath . '/data'));
         }
         //数据 url prefix
         if (!$f3->get('sysConfig[data_url_prefix]')) {
             $f3->set('sysConfig[data_url_prefix]', $f3->get('sysConfig[webroot_url_prefix]') . '/data');
         }
     } else {
         //数据路径
         if (!$f3->get('sysConfig[data_path_root]')) {
             $f3->set('sysConfig[data_path_root]', realpath($sysPath . '/../data'));
         }
         //数据 url prefix
         if (!$f3->get('sysConfig[data_url_prefix]')) {
             $f3->set('sysConfig[data_url_prefix]', str_replace('/' . $sysDir, '/data', $f3->get('sysConfig[webroot_url_prefix]')));
         }
     }
     //图片 image_url_prefix
     if (!$f3->get('sysConfig[image_url_prefix]')) {
         $f3->set('sysConfig[image_url_prefix]', $f3->get('sysConfig[data_url_prefix]'));
     }
     // -------------------- 2. 设置 runtime 路径 --------------------------------------
     // RunTime 路径
     if (!$f3->get('sysConfig[runtime_path]')) {
         $f3->set('sysConfig[runtime_path]', realpath(PROTECTED_PATH . '/Runtime'));
     }
     define('RUNTIME_PATH', $f3->get('sysConfig[runtime_path]'));
     // 设置 Tmp 路径
     $f3->set('TEMP', RUNTIME_PATH . '/Temp/');
     // 设置 Log 路径
     $f3->set('LOGS', RUNTIME_PATH . '/Log/' . $systemUpperFirst . '/');
     //开启 Cache 功能
     if ($f3->get('sysConfig[cache]')) {
         $f3->set('CACHE', $f3->get('sysConfig[cache]'));
     } else {
         // 让 F3 自动选择使用最优的 Cache 方案,最差的情况会使用 TEMP/cache 目录文件做缓存
         $f3->set('CACHE', 'true');
     }
     // -------------------- 3. 设置 Smarty --------------------------------------
     // 初始化 smarty 模板引擎
     $smarty->debugging = $f3->get('sysConfig[smarty_debug]');
     $smarty->force_compile = $f3->get('sysConfig[smarty_force_compile]');
     $smarty->use_sub_dirs = $f3->get('sysConfig[smarty_use_sub_dirs]');
     //设置 smarty 工作目录
     $smarty->setCompileDir(RUNTIME_PATH . '/Smarty/' . $systemUpperFirst . '/Compile');
     $smarty->setCacheDir(RUNTIME_PATH . '/Smarty/' . $systemUpperFirst . '/Cache');
     // -------------------- 4. 设置 Asset 管理 --------------------------------------
     // asset 路径,用于发布 css, js , 图片 等
     if (!$f3->get('sysConfig[asset_path_root]')) {
         $f3->set('sysConfig[asset_path_root]', realpath($sysPath . '/asset'));
     }
     if (!$f3->get('sysConfig[asset_path_url_prefix]')) {
         $f3->set('sysConfig[asset_path_url_prefix]', $f3->get('sysConfig[webroot_url_prefix]') . '/asset');
     }
     \Core\Asset\SimpleManager::instance($f3->get('sysConfig[asset_path_url_prefix]'), $f3->get('sysConfig[asset_path_root]'));
     // 开启 asset 智能重新发布功能
     \Core\Asset\SimpleManager::instance()->enableSmartPublish($f3->get('sysConfig[enable_asset_smart_publish]'));
     // asset 文件 url 开启 hash,文件名采用 时间戳.文件名 的方式
     \Core\Asset\SimpleManager::instance()->enableFileHashUrl($f3->get('sysConfig[enable_asset_hash_url]'), $f3->get('sysConfig[enable_asset_hash_name]'));
     \Core\Asset\ManagerHelper::setAssetManager(\Core\Asset\SimpleManager::instance());
 }