]> git.mxchange.org Git - friendica.git/commitdiff
Implement getAvailableAddons
authorArt4 <art4@wlabs.de>
Wed, 14 May 2025 07:52:53 +0000 (07:52 +0000)
committerArt4 <art4@wlabs.de>
Wed, 14 May 2025 07:52:53 +0000 (07:52 +0000)
src/Core/Addon/AddonManagerHelper.php
tests/Unit/Core/Addon/AddonManagerHelperTest.php

index a436c0e19bc0d3455ad6922665a557b164c6e013..66f22bf904db836e9ebf351512c38ab0620b17a3 100644 (file)
@@ -62,7 +62,33 @@ final class AddonManagerHelper implements AddonHelper
         */
        public function getAvailableAddons(): array
        {
-               return $this->proxy->getAvailableAddons();
+               $files = glob($this->getAddonPath() . '/*/');
+
+               if (!is_array($files)) {
+                       return [];
+               }
+
+               $addons = [];
+
+               foreach ($files as $file) {
+                       if (!is_dir($file)) {
+                               continue;
+                       }
+
+                       $addonId = basename($file);
+
+                       $addonInfo = $this->getAddonInfo($addonId);
+
+                       if (
+                               $this->config->get('system', 'show_unsupported_addons')
+                               || strtolower($addonInfo->getStatus()) !== 'unsupported'
+                               || $this->isAddonEnabled($addonId)
+                       ) {
+                               $addons[] = $addonId;
+                       }
+               }
+
+               return $addons;
        }
 
        /**
index 7c8f817594ef806766c1e94b847f8092e3c8917d..646498784567013f4dc3d42143a3d44832282052 100644 (file)
@@ -98,4 +98,15 @@ class AddonManagerHelperTest extends TestCase
 
                $this->assertSame(['addonwithadminsettings'], $addonManagerHelper->getEnabledAddonsWithAdminSettings());
        }
+
+       public function testGetAvailableAddons(): void
+       {
+               $addonManagerHelper = new AddonManagerHelper(
+                       __DIR__ . '/../../../Util/addons',
+                       $this->createStub(originalClassName: IManageConfigValues::class),
+                       $this->createStub(Profiler::class)
+               );
+
+               $this->assertSame(['helloaddon'], $addonManagerHelper->getAvailableAddons());
+       }
 }