use Friendica\Capabilities\ICanCreateResponses;
use Friendica\Capabilities\ICanHandleRequests;
use Friendica\Content\Nav;
+use Friendica\Core\Addon\AddonHelper;
use Friendica\Core\Addon\Capability\ICanLoadAddons;
use Friendica\Core\Config\Factory\Config;
use Friendica\Core\Container;
$this->container->create(IManagePersonalConfigValues::class),
$this->container->create(Page::class),
$this->container->create(Nav::class),
+ $this->container->create(AddonHelper::class),
$this->container->create(ModuleHTTPException::class),
$start_time,
$request
IManagePersonalConfigValues $pconfig,
Page $page,
Nav $nav,
+ AddonHelper $addonHelper,
ModuleHTTPException $httpException,
float $start_time,
ServerRequestInterface $request
// but we need "view" module for stylesheet
if ($this->mode->isInstall() && $moduleName !== 'install') {
$this->baseURL->redirect('install');
- } else {
- Core\Update::check($this->appHelper->getBasePath(), false);
- Core\Addon::loadAddons();
- Core\Hook::loadHooks();
}
+ Core\Update::check($this->appHelper->getBasePath(), false);
+ $addonHelper->loadAddons();
+ Core\Hook::loadHooks();
+
// Compatibility with Hubzilla
if ($moduleName == 'rpost') {
$this->baseURL->redirect('compose');
use Console_Table;
use Friendica\App\Mode;
use Friendica\Core\L10n;
-use Friendica\Core\Addon as AddonCore;
use Friendica\Core\Addon\AddonHelper;
use Friendica\Database\Database;
use Friendica\Util\Strings;
$this->dba = $dba;
$this->addonHelper = $addonHelper;
- AddonCore::loadAddons();
+ $this->addonHelper->loadAddons();
}
protected function doExecute(): int
use Asika\SimpleConsole\Console;
use Friendica\App\Mode;
-use Friendica\Core\Addon;
+use Friendica\Core\Addon\AddonHelper;
use Friendica\Core\Config\Capability\IManageConfigValues;
use Friendica\Core\Hook;
use Friendica\Core\KeyValueStorage\Capability\IManageKeyValuePairs;
private IManageKeyValuePairs $keyValue;
private SysDaemon $daemon;
private Jetstream $jetstream;
+ private AddonHelper $addonHelper;
/**
* @param Mode $mode
* @param Jetstream $jetstream
* @param array|null $argv
*/
- public function __construct(Mode $mode, IManageConfigValues $config, IManageKeyValuePairs $keyValue, SysDaemon $daemon, Jetstream $jetstream, array $argv = null)
+ public function __construct(Mode $mode, IManageConfigValues $config, IManageKeyValuePairs $keyValue, SysDaemon $daemon, Jetstream $jetstream, AddonHelper $addonHelper, array $argv = null)
{
parent::__construct($argv);
- $this->mode = $mode;
- $this->config = $config;
- $this->keyValue = $keyValue;
- $this->jetstream = $jetstream;
- $this->daemon = $daemon;
+ $this->mode = $mode;
+ $this->config = $config;
+ $this->keyValue = $keyValue;
+ $this->jetstream = $jetstream;
+ $this->daemon = $daemon;
+ $this->addonHelper = $addonHelper;
}
protected function getHelp(): string
);
}
- Addon::loadAddons();
+ $this->addonHelper->loadAddons();
Hook::loadHooks();
- if (!Addon::isEnabled('bluesky')) {
+ if (!$this->addonHelper->isAddonEnabled('bluesky')) {
throw new RuntimeException("Bluesky has to be enabled.\n");
}
*/
public static function unavailableNetworks(): array
{
+ $addonHelper = DI::addonHelper();
+
// Always hide content from these networks
$networks = [Protocol::PHANTOM, Protocol::FACEBOOK, Protocol::APPNET, Protocol::TWITTER, Protocol::ZOT, Protocol::OSTATUS, Protocol::STATUSNET];
- Addon::loadAddons();
+ $addonHelper->loadAddons();
- if (!Addon::isEnabled('discourse')) {
+ if (!$addonHelper->isAddonEnabled('discourse')) {
$networks[] = Protocol::DISCOURSE;
}
- if (!Addon::isEnabled('pumpio')) {
+ if (!$addonHelper->isAddonEnabled('pumpio')) {
$networks[] = Protocol::PUMPIO;
}
- if (!Addon::isEnabled('tumblr')) {
+ if (!$addonHelper->isAddonEnabled('tumblr')) {
$networks[] = Protocol::TUMBLR;
}
$networks[] = Protocol::DIASPORA;
}
- if (!Addon::isEnabled('pnut')) {
+ if (!$addonHelper->isAddonEnabled('pnut')) {
$networks[] = Protocol::PNUT;
}
return $networks;
*/
public static function availableNetworks(): array
{
+ $addonHelper = DI::addonHelper();
+
$networks = [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::FEED];
- Addon::loadAddons();
+ $addonHelper->loadAddons();
- if (Addon::isEnabled('discourse')) {
+ if ($addonHelper->isAddonEnabled('discourse')) {
$networks[] = Protocol::DISCOURSE;
}
- if (Addon::isEnabled('pumpio')) {
+ if ($addonHelper->isAddonEnabled('pumpio')) {
$networks[] = Protocol::PUMPIO;
}
- if (Addon::isEnabled('tumblr')) {
+ if ($addonHelper->isAddonEnabled('tumblr')) {
$networks[] = Protocol::TUMBLR;
}
$networks[] = Protocol::MAIL;
}
- if (Addon::isEnabled('pnut')) {
+ if ($addonHelper->isAddonEnabled('pnut')) {
$networks[] = Protocol::PNUT;
}
return $networks;
return $addons_admin;
}
-
/**
* Synchronize addons:
*
* Then go through the config list and if we have a addon that isn't installed,
* call the install procedure and add it to the database.
*
+ * @deprecated 2025.02 Use `Friendica\Core\Addon\AddonHelper::loadAddons()` instead
*/
public static function loadAddons()
{
*/
public function uninstallAddon(string $addonId): void;
+ /**
+ * Load addons.
+ *
+ * @internal
+ */
+ public function loadAddons(): void;
+
/**
* Reload (uninstall and install) all updated addons.
*/
Addon::uninstall($addonId);
}
+ /**
+ * Load addons.
+ *
+ * @internal
+ */
+ public function loadAddons(): void
+ {
+ Addon::loadAddons();
+ }
+
/**
* Reload (uninstall and install) all updated addons.
*/
namespace Friendica\Core\Storage\Repository;
use Exception;
-use Friendica\Core\Addon;
use Friendica\Core\Config\Capability\IManageConfigValues;
use Friendica\Core\Hook;
use Friendica\Core\L10n;
use Friendica\Core\Storage\Capability\ICanWriteToStorage;
use Friendica\Database\Database;
use Friendica\Core\Storage\Type;
+use Friendica\DI;
use Friendica\Network\HTTPException\InternalServerErrorException;
use Psr\Log\LoggerInterface;
/// @fixme Loading the addons & hooks here is really bad practice, but solves https://github.com/friendica/friendica/issues/11178
/// clean solution = Making Addon & Hook dynamic and load them inside the constructor, so there's no custom load logic necessary anymore
if ($includeAddon) {
- Addon::loadAddons();
+ DI::addonHelper()->loadAddons();
Hook::loadHooks();
}
use Friendica\Capabilities\ICanCreateResponses;
use Friendica\Core\Addon;
+use Friendica\Core\Addon\AddonHelper;
use Friendica\Core\Config\Capability\IManageConfigValues;
use Friendica\Core\Hook;
use Friendica\DI;
'plugin_admin' => function_exists($addon . '_addon_admin'),
]);
- Addon::loadAddons();
+ $this->dice->create(AddonHelper::class)->loadAddons();
Hook::loadHooks();
}
}