Пример #1
0
/**
 * 查询插件的某些属性,比如 插件的版本信息,财付通支付插件是否支持 网银直连
 *
 * @param array $paramArray
 * @param       $smarty
 *
 * @return mixed|null
 */
function smarty_helper_function_query_plugin_feature_var(array $paramArray, $smarty)
{
    $varName = isset($paramArray['varName']) ? $paramArray['varName'] : '';
    unset($paramArray['varName']);
    $uniqueId = isset($paramArray['uniqueId']) ? $paramArray['uniqueId'] : '';
    unset($paramArray['uniqueId']);
    $command = isset($paramArray['command']) ? $paramArray['command'] : '';
    unset($paramArray['command']);
    if (empty($varName) || empty($uniqueId) || empty($command)) {
        throw new InvalidArgumentException('must provide varName, uniqueId, command');
    }
    $varValue = null;
    if (empty($uniqueId) || !($pluginInstance = \Core\Plugin\PluginHelper::getPluginInstanceByUniqueId($uniqueId))) {
        goto out;
    }
    // execute command to get result
    $varValue = $pluginInstance->pluginCommand($command, $paramArray);
    out:
    $smarty->assign($varName, $varValue);
}
Пример #2
0
    }
    $smarty->setCaching(Smarty::CACHING_OFF);
}
// 初始化 logger
$logger = new \Core\Log\Wrapper();
/**
 * 用一个简单的全局函数方便日志的输出
 *
 * @param string $msg    日志消息
 * @param string $source 日志的来源,比如 'SQL'
 * @param string $level  日志等级
 *
 * */
function printLog($msg, $source = '', $level = \Core\Log\Base::INFO)
{
    global $logger;
    $logger->addLogInfo($level, $source, $msg);
}
// option 我们使用数据库实现
\Core\Plugin\Option\OptionHelper::setOptionDriver(new \Core\Plugin\Option\OptionDbDriver());
// 设置插件所在的路径
\Core\Plugin\PluginHelper::addPluginDir(PROTECTED_PATH . '/Plugin');
// 系统自带的插件
// 设置 Theme 所在的路径
\Core\Plugin\ThemeHelper::addPluginDir(PROTECTED_PATH . '/Theme');
// 加载运行环境变量设置
$f3->config(PROTECTED_PATH . '/Config/env.cfg');
// 加载全局变量设置
$f3->config(PROTECTED_PATH . '/Config/common.cfg');
// 根据环境变量的不同,加载对应的环境变量设置,开发环境和生产环境的配置显然是不一样的
$f3->config(PROTECTED_PATH . '/Config/common-' . $f3->get('sysConfig[env]') . '.cfg');
Пример #3
0
        // 开启 Smarty Web Log
        BzfDebug::enableSmartyWebLog();
    }
}
// ---------------------------------------- 4. 加载显示主题 --------------------------------------
$themeIntance = ThemeHelper::loadSystemTheme(ThemeHelper::SYSTEM_SUPPLIER_THEME);
if (!$themeIntance) {
    die('没有正确设置 ' . ThemeHelper::SYSTEM_SUPPLIER_THEME . ' 主题');
}
// 调用主题自己的初始化方法
$themeLoadRet = $themeIntance->pluginLoad(PluginHelper::SYSTEM_SUPPLIER);
if (true !== $themeLoadRet) {
    die(ThemeHelper::SYSTEM_SUPPLIER_THEME . ' 主题无法初始化:' . $themeLoadRet);
}
// 调用主题的 action
$themeActionRet = $themeIntance->pluginAction(PluginHelper::SYSTEM_SUPPLIER);
if (true !== $themeActionRet) {
    die(ThemeHelper::SYSTEM_SUPPLIER_THEME . ' 主题无法加载:' . $themeActionRet);
}
// ---------------------------------------- 5. 加载系统插件 --------------------------------------
// 这里我们加载额外的插件
PluginHelper::loadActivePlugin(PluginHelper::SYSTEM_SUPPLIER);
// 执行插件的 action 方法,让插件能完成各种注册
PluginHelper::doActivePluginAction(PluginHelper::SYSTEM_SUPPLIER);
// ---------------------------------------- 6. 启动整个系统 --------------------------------------
// 启动控制器
$f3->run();
// 执行完成,卸载插件
PluginHelper::unloadActivePlugin(PluginHelper::SYSTEM_SUPPLIER);
// 执行完成,卸载主题
$themeIntance->pluginUnload(PluginHelper::SYSTEM_SUPPLIER);
Пример #4
0
 /**
  * 加载所有 active 的插件
  *
  * @param string $system 系统的标识
  *
  */
 public static function loadActivePlugin($system)
 {
     $activePluginArray = PluginHelper::getActivePluginArray();
     if (empty($activePluginArray)) {
         return;
     }
     foreach ($activePluginArray as $activePlugin) {
         $instance = static::loadPluginInstance($activePlugin);
         if (!$instance) {
             printLog('load plugin [' . $activePlugin . '] failed', 'PLUGIN', \Core\Log\Base::ERROR);
             continue;
         }
         //调用插件的 load 方法做初始化
         if (true !== $instance->pluginLoad($system)) {
             // 如果加载失败,就不要做后面的操作了
             unset($instance);
             continue;
         }
         global $f3;
         if ($f3->get('DEBUG')) {
             printLog('load plugin [' . $activePlugin . '] success', 'PLUGIN', \Core\Log\Base::DEBUG);
         }
         // 把插件放入到列表中
         static::$pluginInstanceArray[$activePlugin] = $instance;
         unset($instance);
     }
 }
