diff options
author | diosmosis <diosmosis@users.noreply.github.com> | 2020-11-10 22:35:07 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-10 22:35:07 +0300 |
commit | c65e3b755443561e2c29f5190dc4918b25203dc9 (patch) | |
tree | 2a247fcd972ed1160077eff0cc0356ff1443b5eb /core/Plugin/Manager.php | |
parent | 3c64683bf85aee739bc7aa18eeefe9dcf4c7896c (diff) |
Keep track of last activate/deactivate date for plugins (#16683)
Diffstat (limited to 'core/Plugin/Manager.php')
-rw-r--r-- | core/Plugin/Manager.php | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/core/Plugin/Manager.php b/core/Plugin/Manager.php index 67ba2bf6e1..f12c5ce88e 100644 --- a/core/Plugin/Manager.php +++ b/core/Plugin/Manager.php @@ -16,12 +16,14 @@ use Piwik\Common; use Piwik\Config; use Piwik\Config as PiwikConfig; use Piwik\Container\StaticContainer; +use Piwik\Date; use Piwik\Development; use Piwik\EventDispatcher; use Piwik\Exception\PluginDeactivatedException; use Piwik\Filesystem; use Piwik\Log; use Piwik\Notification; +use Piwik\Option; use Piwik\Piwik; use Piwik\Plugin; use Piwik\Plugin\Dimension\ActionDimension; @@ -39,6 +41,9 @@ use Piwik\Updater; */ class Manager { + const LAST_PLUGIN_ACTIVATION_TIME_OPTION_PREFIX = 'LastPluginActivation.'; + const LAST_PLUGIN_DEACTIVATION_TIME_OPTION_PREFIX = 'LastPluginDeactivation.'; + /** * @return self */ @@ -512,10 +517,17 @@ class Manager */ public function deactivatePlugin($pluginName) { + $plugins = $this->pluginList->getActivatedPlugins(); + if (!in_array($pluginName, $plugins)) { + // plugin is already deactivated + return; + } + $this->clearCache($pluginName); // execute deactivate() to let the plugin do cleanups $this->executePluginDeactivate($pluginName); + $this->savePluginDeactivationTime($pluginName); $this->unloadPluginFromMemory($pluginName); @@ -680,6 +692,8 @@ class Manager $this->installPluginIfNecessary($plugin); $plugin->activate(); + $this->savePluginActivationTime($pluginName); + EventDispatcher::getInstance()->postPendingEventsTo($plugin); $this->pluginsToLoad[] = $pluginName; @@ -1654,5 +1668,17 @@ class Manager $translator->addDirectory(self::getPluginDirectory($pluginName) . '/lang'); } } + + private function savePluginActivationTime($pluginName) + { + $optionName = self::LAST_PLUGIN_ACTIVATION_TIME_OPTION_PREFIX . $pluginName; + Option::set($optionName, time()); + } + + private function savePluginDeactivationTime($pluginName) + { + $optionName = self::LAST_PLUGIN_DEACTIVATION_TIME_OPTION_PREFIX . $pluginName; + Option::set($optionName, time()); + } } |