diff --git a/core/Plugin/Manager.php b/core/Plugin/Manager.php index 8790175128b276eab753299f6f0ee4a09d52bb0f..ce491935ef6f47b95b38d4ea11f80f99181fa8f4 100644 --- a/core/Plugin/Manager.php +++ b/core/Plugin/Manager.php @@ -337,6 +337,8 @@ class Manager */ public function deactivatePlugin($pluginName) { + $this->clearCache($pluginName); + // execute deactivate() to let the plugin do cleanups $this->executePluginDeactivate($pluginName); @@ -344,8 +346,6 @@ class Manager $this->removePluginFromConfig($pluginName); - $this->clearCache($pluginName); - /** * Event triggered after a plugin has been deactivated. * diff --git a/tests/PHPUnit/Integration/Plugin/ManagerTest.php b/tests/PHPUnit/Integration/Plugin/ManagerTest.php index 83a41aa6e5daaa9bd0a0119a984b30e867ed42dc..d3fea6935c83ed893e0bb1400d073052b160625e 100644 --- a/tests/PHPUnit/Integration/Plugin/ManagerTest.php +++ b/tests/PHPUnit/Integration/Plugin/ManagerTest.php @@ -75,6 +75,15 @@ class ManagerTest extends IntegrationTestCase $this->assertEquals(array(), $this->manager->getLoadedPlugins()); } + public function test_deactivatePlugin() + { + $this->assertFalse($this->manager->isPluginActivated('ExampleTheme')); + $this->manager->activatePlugin('ExampleTheme'); + $this->assertTrue($this->manager->isPluginActivated('ExampleTheme')); + $this->manager->deactivatePlugin('ExampleTheme'); + $this->assertFalse($this->manager->isPluginActivated('ExampleTheme')); + } + private function getCacheForTrackerPlugins() { return PiwikCache::getEagerCache();