Пример #5
0
    die(ThemeHelper::SYSTEM_MOBILE_THEME . ' 主题无法初始化:' . $themeLoadRet);
}
// 调用主题的 action
$themeActionRet = $themeIntance->pluginAction(PluginHelper::SYSTEM_MOBILE);
if (true !== $themeActionRet) {
    die(ThemeHelper::SYSTEM_MOBILE_THEME . ' 主题无法加载:' . $themeActionRet);
}
// ---------------------------------------- 5. 加载系统插件 --------------------------------------
// 这里我们加载额外的插件
PluginHelper::loadActivePlugin(PluginHelper::SYSTEM_MOBILE);
// 执行插件的 action 方法,让插件能完成各种注册
PluginHelper::doActivePluginAction(PluginHelper::SYSTEM_MOBILE);
// ----------------------------- 6. 把系统安装的主题当作插件一样加载上来,用于不同主题之间互相合作----------------
ThemeHelper::loadActiveTheme(PluginHelper::SYSTEM_MOBILE, ThemeHelper::getSystemThemeDirName(ThemeHelper::SYSTEM_MOBILE_THEME));
ThemeHelper::doActiveThemeAction(PluginHelper::SYSTEM_MOBILE);
// ---------------------------------------- 7. 启动整个系统 --------------------------------------
// 是否开启 URL 伪静态化
if ($f3->get('sysConfig[enable_static_url][' . PluginHelper::SYSTEM_MOBILE . ']')) {
    RouteHelper::$isMakeStaticUrl = true;
    // 我们开启 URL 伪静态化
    RouteHelper::processStaticUrl();
    // 解析静态化的 URL
}
// 启动控制器
$f3->run();
// unload 系统 active 的主题插件
ThemeHelper::unloadActiveTheme(PluginHelper::SYSTEM_MOBILE);
// 执行完成,卸载插件
PluginHelper::unloadActivePlugin(PluginHelper::SYSTEM_MOBILE);
// 执行完成,卸载主题
$themeIntance->pluginUnload(PluginHelper::SYSTEM_MOBILE);
Пример #6
0
}
// 调用主题的 action
$themeActionRet = $themeIntance->pluginAction(PluginHelper::SYSTEM_SHOP);
if (true !== $themeActionRet) {
    die(ThemeHelper::SYSTEM_SHOP_THEME . ' 主题无法加载:' . $themeActionRet);
}
// ---------------------------------------- 5. 加载系统插件 --------------------------------------
// 在这里启动插件体系架构
// 这里我们加载额外的插件
PluginHelper::loadActivePlugin(PluginHelper::SYSTEM_SHOP);
// 执行插件的 action 方法,让插件能完成各种注册
PluginHelper::doActivePluginAction(PluginHelper::SYSTEM_SHOP);
// ----------------------------- 6. 把系统安装的主题当作插件一样加载上来,用于不同主题之间互相合作----------------
ThemeHelper::loadActiveTheme(PluginHelper::SYSTEM_SHOP, ThemeHelper::getSystemThemeDirName(ThemeHelper::SYSTEM_SHOP_THEME));
ThemeHelper::doActiveThemeAction(PluginHelper::SYSTEM_SHOP);
// ---------------------------------------- 7. 启动整个系统 --------------------------------------
// 是否开启 URL 伪静态化
if ($f3->get('sysConfig[enable_static_url][' . PluginHelper::SYSTEM_SHOP . ']')) {
    RouteHelper::$isMakeStaticUrl = true;
    // 我们开启 URL 伪静态化
    RouteHelper::processStaticUrl();
    // 解析静态化的 URL
}
// 启动控制器
$f3->run();
// unload 系统 active 的主题插件
ThemeHelper::unloadActiveTheme(PluginHelper::SYSTEM_SHOP);
// 执行完成,卸载插件
PluginHelper::unloadActivePlugin(PluginHelper::SYSTEM_SHOP);
// 执行完成,卸载主题
$themeIntance->pluginUnload(PluginHelper::SYSTEM_SHOP);
Пример #7
0
 public function UpdatePlugin($f3)
 {
     // 权限检查,有权限安装就有权限升级
     $this->requirePrivilege('manage_plugin_plugin_installplugin');
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $pluginDirName = $validator->required()->validate('pluginDirName');
     if (!$this->validate($validator)) {
         goto out;
     }
     $pluginInstance = PluginHelper::loadPluginInstance($pluginDirName);
     if (!$pluginInstance) {
         $this->addFlashMessage('插件[' . $pluginDirName . ']无效');
         goto out;
     }
     // 调用插件操作
     $ret = $pluginInstance->pluginUpdate();
     if (true !== $ret) {
         $this->addFlashMessage('插件[' . $pluginDirName . ']升级失败:' . $ret);
         goto out;
     }
     $this->addFlashMessage('插件升级成功');
     out:
     RouteHelper::reRoute($this, RouteHelper::getRefer(), false);
 }
