diff --git a/app/controllers/admin/plugin.php b/app/controllers/admin/plugin.php index bc073a867190bc01210b5e0ba38fbd596ab28e19..1be046dc5c89f3fda03ad92777c2d6d66b461750 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 f906842632f54f17e98a2affa1845983607daffe..7fd7d9b1fc99e95665bf5e02bde5cdb19a70c50c 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; }