From f96c0f12e80428e912ba730f420da15ddd232ee4 Mon Sep 17 00:00:00 2001
From: mattab <matthieu.aubry@gmail.com>
Date: Mon, 3 Mar 2014 14:38:34 +1300
Subject: [PATCH] Fixes #4357 Merging branch into master, let's see if the
 build stays green

---
 core/ArchiveProcessor/PluginsArchiver.php        |  2 +-
 core/EventDispatcher.php                         |  2 +-
 core/Plugin/Manager.php                          | 16 ++++++++++++++--
 tests/LocalTracker.php                           |  2 +-
 tests/PHPUnit/Core/TaskSchedulerTest.php         |  8 ++++----
 tests/PHPUnit/DatabaseTestCase.php               |  1 -
 .../Integration/Plugins/MobileMessagingTest.php  |  4 ++--
 .../Integration/Plugins/ScheduledReportsTest.php |  4 ++--
 8 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/core/ArchiveProcessor/PluginsArchiver.php b/core/ArchiveProcessor/PluginsArchiver.php
index cfccad3583..56096079ea 100644
--- a/core/ArchiveProcessor/PluginsArchiver.php
+++ b/core/ArchiveProcessor/PluginsArchiver.php
@@ -121,7 +121,7 @@ class PluginsArchiver
     protected function getPluginArchivers()
     {
         if (empty(static::$archivers)) {
-            $pluginNames = \Piwik\Plugin\Manager::getInstance()->getActivatedPlugins();
+            $pluginNames = \Piwik\Plugin\Manager::getInstance()->getActivatedAndLoadedPlugins();
             $archivers = array();
             foreach ($pluginNames as $pluginName) {
                 $archivers[$pluginName] = self::getPluginArchiverClass($pluginName);
diff --git a/core/EventDispatcher.php b/core/EventDispatcher.php
index b884505177..ba6365d9f2 100644
--- a/core/EventDispatcher.php
+++ b/core/EventDispatcher.php
@@ -64,7 +64,7 @@ class EventDispatcher extends Singleton
         }
 
         if (empty($plugins)) {
-            $plugins = \Piwik\Plugin\Manager::getInstance()->getLoadedPlugins();
+            $plugins = \Piwik\Plugin\Manager::getInstance()->getActivatedAndLoadedPlugins();
         }
 
         $callbacks = array();
diff --git a/core/Plugin/Manager.php b/core/Plugin/Manager.php
index df7b3e7347..ed7a80297a 100644
--- a/core/Plugin/Manager.php
+++ b/core/Plugin/Manager.php
@@ -637,9 +637,21 @@ class Manager extends Singleton
      *
      * @return string[]
      */
-    public function getActivatedPlugins()
+    public function getActivatedAndLoadedPlugins()
     {
-        return $this->pluginsToLoad;
+        $activatedPlugins = $this->pluginsToLoad;
+
+        $plugins = array();
+        foreach ($activatedPlugins as $activatedPlugin) {
+
+            if ($activatedPlugin
+                && $this->isPluginLoaded($activatedPlugin)) {
+
+                $plugins[] = $activatedPlugin;
+            }
+        }
+
+        return $plugins;
     }
 
     /**
diff --git a/tests/LocalTracker.php b/tests/LocalTracker.php
index d8ca29ea44..3bd3d831ad 100755
--- a/tests/LocalTracker.php
+++ b/tests/LocalTracker.php
@@ -55,7 +55,7 @@ class Piwik_LocalTracker extends PiwikTracker
         $pluginsTracker = Config::getInstance()->Plugins_Tracker['Plugins_Tracker'];
         $oldTrackerConfig = Config::getInstance()->Tracker;
 
-        \Piwik\Plugin\Manager::getInstance()->unloadPlugins();
+        //\Piwik\Plugin\Manager::getInstance()->unloadPlugins();
 
         // modify config
         $GLOBALS['PIWIK_TRACKER_MODE'] = true;
diff --git a/tests/PHPUnit/Core/TaskSchedulerTest.php b/tests/PHPUnit/Core/TaskSchedulerTest.php
index c6f937a6c3..4a47071baf 100644
--- a/tests/PHPUnit/Core/TaskSchedulerTest.php
+++ b/tests/PHPUnit/Core/TaskSchedulerTest.php
@@ -280,6 +280,10 @@ class TaskSchedulerTest extends PHPUnit_Framework_TestCase
         $plugins = \Piwik\Plugin\Manager::getInstance()->getLoadedPlugins();
         $plugins = array_map(function ($p) { return $p->getPluginName(); }, $plugins);
 
+        // stub the piwik option object to control the returned option value
+        self::stubPiwikOption(serialize($timetableBeforeTaskExecution));
+        TaskScheduler::unsetInstance();
+
         \Piwik\Plugin\Manager::getInstance()->unloadPlugins();
         
         // make sure the get tasks event returns our configured tasks
@@ -287,10 +291,6 @@ class TaskSchedulerTest extends PHPUnit_Framework_TestCase
             $tasks = $configuredTasks;
         });
 
-        // stub the piwik option object to control the returned option value
-        self::stubPiwikOption(serialize($timetableBeforeTaskExecution));
-        TaskScheduler::unsetInstance();
-
         // execute tasks
         $executionResults = TaskScheduler::runTasks();
 
diff --git a/tests/PHPUnit/DatabaseTestCase.php b/tests/PHPUnit/DatabaseTestCase.php
index 1c0968539c..333971b8e1 100644
--- a/tests/PHPUnit/DatabaseTestCase.php
+++ b/tests/PHPUnit/DatabaseTestCase.php
@@ -48,7 +48,6 @@ class DatabaseTestCase extends PHPUnit_Framework_TestCase
             Db::createDatabaseObject();
             DbHelper::createTables();
 
-//            \Piwik\Manager::getInstance()->loadPlugins(array());
             IntegrationTestCase::loadAllPlugins();
 
         } catch (Exception $e) {
diff --git a/tests/PHPUnit/Integration/Plugins/MobileMessagingTest.php b/tests/PHPUnit/Integration/Plugins/MobileMessagingTest.php
index 4bbb959f86..e81f0790f4 100644
--- a/tests/PHPUnit/Integration/Plugins/MobileMessagingTest.php
+++ b/tests/PHPUnit/Integration/Plugins/MobileMessagingTest.php
@@ -34,7 +34,7 @@ class Plugins_MobileMessagingTest extends DatabaseTestCase
 
         $this->idSiteAccess = APISitesManager::getInstance()->addSite("test", "http://test");
 
-        \Piwik\Plugin\Manager::getInstance()->loadPlugins(array('ScheduledReports', 'MobileMessaging', 'MultiSites'));
+        \Piwik\Plugin\Manager::getInstance()->loadPlugins(array('ScheduledReports', 'MobileMessaging', 'MultiSites', 'LanguagesManager'));
         \Piwik\Plugin\Manager::getInstance()->installLoadedPlugins();
     }
 
@@ -47,7 +47,7 @@ class Plugins_MobileMessagingTest extends DatabaseTestCase
     public function testWarnUserViaSMSMultiSitesDeactivated()
     {
         // safety net
-        \Piwik\Plugin\Manager::getInstance()->loadPlugins(array('ScheduledReports', 'MobileMessaging'));
+        \Piwik\Plugin\Manager::getInstance()->loadPlugins(array('ScheduledReports', 'MobileMessaging', 'LanguagesManager'));
         $this->assertFalse(\Piwik\Plugin\Manager::getInstance()->isPluginActivated('MultiSites'));
 
         $APIScheduledReports = APIScheduledReports::getInstance();
diff --git a/tests/PHPUnit/Integration/Plugins/ScheduledReportsTest.php b/tests/PHPUnit/Integration/Plugins/ScheduledReportsTest.php
index 44da874c37..99dd590624 100644
--- a/tests/PHPUnit/Integration/Plugins/ScheduledReportsTest.php
+++ b/tests/PHPUnit/Integration/Plugins/ScheduledReportsTest.php
@@ -34,7 +34,7 @@ class Plugins_ScheduledReportsTest extends DatabaseTestCase
 
         // setup the access layer
         self::setSuperUser();
-        \Piwik\Plugin\Manager::getInstance()->loadPlugins(array('API', 'UserCountry', 'ScheduledReports', 'MobileMessaging'));
+        \Piwik\Plugin\Manager::getInstance()->loadPlugins(array('API', 'UserCountry', 'ScheduledReports', 'MobileMessaging', 'LanguagesManager'));
         \Piwik\Plugin\Manager::getInstance()->installLoadedPlugins();
 
         APISitesManager::getInstance()->addSite("Test", array("http://piwik.net"));
@@ -200,7 +200,7 @@ class Plugins_ScheduledReportsTest extends DatabaseTestCase
     public function testGetTopMenuTranslationKeyMobileMessagingInactive()
     {
         // unload MobileMessaging plugin
-        \Piwik\Plugin\Manager::getInstance()->loadPlugins(array('ScheduledReports'));
+        \Piwik\Plugin\Manager::getInstance()->loadPlugins(array('ScheduledReports', 'LanguagesManager'));
 
         $pdfReportPlugin = new ScheduledReports();
         $this->assertEquals(
-- 
GitLab