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; }