loadAllValidAddons() публичный статический Метод

加载所有有效的插件
public static loadAllValidAddons ( )
Пример #1
0
 /**
  * 执行App控制器
  * @access public
  * @return void
  */
 public static function execApp()
 {
     // 加载所有插件
     if (C('APP_PLUGIN_ON')) {
         tsload(CORE_LIB_PATH . '/addons.class.php');
         tsload(CORE_LIB_PATH . '/addons/Hooks.class.php');
         tsload(CORE_LIB_PATH . '/addons/AbstractAddons.class.php');
         tsload(CORE_LIB_PATH . '/addons/NormalAddons.class.php');
         tsload(CORE_LIB_PATH . '/addons/SimpleAddons.class.php');
         tsload(CORE_LIB_PATH . '/addons/TagsAbstract.class.php');
         Addons::loadAllValidAddons();
     }
     //创建Action控制器实例
     $className = MODULE_NAME . 'Action';
     tsload(APP_ACTION_PATH . '/' . $className . '.class.php');
     if (!class_exists($className)) {
         $className = 'EmptyAction';
         tsload(APP_ACTION_PATH . '/EmptyAction.class.php');
         if (!class_exists($className)) {
             throw_exception(L('_MODULE_NOT_EXIST_') . MODULE_NAME);
         }
     }
     $module = new $className();
     //异常处理
     if (!$module) {
         // 模块不存在 抛出异常
         throw_exception(L('_MODULE_NOT_EXIST_') . MODULE_NAME);
     }
     //获取当前操作名
     $action = ACTION_NAME;
     //执行当前操作
     call_user_func(array(&$module, $action));
     return;
 }
Пример #2
0
 /**
  * App初始化
  */
 public static function init()
 {
     // 设定错误和异常处理
     set_error_handler(array('App', 'appError'));
     set_exception_handler(array('App', 'appException'));
     // Session初始化
     if (!session_id()) {
         session_start();
     }
     // 加载所有插件
     if (C('APP_PLUGIN_ON')) {
         Addons::loadAllValidAddons();
     }
 }
Пример #3
0
 /**
  * App初始化
  * @access public
  * @return void
  */
 public static function init()
 {
     // 设定错误和异常处理
     set_error_handler(array('App', 'appError'));
     set_exception_handler(array('App', 'appException'));
     // Session初始化
     if (!session_id()) {
         session_start();
     }
     // 加载所有插件
     if (C('APP_PLUGIN_ON')) {
         tsload(CORE_LIB_PATH . '/addons.class.php');
         tsload(CORE_LIB_PATH . '/addons/Hooks.class.php');
         tsload(CORE_LIB_PATH . '/addons/AbstractAddons.class.php');
         tsload(CORE_LIB_PATH . '/addons/NormalAddons.class.php');
         tsload(CORE_LIB_PATH . '/addons/SimpleAddons.class.php');
         tsload(CORE_LIB_PATH . '/addons/TagsAbstract.class.php');
         Addons::loadAllValidAddons();
     }
 }
Пример #4
0
 /**
  * 执行App控制器
  * @access public
  * @return void
  */
 public static function execApp()
 {
     //防止CSRF
     if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST' && stripos($_SERVER['HTTP_REFERER'], SITE_URL) !== 0 && $_SERVER['HTTP_USER_AGENT'] !== 'Shockwave Flash') {
         die('illegal request.');
     }
     // 使用手持设备时, 对用户的访问默认跳转至移动版, 除非用户指定访问普通版
     if ($_SESSION['wap_to_normal'] != '1' && cookie('wap_to_normal') != '1' && $_REQUEST['wap_to_normal'] != '1' && !isiPad()) {
         // 根据各应用的配置来判断是否存在手机版访问配置文件
         $publicAccess = array('message', 'register', 'feed');
         if (APP_NAME == 'public' && !in_array(strtolower(MODULE_NAME), $publicAccess) && strtolower(ACTION_NAME) != 'message' && isMobile() && in_array('wap', C('DEFAULT_APPS'))) {
             // 智能手机到3G版
             if (APP_NAME == 'public' && (isiPhone() || isAndroid())) {
                 // iOS和Android跳转至3G版
                 U('w3g/Index/index', '', true);
             } else {
                 // 其他手机跳转至WAP版
                 U('wap/Index/index', '', true);
             }
         }
     }
     // 加载所有插件
     if (C('APP_PLUGIN_ON')) {
         tsload(CORE_LIB_PATH . '/addons.class.php');
         tsload(CORE_LIB_PATH . '/addons/Hooks.class.php');
         tsload(CORE_LIB_PATH . '/addons/AbstractAddons.class.php');
         tsload(CORE_LIB_PATH . '/addons/NormalAddons.class.php');
         tsload(CORE_LIB_PATH . '/addons/SimpleAddons.class.php');
         tsload(CORE_LIB_PATH . '/addons/TagsAbstract.class.php');
         Addons::loadAllValidAddons();
     }
     //创建Action控制器实例
     $className = MODULE_NAME . 'Action';
     tsload(APP_ACTION_PATH . '/' . $className . '.class.php');
     if (!class_exists($className)) {
         $className = 'EmptyAction';
         tsload(APP_ACTION_PATH . '/EmptyAction.class.php');
         if (!class_exists($className)) {
             throw_exception(L('_MODULE_NOT_EXIST_') . ' ' . MODULE_NAME);
         }
     }
     $module = new $className();
     //异常处理
     if (!$module) {
         // 模块不存在 抛出异常
         throw_exception(L('_MODULE_NOT_EXIST_') . ' ' . MODULE_NAME);
     }
     //获取当前操作名
     $action = ACTION_NAME;
     //执行当前操作
     call_user_func(array(&$module, $action));
     //执行计划任务
     model('Schedule')->run();
     return;
 }
