Esempio n. 1
0
 public static function getPluginInstance($plugin = null, $params = array(), $instance_id = null, $load_controller = false)
 {
     if (isset(self::$_instances[$plugin]) && is_object(self::$_instances[$plugin])) {
         return self::$_instances[$plugin];
     }
     if (!isset(self::$_instances_exist[$plugin])) {
         $plugin_class = 'plugin_' . $plugin;
         eval('class ' . $plugin_class . ' extends plugin {}');
         self::$_instances_exist[$plugin] = $plugin_class;
     } else {
         $plugin_class = self::$_instances_exist[$plugin];
     }
     if (!isset(self::$_instances[$plugin]) || !is_object(self::$_instances[$plugin])) {
         $ajax = ajax();
         if (!isset($params[1])) {
             self::$_loading_prefix = $plugin;
             $_plugin = self::$_instances[$plugin] = new $plugin_class();
             $_plugin->params = array();
             if (!is_null($instance_id)) {
                 $_plugin->_id = $instance_id;
                 $_plugin->id = $instance_id;
                 self::$_instances_ids[$plugin][$instance_id] = $instance_id;
             }
             $_plugin->dir = self::dir($plugin);
             $_plugin->loading = $plugin;
             self::$_loading_prefix = null;
         } else {
             $args = array();
             $params = $params[1];
             $_params = range('a', 'f');
             foreach ($_params as $k => $v) {
                 $args[$v] = current($params);
                 if ($k >= count($params)) {
                     $args[$v] = null;
                 } else {
                     next($params);
                 }
             }
             extract($args);
             self::$_loading_prefix = $plugin;
             $_plugin = self::$_instances[$plugin] = new $plugin_class($a, $b, $c, $d, $e, $f);
             $_plugin->params = $params;
             if (!is_null($instance_id)) {
                 $_plugin->_id = $instance_id;
                 $_plugin->id = $instance_id;
                 self::$_instances_ids[$plugin][$instance_id] = $instance_id;
             }
             $_plugin->dir = plugin::dir($plugin);
             $_plugin->loading = $plugin;
             self::$_loading_prefix = null;
         }
     } else {
         $_plugin = self::$_instances[$plugin];
     }
     $dir = plugin::dir($plugin) . $_plugin->controllers_dir;
     $_plugin->xml = $ajax->xmlObject($instance_id);
     $_plugin->controllers_dir = $dir;
     $_plugin->controller_file = $dir . "/{$plugin}.php";
     $_plugin->loading = $plugin;
     return $_plugin;
 }