Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordiosmosis <diosmosis@users.noreply.github.com>2020-11-10 22:35:07 +0300
committerGitHub <noreply@github.com>2020-11-10 22:35:07 +0300
commitc65e3b755443561e2c29f5190dc4918b25203dc9 (patch)
tree2a247fcd972ed1160077eff0cc0356ff1443b5eb /core/Plugin/Manager.php
parent3c64683bf85aee739bc7aa18eeefe9dcf4c7896c (diff)
Keep track of last activate/deactivate date for plugins (#16683)
Diffstat (limited to 'core/Plugin/Manager.php')
-rw-r--r--core/Plugin/Manager.php26
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());
+ }
}