/** * Load plugin class with dependencies first * * @param AJXP_Plugin $plugin * @param array $pluginsPool */ private function recursiveLoadPlugin($plugin, $pluginsPool) { if ($plugin->loadingState != "") { return; } $dependencies = $plugin->getDependencies(); $plugin->loadingState = "lock"; foreach ($dependencies as $dependencyId) { if (isset($pluginsPool[$dependencyId])) { $this->recursiveLoadPlugin($pluginsPool[$dependencyId], $pluginsPool); } else { if (strpos($dependencyId, "+") !== false) { foreach (array_keys($pluginsPool) as $pId) { if (strpos($pId, str_replace("+", "", $dependencyId)) === 0) { $this->recursiveLoadPlugin($pluginsPool[$pId], $pluginsPool); } } } } } $plugType = $plugin->getType(); if (!isset($this->registry[$plugType])) { $this->registry[$plugType] = array(); } $options = $this->confStorage->loadPluginConfig($plugType, $plugin->getName()); if ($plugin->isEnabled() || isset($options["AJXP_PLUGIN_ENABLED"]) && $options["AJXP_PLUGIN_ENABLED"] === true) { $plugin = $this->instanciatePluginClass($plugin); } $plugin->loadConfigs($options); $this->registry[$plugType][$plugin->getName()] = $plugin; $plugin->loadingState = "loaded"; }