diff --git a/src/Core/Addon.php b/src/Core/Addon.php index a922c378f6..32b832794a 100644 --- a/src/Core/Addon.php +++ b/src/Core/Addon.php @@ -66,6 +66,8 @@ class Addon * Returns a list of addons that can be configured at the node level. * The list is formatted for display in the admin panel aside. * + * @deprecated 2025.02 Use `Friendica\Core\Addon\AddonHelper::getEnabledAddonsWithAdminSettings()` instead + * * @return array * @throws \Exception */ diff --git a/src/Core/Addon/AddonHelper.php b/src/Core/Addon/AddonHelper.php index 63f32a3ae7..c0b0c0f9c5 100644 --- a/src/Core/Addon/AddonHelper.php +++ b/src/Core/Addon/AddonHelper.php @@ -30,7 +30,7 @@ interface AddonHelper * * @return bool true on success or false on failure */ - public function installAdodn(string $addonId): bool; + public function installAddon(string $addonId): bool; /** * Uninstalls an addon. @@ -66,5 +66,12 @@ interface AddonHelper * * @return string[] */ - public static function getVisibleEnabledAddons(): array; + public function getVisibleEnabledAddons(): array; + + /** + * Returns a list with the IDs of the enabled addons that provides admin settings. + * + * @return string[] + */ + public function getEnabledAddonsWithAdminSettings(): array; } diff --git a/src/Core/Addon/AddonProxy.php b/src/Core/Addon/AddonProxy.php index ded52e8c29..335505637d 100644 --- a/src/Core/Addon/AddonProxy.php +++ b/src/Core/Addon/AddonProxy.php @@ -37,7 +37,7 @@ final class AddonProxy implements AddonHelper * * @return bool true on success or false on failure */ - public function installAdodn(string $addonId): bool + public function installAddon(string $addonId): bool { return Addon::install($addonId); } @@ -96,8 +96,18 @@ final class AddonProxy implements AddonHelper * * @return string[] */ - public static function getVisibleEnabledAddons(): array + public function getVisibleEnabledAddons(): array { return Addon::getVisibleList(); } + + /** + * Returns a list with the IDs of the enabled addons that provides admin settings. + * + * @return string[] + */ + public function getEnabledAddonsWithAdminSettings(): array + { + return array_keys(Addon::getAdminList()); + } } diff --git a/src/Module/Admin/Addons/Details.php b/src/Module/Admin/Addons/Details.php index 65b51e0ee5..12fb71b59e 100644 --- a/src/Module/Admin/Addons/Details.php +++ b/src/Module/Admin/Addons/Details.php @@ -8,7 +8,6 @@ namespace Friendica\Module\Admin\Addons; use Friendica\Content\Text\Markdown; -use Friendica\Core\Addon; use Friendica\Core\Renderer; use Friendica\DI; use Friendica\Module\BaseAdmin; @@ -44,8 +43,6 @@ class Details extends BaseAdmin $addonHelper = DI::addonHelper(); - $addons_admin = Addon::getAdminList(); - $addon = Strings::sanitizeFilePathItem($this->parameters['addon']); if (!is_file("addon/$addon/$addon.php")) { DI::sysmsg()->addNotice(DI::l10n()->t('Addon not found.')); @@ -61,7 +58,7 @@ class Details extends BaseAdmin $addonHelper->uninstallAddon($addon); DI::sysmsg()->addInfo(DI::l10n()->t('Addon %s disabled.', $addon)); } else { - $addonHelper->installAdodn($addon); + $addonHelper->installAddon($addon); DI::sysmsg()->addInfo(DI::l10n()->t('Addon %s enabled.', $addon)); } @@ -84,8 +81,10 @@ class Details extends BaseAdmin $readme = '
' . file_get_contents("addon/$addon/README") . ''; } + $addons_admin = $addonHelper->getEnabledAddonsWithAdminSettings(); + $admin_form = ''; - if (array_key_exists($addon, $addons_admin)) { + if (in_array($addon, $addons_admin)) { require_once "addon/$addon/$addon.php"; $func = $addon . '_addon_admin'; $func($admin_form);