Пример #5
0
 /**
 +----------------------------------------------------------
 * 应用程序初始化
 +----------------------------------------------------------
 * @access public
 +----------------------------------------------------------
 * @return void
 +----------------------------------------------------------
 */
 public static function init()
 {
     // 设定错误和异常处理
     set_error_handler(array('App', 'appError'));
     set_exception_handler(array('App', 'appException'));
     //[RUNTIME]
     // 检查项目是否编译过
     // 在部署模式下会自动在第一次执行的时候编译项目
     if (defined('RUNTIME_MODEL')) {
         // 运行模式无需载入项目编译缓存
     } else {
         if (is_file(RUNTIME_PATH . '/~app.php') && (!is_file(CONFIG_PATH . 'config.php') || filemtime(RUNTIME_PATH . '/~app.php') > filemtime(CONFIG_PATH . 'config.php'))) {
             // 直接读取编译后的项目文件
             C(include RUNTIME_PATH . '/~app.php');
         } else {
             // 预编译项目
             App::build();
         }
     }
     //[/RUNTIME]
     //加载所有插件
     Addons::loadAllValidAddons();
     if (!defined('MODULE_NAME')) {
         define('MODULE_NAME', App::getModule());
     }
     // Module名称
     if (!defined('ACTION_NAME')) {
         define('ACTION_NAME', App::getAction());
     }
     // Action操作
     // If already slashed, strip.
     if (get_magic_quotes_gpc()) {
         $_GET = stripslashes_deep($_GET);
         $_POST = stripslashes_deep($_POST);
         $_COOKIE = stripslashes_deep($_COOKIE);
     }
     // 初始化运行时缓存
     object_cache_init();
     // 修正IIS下的$_SERVER['REQUEST_URI']
     if ($_SERVER['REQUEST_URI']) {
         $_SERVER['REQUEST_URI'] = $_SERVER['PHP_SELF'] . ($_SERVER['QUERY_STRING'] ? '?' . $_SERVER['QUERY_STRING'] : '');
     }
     // 站点设置
     App::checkSiteOption();
     // 项目开始标签
     if (C('APP_PLUGIN_ON')) {
         tag('app_begin');
     }
     // 设置系统时区 PHP5支持
     if (function_exists('date_default_timezone_set')) {
         date_default_timezone_set(C('DEFAULT_TIMEZONE'));
     }
     // 允许注册AUTOLOAD方法
     if (C('APP_AUTOLOAD_REG') && function_exists('spl_autoload_register')) {
         spl_autoload_register(array('Think', 'autoload'));
     }
     // 重塑Session (必须位于session_start()之前)
     if (isset($_POST['PHPSESSID'])) {
         Session::destroy();
         session_id($_POST['PHPSESSID']);
     }
     // 初始化Session
     if (C('SESSION_AUTO_START')) {
         Session::start();
     }
     /*
      * 应用调度过滤器
      * 如果没有加载任何URL调度器, 默认只支持 QUERY_STRING 方式
      */
     if (C('URL_DISPATCH_ON')) {
         Dispatcher::dispatch();
     }
     /*
      * PHP_FILE 由内置的Dispacher定义
      * 如果不使用该插件,需要重新定义
      */
     if (!defined('PHP_FILE')) {
         define('PHP_FILE', _PHP_FILE_);
     }
     // 取得模块和操作名称
     // 可以在Dispatcher中定义获取规则
     // 使用手持设备时, 对home的访问默认跳转至移动版, 除非用户指定访问普通版。
     if (APP_NAME == 'home' && $_SESSION['wap_to_normal'] != '1' && cookie('wap_to_normal') != '1' && $_REQUEST['wap_to_normal'] != '1') {
         if (MODULE_NAME == 'Public' && ACTION_NAME == 'tryOtherLogin') {
         } else {
             if (MODULE_NAME == 'Widget' && ACTION_NAME == 'addonsRequest') {
             } else {
                 if (isiOS() || isAndroid()) {
                     // iOS和Android跳转至3G版
                     U('w3g/Index/index', '', true);
                 } else {
                     if (isMobile()) {
                         // 其他手机跳转至WAP版
                         U('wap/Index/index', '', true);
                     }
                 }
             }
         }
     }
     // 检查应用是否安装 (Admin和默认应用不需要安装)
     if (MODULE_NAME != 'Admin' && !in_array(APP_NAME, C('DEFAULT_APPS')) && !model('App')->isAppNameActive(APP_NAME)) {
         throw_exception(L('_APP_INACTIVE_') . APP_NAME);
     }
     $GLOBALS['ts']['_app'] = APP_NAME;
     $GLOBALS['ts']['_mod'] = MODULE_NAME;
     $GLOBALS['ts']['_act'] = ACTION_NAME;
     // 加载模块配置文件
     if (is_file(CONFIG_PATH . strtolower(MODULE_NAME) . '_config.php')) {
         C(include CONFIG_PATH . strtolower(MODULE_NAME) . '_config.php');
     }
     //Ucenter初始化
     App::initUcenter();
     // 用户认证
     App::checkUser();
     // 语言检查
     App::checkLanguage();
     // 模板检查
     App::checkTemplate();
     // 开启静态缓存
     if (C('HTML_CACHE_ON')) {
         HtmlCache::readHTMLCache();
     }
     // 项目初始化标签
     if (C('APP_PLUGIN_ON')) {
         tag('app_init');
     }
     return;
 }