From 45f3ec3511f11d9c027f7a0f5712007829f3a9c7 Mon Sep 17 00:00:00 2001 From: Thomas Steur <tsteur@users.noreply.github.com> Date: Sat, 25 Mar 2017 21:12:06 +1300 Subject: [PATCH] Premium Plugin Installer shows false error message after install (#11516) * fix #11512 Premium Plugin Installer shows false error message after install * better handling when a plugin was installed --- core/Plugin/Manager.php | 2 +- plugins/Marketplace/Controller.php | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/core/Plugin/Manager.php b/core/Plugin/Manager.php index b1e97f7f8b..72b9b9052a 100644 --- a/core/Plugin/Manager.php +++ b/core/Plugin/Manager.php @@ -502,7 +502,7 @@ class Manager Piwik::postEvent('PluginManager.pluginActivated', array($pluginName)); } - protected function isPluginInFilesystem($pluginName) + public function isPluginInFilesystem($pluginName) { $existingPlugins = $this->readPluginsDirectory(); $isPluginInFilesystem = array_search($pluginName, $existingPlugins) !== false; diff --git a/plugins/Marketplace/Controller.php b/plugins/Marketplace/Controller.php index d04e374f74..418c39dc42 100644 --- a/plugins/Marketplace/Controller.php +++ b/plugins/Marketplace/Controller.php @@ -318,17 +318,27 @@ class Controller extends \Piwik\Plugin\ControllerAdmin for ($i = 0; $i <= 10; $i++) { foreach ($paidPlugins as $index => $paidPlugin) { + if (empty($paidPlugin)) { + continue; + } + $pluginName = $paidPlugin['name']; if ($this->pluginManager->isPluginActivated($pluginName)) { - unset($paidPlugins[$index]); + // we do not use unset since it might skip a plugin afterwards when removing index + $paidPlugins[$index] = null; + continue; + } + + if (!$this->pluginManager->isPluginInFilesystem($pluginName)) { + $paidPlugins[$index] = null; continue; } if (empty($paidPlugin['require']) || !$dependency->hasDependencyToDisabledPlugin($paidPlugin['require'])) { - unset($paidPlugins[$index]); + $paidPlugins[$index] = null; try { $this->pluginManager->activatePlugin($pluginName); @@ -341,6 +351,8 @@ class Controller extends \Piwik\Plugin\ControllerAdmin } } } + + $paidPlugins = array_filter($paidPlugins); } if ($hasErrors) { -- GitLab