Skip to content
Extraits de code Groupes Projets
Valider a513c0e7 rédigé par Thomas Steur's avatar Thomas Steur
Parcourir les fichiers

fix uninstall plugin only removes plugin files from filesystem but not config...

fix uninstall plugin only removes plugin files from filesystem but not config entry and database entry
parent ea655328
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -13,6 +13,7 @@ namespace Piwik; ...@@ -13,6 +13,7 @@ namespace Piwik;
use Piwik\Plugin\MetadataLoader; use Piwik\Plugin\MetadataLoader;
use Piwik\Translate; use Piwik\Translate;
use Piwik\Option;
require_once PIWIK_INCLUDE_PATH . '/core/EventDispatcher.php'; require_once PIWIK_INCLUDE_PATH . '/core/EventDispatcher.php';
...@@ -201,6 +202,16 @@ class PluginsManager ...@@ -201,6 +202,16 @@ class PluginsManager
throw new \Exception("You are trying to uninstall the plugin $pluginName but it was not found in the directory piwik/plugins/"); throw new \Exception("You are trying to uninstall the plugin $pluginName but it was not found in the directory piwik/plugins/");
} }
self::deletePluginFromFilesystem($pluginName); self::deletePluginFromFilesystem($pluginName);
$this->removePluginFromPluginsConfig($pluginName);
$this->removePluginFromPluginsInstalledConfig($pluginName);
$this->removePluginFromTrackerConfig($pluginName);
Option::getInstance()->delete('version_' . $pluginName);
Config::getInstance()->forceSave();
Filesystem::deleteAllCacheOnUpdate();
if($this->isPluginInFilesystem($pluginName)) { if($this->isPluginInFilesystem($pluginName)) {
return false; return false;
} }
...@@ -221,29 +232,17 @@ class PluginsManager ...@@ -221,29 +232,17 @@ class PluginsManager
*/ */
public function deactivatePlugin($pluginName, $plugins = false) public function deactivatePlugin($pluginName, $plugins = false)
{ {
if(empty($plugins)) { if (empty($plugins)) {
$plugins = $this->pluginsToLoad; $plugins = $this->pluginsToLoad;
} }
$key = array_search($pluginName, $plugins);
$plugin = $this->loadPlugin($pluginName); $plugin = $this->loadPlugin($pluginName);
if ($plugin !== null) { if ($plugin !== null) {
$plugin->deactivate(); $plugin->deactivate();
} }
if ($key !== false) { $this->removePluginFromPluginsConfig($pluginName, $plugins);
unset($plugins[$key]); $this->removePluginFromTrackerConfig($pluginName);
}
$this->updatePluginsConfig($plugins);
$pluginsTracker = Config::getInstance()->Plugins_Tracker['Plugins_Tracker'];
if (!is_null($pluginsTracker)) {
$key = array_search($pluginName, $pluginsTracker);
if ($key !== false) {
unset($pluginsTracker[$key]);
$this->updatePluginsTrackerConfig($pluginsTracker);
}
}
Config::getInstance()->forceSave(); Config::getInstance()->forceSave();
Filesystem::deleteAllCacheOnUpdate(); Filesystem::deleteAllCacheOnUpdate();
...@@ -811,6 +810,55 @@ class PluginsManager ...@@ -811,6 +810,55 @@ class PluginsManager
return file_exists($path . "/" . $name . ".php") return file_exists($path . "/" . $name . ".php")
|| self::isManifestFileFound($path); || self::isManifestFileFound($path);
} }
/**
* @param $pluginName
*/
private function removePluginFromPluginsInstalledConfig($pluginName)
{
$pluginsInstalled = Config::getInstance()->PluginsInstalled['PluginsInstalled'];
$key = array_search($pluginName, $pluginsInstalled);
if ($key !== false) {
unset($pluginsInstalled[$key]);
}
$this->updatePluginsInstalledConfig($pluginsInstalled);
}
/**
* @param $pluginName
* @param $plugins
* @return mixed
*/
private function removePluginFromPluginsConfig($pluginName, $plugins = false)
{
if (empty($plugins)) {
$plugins = $this->pluginsToLoad;
}
$key = array_search($pluginName, $plugins);
if ($key !== false) {
unset($plugins[$key]);
}
$this->updatePluginsConfig($plugins);
}
/**
* @param $pluginName
*/
private function removePluginFromTrackerConfig($pluginName)
{
$pluginsTracker = Config::getInstance()->Plugins_Tracker['Plugins_Tracker'];
if (!is_null($pluginsTracker)) {
$key = array_search($pluginName, $pluginsTracker);
if ($key !== false) {
unset($pluginsTracker[$key]);
$this->updatePluginsTrackerConfig($pluginsTracker);
}
}
}
} }
/** /**
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter