/**
  * Loads plugins
  */
 public static function initPlugins()
 {
     if (ApplicationPluginManager::$s_application_plugin_manager_did_do_plugin_init) {
         return true;
     }
     $o_config = Configuration::load();
     $vs_app_plugin_dir = $o_config->get('application_plugins');
     $va_app_plugin_dirs = ApplicationPluginManager::getPluginNames();
     foreach ($va_app_plugin_dirs as $vs_plugin_dir) {
         if (!file_exists($vs_app_plugin_dir . '/' . $vs_plugin_dir . '/' . $vs_plugin_dir . 'Plugin.php')) {
             continue;
         }
         require_once $vs_app_plugin_dir . '/' . $vs_plugin_dir . '/' . $vs_plugin_dir . 'Plugin.php';
         $vs_plugin_classname = $vs_plugin_dir . 'Plugin';
         $o_instance = new $vs_plugin_classname($vs_app_plugin_dir . '/' . $vs_plugin_dir);
         $va_status = $o_instance->checkStatus();
         if (!isset($va_status['available']) || !$va_status['available']) {
             continue;
         }
         $o_class_info = new ReflectionClass($vs_plugin_classname);
         ApplicationPluginManager::$s_application_plugin_hooks[$vs_plugin_dir] = array();
         if (is_array($va_method_list = $o_class_info->getMethods())) {
             foreach ($va_method_list as $o_method) {
                 if (!$o_method->isPublic()) {
                     continue;
                 }
                 $vs_method_name = $o_method->getName();
                 if (!preg_match('!^hook!', $vs_method_name)) {
                     continue;
                 }
                 ApplicationPluginManager::$s_application_plugin_hooks[$vs_plugin_dir][$vs_method_name] = true;
             }
         }
         ApplicationPluginManager::$s_application_plugin_instances[$vs_plugin_dir] = $o_instance;
     }
     ApplicationPluginManager::$s_application_plugin_manager_did_do_plugin_init = true;
     return true;
 }