From a80bf0ddf1d86c38019b102e892d9e93116ec0df Mon Sep 17 00:00:00 2001 From: Art4 Date: Tue, 4 Feb 2025 13:48:04 +0000 Subject: [PATCH] Simplify AddonHelper::getAvailableAddons(), move style logic into Module class --- src/Console/Addon.php | 3 +-- src/Core/Addon/AddonHelper.php | 5 +++-- src/Core/Addon/AddonProxy.php | 12 +++++++++--- src/Module/Admin/Addons/Index.php | 18 +++++++++++++++++- 4 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/Console/Addon.php b/src/Console/Addon.php index 689359f968..c279ef2976 100644 --- a/src/Console/Addon.php +++ b/src/Console/Addon.php @@ -124,8 +124,7 @@ HELP; return false; } - foreach ($this->addonHelper->getAvailableAddons() as $addon) { - $addonId = $addon[0]; + foreach ($this->addonHelper->getAvailableAddons() as $addonId) { $enabled = $this->addonHelper->isAddonEnabled($addonId); if ($subCmd === 'all') { diff --git a/src/Core/Addon/AddonHelper.php b/src/Core/Addon/AddonHelper.php index 47962692f8..84b0c5f89d 100644 --- a/src/Core/Addon/AddonHelper.php +++ b/src/Core/Addon/AddonHelper.php @@ -22,11 +22,12 @@ interface AddonHelper public function getAddonPath(): string; /** - * Returns the list of available addons with their current status and info. + * Returns the list of available addons. + * * This list is made from scanning the addon/ folder. * Unsupported addons are excluded unless they already are enabled or system.show_unsupported_addon is set. * - * @return array> + * @return string[] */ public function getAvailableAddons(): array; diff --git a/src/Core/Addon/AddonProxy.php b/src/Core/Addon/AddonProxy.php index 360a54ff06..31f9fa90af 100644 --- a/src/Core/Addon/AddonProxy.php +++ b/src/Core/Addon/AddonProxy.php @@ -36,15 +36,21 @@ final class AddonProxy implements AddonHelper } /** - * Returns the list of available addons with their current status and info. + * Returns the list of available addons. + * * This list is made from scanning the addon/ folder. * Unsupported addons are excluded unless they already are enabled or system.show_unsupported_addon is set. * - * @return array> + * @return string[] */ public function getAvailableAddons(): array { - return Addon::getAvailableList(); + return array_map( + function(array $item) { + return $item[0]; + }, + Addon::getAvailableList() + ); } /** diff --git a/src/Module/Admin/Addons/Index.php b/src/Module/Admin/Addons/Index.php index 3d3e6a810d..6bc0d0fa1d 100644 --- a/src/Module/Admin/Addons/Index.php +++ b/src/Module/Admin/Addons/Index.php @@ -54,7 +54,23 @@ class Index extends BaseAdmin DI::baseUrl()->redirect('admin/addons'); } - $addons = $addonHelper->getAvailableAddons(); + $addons = []; + + foreach ($addonHelper->getAvailableAddons() as $addonId) { + $addonInfo = $addonHelper->getAddonInfo($addonId); + + $info = [ + 'name' => $addonInfo->getName(), + 'description' => $addonInfo->getDescription(), + 'version' => $addonInfo->getVersion(), + ]; + + $addons[] = [ + $addonId, + ($addonHelper->isAddonEnabled($addonId) ? 'on' : 'off'), + $info, + ]; + } $t = Renderer::getMarkupTemplate('admin/addons/index.tpl'); return Renderer::replaceMacros($t, [