Create AddonHelper and proxy to check if addon is enabled

This commit is contained in:
Art4 2025-02-01 21:58:59 +00:00
parent f1dfa63764
commit 91bd6089b5
5 changed files with 61 additions and 1 deletions

View file

@ -0,0 +1,21 @@
<?php
// Copyright (C) 2010-2024, the Friendica project
// SPDX-FileCopyrightText: 2010-2024 the Friendica project
//
// SPDX-License-Identifier: AGPL-3.0-or-later
declare(strict_types=1);
namespace Friendica\Core\Addon;
/**
* Some functions to handle addons
*/
interface AddonHelper
{
/**
* Checks if the provided addon is enabled
*/
public function isEnabled(string $addonId): bool;
}

View file

@ -0,0 +1,28 @@
<?php
// Copyright (C) 2010-2024, the Friendica project
// SPDX-FileCopyrightText: 2010-2024 the Friendica project
//
// SPDX-License-Identifier: AGPL-3.0-or-later
declare(strict_types=1);
namespace Friendica\Core\Addon;
use Friendica\Core\Addon;
/**
* Proxy to the Addon class
*
* @internal
*/
final class AddonProxy implements AddonHelper
{
/**
* Checks if the provided addon is enabled
*/
public function isEnabled(string $addonId): bool
{
return Addon::isEnabled($addonId);
}
}

View file

@ -8,6 +8,7 @@
namespace Friendica;
use Dice\Dice;
use Friendica\Core\Addon\AddonHelper;
use Friendica\Core\Logger\Capability\ICheckLoggerSettings;
use Friendica\Core\Logger\LoggerManager;
use Friendica\Core\Logger\Util\LoggerSettingsCheck;
@ -280,6 +281,11 @@ abstract class DI
return self::$dice->create(Core\Storage\Repository\StorageManager::class);
}
public static function addonHelper(): AddonHelper
{
return self::$dice->create(AddonHelper::class);
}
/**
* @return \Friendica\Core\System
*/

View file

@ -35,8 +35,10 @@ class Index extends BaseAdmin
break;
case 'toggle' :
$addonHelper = DI::addonHelper();
$addon = $_GET['addon'] ?? '';
if (Addon::isEnabled($addon)) {
if ($addonHelper->isEnabled($addon)) {
Addon::uninstall($addon);
DI::sysmsg()->addInfo(DI::l10n()->t('Addon %s disabled.', $addon));
} elseif (Addon::install($addon)) {

View file

@ -42,6 +42,9 @@ return (function(string $basepath, array $getVars, array $serverVars, array $coo
[Dice::INSTANCE => Dice::SELF],
],
],
\Friendica\Core\Addon\AddonHelper::class => [
'instanceOf' => \Friendica\Core\Addon\AddonProxy::class,
],
\Friendica\Util\BasePath::class => [
'constructParams' => [
$basepath,