Пример #8
0
        require_once PROTECTED_PATH . '/Framework/Debug/BzfDebug.php';
        // 开启 debug 功能
        BzfDebug::enableDebug();
        // 开启 Smarty Web Log
        BzfDebug::enableSmartyWebLog();
    }
}
// ---------------------------------------- 4. 加载显示主题 --------------------------------------
// 加载主题自己的初始化文件
$themeLoadFile = PROTECTED_PATH . '/Theme/' . $f3->get('sysConfig[theme]') . '/theme_load.php';
if (is_file($themeLoadFile)) {
    require_once $themeLoadFile;
} else {
    die('系统主题设置错误');
}
// ---------------------------------------- 5. 加载系统插件 --------------------------------------
// 这里我们加载额外的插件
PluginHelper::loadActivePlugin(PluginHelper::SYSTEM_MANAGE);
// 执行插件的 action 方法,让插件能完成各种注册
PluginHelper::doActivePluginAction(PluginHelper::SYSTEM_MANAGE);
// ---------------------------------------- 6. 把系统安装的主题当作插件一样加载上来,用于主题管理配置----------------
ThemeHelper::loadInstallTheme(PluginHelper::SYSTEM_MANAGE);
ThemeHelper::doInstallThemeAction(PluginHelper::SYSTEM_MANAGE);
// ---------------------------------------- 7. 启动整个系统 --------------------------------------
// 启动控制器
$f3->run();
// unload 系统安装的主题
ThemeHelper::unloadInstallTheme(PluginHelper::SYSTEM_MANAGE);
// 执行完成,unload 插件
PluginHelper::unloadActivePlugin(PluginHelper::SYSTEM_MANAGE);