]> git.mxchange.org Git - friendica.git/commitdiff
implement getVisibleEnablesAddons and getEnabledAddonsWithAdminSettings
authorArt4 <art4@wlabs.de>
Tue, 13 May 2025 14:16:10 +0000 (14:16 +0000)
committerArt4 <art4@wlabs.de>
Tue, 13 May 2025 14:16:10 +0000 (14:16 +0000)
src/Core/Addon/AddonManagerHelper.php
tests/Unit/Core/Addon/AddonManagerHelperTest.php

index 294f44d85b5a0038de4d8fc5a95f6c8e94082655..a436c0e19bc0d3455ad6922665a557b164c6e013 100644 (file)
@@ -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;
        }
 }
index 9afdbb0cfd04daf42cddc0c0451f7ac41eabf6dc..7c8f817594ef806766c1e94b847f8092e3c8917d 100644 (file)
@@ -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());
+       }
 }