From 00b0a955afda1cd16c0fd3452b989fe79e95a20b Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms <tleilax+studip@gmail.com> Date: Thu, 12 Dec 2024 09:55:28 +0000 Subject: [PATCH] move sorting to plugin administration and use it in both register actions, fixes #4993 Closes #4993 Merge request studip/studip!3747 --- app/controllers/admin/plugin.php | 9 +++------ lib/classes/PluginAdministration.php | 10 +++++++++- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/app/controllers/admin/plugin.php b/app/controllers/admin/plugin.php index bc073a86719..1be046dc5c8 100644 --- a/app/controllers/admin/plugin.php +++ b/app/controllers/admin/plugin.php @@ -16,7 +16,7 @@ class Admin_PluginController extends AuthenticatedController { - private $plugin_admin; + private PluginAdministration $plugin_admin; /** * Common tasks for all actions. @@ -509,10 +509,7 @@ class Admin_PluginController extends AuthenticatedController public function unregistered_action() { - $plugins = $this->plugin_admin->scanPluginDirectory(); - usort($plugins, function ($a, $b) { - return $a['pluginname'] <=> $b['pluginname']; - }); + $plugins = $this->plugin_admin->scanPluginDirectory(true); $this->unknown_plugins = $plugins; } @@ -525,7 +522,7 @@ class Admin_PluginController extends AuthenticatedController public function register_action($number) { CSRFProtection::verifyUnsafeRequest(); - $unknown_plugins = $this->plugin_admin->scanPluginDirectory(); + $unknown_plugins = $this->plugin_admin->scanPluginDirectory(true); $plugin = $unknown_plugins[$number]; try { diff --git a/lib/classes/PluginAdministration.php b/lib/classes/PluginAdministration.php index f906842632f..7fd7d9b1fc9 100644 --- a/lib/classes/PluginAdministration.php +++ b/lib/classes/PluginAdministration.php @@ -399,7 +399,7 @@ class PluginAdministration * * @return array with manifest meta data */ - public function scanPluginDirectory() + public function scanPluginDirectory(bool $sort = false) { $found = []; $basepath = Config::get()->PLUGINS_PATH; @@ -423,6 +423,14 @@ class PluginAdministration $found[] = $manifest; } } + + if ($sort) { + usort( + $found, + fn($a, $b) => $a['pluginname'] <=> $b['pluginname'] + ); + } + return $found; } -- GitLab