diff --git a/src/Core/Addon/AddonManagerHelper.php b/src/Core/Addon/AddonManagerHelper.php index 294f44d85b..a436c0e19b 100644 --- a/src/Core/Addon/AddonManagerHelper.php +++ b/src/Core/Addon/AddonManagerHelper.php @@ -153,7 +153,14 @@ final class AddonManagerHelper implements AddonHelper */ public function getVisibleEnabledAddons(): array { - return $this->proxy->getVisibleEnabledAddons(); + $visible_addons = []; + $addons = array_filter($this->config->get('addons') ?? []); + + foreach ($addons as $name => $data) { + $visible_addons[] = $name; + } + + return $visible_addons; } /** @@ -163,6 +170,17 @@ final class AddonManagerHelper implements AddonHelper */ public function getEnabledAddonsWithAdminSettings(): array { - return $this->proxy->getEnabledAddonsWithAdminSettings(); + $addons_admin = []; + $addons = array_filter($this->config->get('addons') ?? []); + + ksort($addons); + + foreach ($addons as $name => $data) { + if (array_key_exists('admin', $data) && $data['admin'] === true) { + $addons_admin[] = $name; + } + } + + return $addons_admin; } } diff --git a/tests/Unit/Core/Addon/AddonManagerHelperTest.php b/tests/Unit/Core/Addon/AddonManagerHelperTest.php index 9afdbb0cfd..7c8f817594 100644 --- a/tests/Unit/Core/Addon/AddonManagerHelperTest.php +++ b/tests/Unit/Core/Addon/AddonManagerHelperTest.php @@ -56,4 +56,46 @@ class AddonManagerHelperTest extends TestCase $this->assertSame(['helloaddon'], $addonManagerHelper->getEnabledAddons()); $this->assertTrue($addonManagerHelper->isAddonEnabled('helloaddon')); } + + public function testGetVisibleEnabledAddons(): void + { + $config = $this->createStub(IManageConfigValues::class); + $config->method('get')->willReturn([ + 'helloaddon' => [ + 'last_update' => 1738760499, + 'admin' => false, + ], + ]); + + $addonManagerHelper = new AddonManagerHelper( + __DIR__ . '/../../../Util/addons', + $config, + $this->createStub(Profiler::class) + ); + + $this->assertSame(['helloaddon'], $addonManagerHelper->getVisibleEnabledAddons()); + } + + public function testGetEnabledAddonsWithAdminSettings(): void + { + $config = $this->createStub(IManageConfigValues::class); + $config->method('get')->willReturn([ + 'helloaddon' => [ + 'last_update' => 1738760499, + 'admin' => false, + ], + 'addonwithadminsettings' => [ + 'last_update' => 1738760499, + 'admin' => true, + ], + ]); + + $addonManagerHelper = new AddonManagerHelper( + __DIR__ . '/../../../Util/addons', + $config, + $this->createStub(Profiler::class) + ); + + $this->assertSame(['addonwithadminsettings'], $addonManagerHelper->getEnabledAddonsWithAdminSettings()); + } }