Skip to content
Extraits de code Groupes Projets
Valider 4aec071a rédigé par diosmosis's avatar diosmosis
Parcourir les fichiers

Fixes #8110, make sure plugins are sorted correctly during tests. Moved plugin...

Fixes #8110, make sure plugins are sorted correctly during tests. Moved plugin sorting logic from Plugin\Manager to PluginList.
parent c6c18065
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -54,4 +54,32 @@ class PluginList ...@@ -54,4 +54,32 @@ class PluginList
$section = $this->settings->getIniFileChain()->getFrom($pathGlobal, 'Plugins'); $section = $this->settings->getIniFileChain()->getFrom($pathGlobal, 'Plugins');
return $section['Plugins']; return $section['Plugins'];
} }
/**
* Sorts an array of plugins in the order they should be loaded.
*
* @params string[] $plugins
* @return \string[]
*/
public function sortPlugins(array $plugins)
{
$global = $this->getPluginsBundledWithPiwik();
if (empty($global)) {
return $plugins;
}
$global = array_values($global);
$plugins = array_values($plugins);
$defaultPluginsLoadedFirst = array_intersect($global, $plugins);
$otherPluginsToLoadAfterDefaultPlugins = array_diff($plugins, $defaultPluginsLoadedFirst);
// sort by name to have a predictable order for those extra plugins
sort($otherPluginsToLoadAfterDefaultPlugins);
$sorted = array_merge($defaultPluginsLoadedFirst, $otherPluginsToLoadAfterDefaultPlugins);
return $sorted;
}
} }
...@@ -224,7 +224,7 @@ class Manager ...@@ -224,7 +224,7 @@ class Manager
*/ */
private function updatePluginsConfig($pluginsToLoad) private function updatePluginsConfig($pluginsToLoad)
{ {
$pluginsToLoad = $this->sortPluginsSameOrderAsGlobalConfig($pluginsToLoad); $pluginsToLoad = $this->pluginList->sortPlugins($pluginsToLoad);
$section = PiwikConfig::getInstance()->Plugins; $section = PiwikConfig::getInstance()->Plugins;
$section['Plugins'] = $pluginsToLoad; $section['Plugins'] = $pluginsToLoad;
PiwikConfig::getInstance()->Plugins = $section; PiwikConfig::getInstance()->Plugins = $section;
...@@ -1326,31 +1326,10 @@ class Manager ...@@ -1326,31 +1326,10 @@ class Manager
$pluginsToLoad = array_merge($pluginsToLoad, $this->pluginToAlwaysActivate); $pluginsToLoad = array_merge($pluginsToLoad, $this->pluginToAlwaysActivate);
} }
$pluginsToLoad = array_unique($pluginsToLoad); $pluginsToLoad = array_unique($pluginsToLoad);
$pluginsToLoad = $this->sortPluginsSameOrderAsGlobalConfig($pluginsToLoad); $pluginsToLoad = $this->pluginList->sortPlugins($pluginsToLoad);
return $pluginsToLoad; return $pluginsToLoad;
} }
private function sortPluginsSameOrderAsGlobalConfig(array $plugins)
{
$global = $this->getPluginsFromGlobalIniConfigFile();
if (empty($global)) {
return $plugins;
}
$global = array_values($global);
$plugins = array_values($plugins);
$defaultPluginsLoadedFirst = array_intersect($global, $plugins);
$otherPluginsToLoadAfterDefaultPlugins = array_diff($plugins, $defaultPluginsLoadedFirst);
// sort by name to have a predictable order for those extra plugins
sort($otherPluginsToLoadAfterDefaultPlugins);
$sorted = array_merge($defaultPluginsLoadedFirst, $otherPluginsToLoadAfterDefaultPlugins);
return $sorted;
}
public function loadPluginTranslations() public function loadPluginTranslations()
{ {
/** @var Translator $translator */ /** @var Translator $translator */
......
...@@ -22,7 +22,8 @@ class FakePluginList extends PluginList ...@@ -22,7 +22,8 @@ class FakePluginList extends PluginList
public function __construct(GlobalSettingsProvider $globalSettingsProvider, $plugins) public function __construct(GlobalSettingsProvider $globalSettingsProvider, $plugins)
{ {
parent::__construct($globalSettingsProvider); parent::__construct($globalSettingsProvider);
$this->plugins = $plugins;
$this->plugins = $this->sortPlugins($plugins);
} }
public function getActivatedPlugins() public function getActivatedPlugins()
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter