From 3e1daa99e282f49242abb546744bc9333c0e9367 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20Schro=CC=88der?= Date: Sun, 4 May 2014 17:00:03 +0200 Subject: [PATCH] plugin loaded & unloaded callbacks --- application/core/Plugins/PluginManager.php | 23 +++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/application/core/Plugins/PluginManager.php b/application/core/Plugins/PluginManager.php index 3eb609af..ce046166 100644 --- a/application/core/Plugins/PluginManager.php +++ b/application/core/Plugins/PluginManager.php @@ -20,6 +20,8 @@ class PluginManager { * Constants */ const TABLE_PLUGINS = 'mc_plugins'; + const CB_PLUGIN_LOADED = 'PluginManager.PluginLoaded'; + const CB_PLUGIN_UNLOADED = 'PluginManager.PluginUnloaded'; /* * Private Properties @@ -76,22 +78,26 @@ class PluginManager { } /** - * Deactivate the plugin with the given class + * Deactivate the Plugin with the given Class * * @param string $pluginClass * @return bool */ public function deactivatePlugin($pluginClass) { $pluginClass = $this->getPluginClass($pluginClass); + if (!$pluginClass) { + return false; + } if (!$this->isPluginActive($pluginClass)) { return false; } + + /** @var Plugin $plugin */ $plugin = $this->activePlugins[$pluginClass]; - /** - * @var Plugin $plugin - */ - $plugin->unload(); unset($this->activePlugins[$pluginClass]); + + $plugin->unload(); + if ($plugin instanceof CallbackListener) { $this->maniaControl->callbackManager->unregisterCallbackListener($plugin); $this->maniaControl->callbackManager->unregisterScriptCallbackListener($plugin); @@ -105,7 +111,11 @@ class PluginManager { if ($plugin instanceof TimerListener) { $this->maniaControl->timerManager->unregisterTimerListenings($plugin); } + $this->savePluginStatus($pluginClass, false); + + $this->maniaControl->callbackManager->triggerCallback(self::CB_PLUGIN_UNLOADED, $pluginClass, $plugin); + return true; } @@ -350,6 +360,9 @@ class PluginManager { $this->activePlugins[$pluginClass] = $plugin; $this->savePluginStatus($pluginClass, true); + + $this->maniaControl->callbackManager->triggerCallback(self::CB_PLUGIN_LOADED, $pluginClass, $plugin); + return true; }