From 9663a0143df5d1a6097c48c990636bd8cbb28d83 Mon Sep 17 00:00:00 2001
From: mattab <matthieu.aubry@gmail.com>
Date: Thu, 10 Apr 2014 17:41:12 +1200
Subject: [PATCH] Fix bug when a plugin is deactivated within the Tracker
 process. It used to set the Plugins[] array to PluginsTracker[] since it was
 using pluginsToLoad (and in Tracker only tracking plugins are loaded)

---
 core/Plugin/Manager.php | 21 +++++++++++++++++----
 core/Version.php        |  2 +-
 tests/PHPUnit/UI        |  2 +-
 3 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/core/Plugin/Manager.php b/core/Plugin/Manager.php
index 924954b4a6..9a213ec29c 100644
--- a/core/Plugin/Manager.php
+++ b/core/Plugin/Manager.php
@@ -179,10 +179,10 @@ class Manager extends Singleton
      *
      * @param array $plugins Plugins
      */
-    private function updatePluginsConfig()
+    private function updatePluginsConfig($pluginsToLoad)
     {
         $section = PiwikConfig::getInstance()->Plugins;
-        $section['Plugins'] = $this->pluginsToLoad;
+        $section['Plugins'] = $pluginsToLoad;
         PiwikConfig::getInstance()->Plugins = $section;
     }
 
@@ -394,7 +394,7 @@ class Manager extends Singleton
 
         $this->pluginsToLoad[] = $pluginName;
 
-        $this->updatePluginsConfig();
+        $this->updatePluginsConfig($this->pluginsToLoad);
         PiwikConfig::getInstance()->forceSave();
 
         $this->clearCache($pluginName);
@@ -1075,6 +1075,19 @@ class Manager extends Singleton
         $this->updatePluginsInstalledConfig($pluginsInstalled);
     }
 
+    /**
+     * @param $pluginName
+     */
+    private function removePluginFromPluginsConfig($pluginName)
+    {
+        $pluginsEnabled = PiwikConfig::getInstance()->Plugins['Plugins'];
+        $key = array_search($pluginName, $pluginsEnabled);
+        if ($key !== false) {
+            unset($pluginsEnabled[$key]);
+        }
+        $this->updatePluginsConfig($pluginsEnabled);
+    }
+
     private function removePluginFromTrackerConfig($pluginName)
     {
         $pluginsTracker = PiwikConfig::getInstance()->Plugins_Tracker['Plugins_Tracker'];
@@ -1166,7 +1179,7 @@ class Manager extends Singleton
      */
     private function removePluginFromConfig($pluginName)
     {
-        $this->updatePluginsConfig();
+        $this->removePluginFromPluginsConfig($pluginName);
         $this->removePluginFromTrackerConfig($pluginName);
         PiwikConfig::getInstance()->forceSave();
     }
diff --git a/core/Version.php b/core/Version.php
index 0f09affc28..2a2ab3727b 100644
--- a/core/Version.php
+++ b/core/Version.php
@@ -21,5 +21,5 @@ final class Version
      * The current Piwik version.
      * @var string
      */
-    const VERSION = '2.2.0-b18';
+    const VERSION = '2.2.0-b19';
 }
diff --git a/tests/PHPUnit/UI b/tests/PHPUnit/UI
index 9d2267f0b3..7097a433d7 160000
--- a/tests/PHPUnit/UI
+++ b/tests/PHPUnit/UI
@@ -1 +1 @@
-Subproject commit 9d2267f0b3c88a98a8e780d79c170cd6803fab80
+Subproject commit 7097a433d7fdd363adfba18971a16d738287b972
-- 
GitLab