diff --git a/application/core/Plugins/PluginManager.php b/application/core/Plugins/PluginManager.php index a8592192..e70f1a30 100644 --- a/application/core/Plugins/PluginManager.php +++ b/application/core/Plugins/PluginManager.php @@ -36,6 +36,10 @@ class PluginManager { $this->pluginMenu = new PluginMenu($maniaControl); $this->maniaControl->configurator->addMenu($this->pluginMenu); + + /*$this->fetchPluginList(function ($data) { + var_dump($data); + });*/ } /** @@ -189,35 +193,35 @@ class PluginManager { $classesBefore = get_declared_classes(); $this->loadPluginFiles($pluginsDirectory); $classesAfter = get_declared_classes(); - - $newClasses = array_diff($classesAfter, $classesBefore); + + $newClasses = array_diff($classesAfter, $classesBefore); foreach($newClasses as $className) { if (!$this->isPluginClass($className)) { continue; } - + $this->addPluginClass($className); $className::prepare($this->maniaControl); - + if ($this->isPluginActive($className)) { continue; } if (!$this->getSavedPluginStatus($className)) { continue; } - + $this->activatePlugin($className); } } - + /** * Load all Plugin Files from the Directory - * + * * @param string $directory */ private function loadPluginFiles($directory = '') { $pluginFiles = scandir($directory); - foreach ($pluginFiles as $pluginFile) { + foreach($pluginFiles as $pluginFile) { if (stripos($pluginFile, '.') === 0) { continue; } @@ -339,4 +343,23 @@ class PluginManager { $pluginStatement->close(); return $active; } + + /** + * Fetch the plugin list of the ManiaControl Website + * + * @param $function + * @param bool $ignoreVersion + */ + private function fetchPluginList($function) { + $url = ManiaControl::URL_WEBSERVICE . 'plugins'; + + $this->maniaControl->fileReader->loadFile($url, function ($dataJson, $error) use (&$function) { + $data = json_decode($dataJson); + if (!$data || !isset($data[0])) { + return; + } + + call_user_func($function, $data[0]); + }); + } }