addonPath = $addonPath; } /** * Returns the absolute path to the addon folder * * e.g. `/var/www/html/addon` */ public function getAddonPath(): string { return $this->addonPath; } /** * Returns the list of available addons. * * This list is made from scanning the addon/ folder. * Unsupported addons are excluded unless they already are enabled or system.show_unsupported_addon is set. * * @return string[] */ public function getAvailableAddons(): array { return array_map( function (array $item) { return $item[0]; }, Addon::getAvailableList() ); } /** * Installs an addon. * * @param string $addonId name of the addon * * @return bool true on success or false on failure */ public function installAddon(string $addonId): bool { return Addon::install($addonId); } /** * Uninstalls an addon. * * @param string $addonId name of the addon */ public function uninstallAddon(string $addonId): void { Addon::uninstall($addonId); } /** * Load addons. * * @internal */ public function loadAddons(): void { Addon::loadAddons(); } /** * Reload (uninstall and install) all updated addons. */ public function reloadAddons(): void { Addon::reload(); } /** * Get the comment block of an addon as value object. */ public function getAddonInfo(string $addonId): AddonInfo { $data = Addon::getInfo($addonId); // add addon ID $data['id'] = $addonId; // rename author to authors $data['authors'] = $data['author']; unset($data['author']); // rename maintainer to maintainers $data['maintainers'] = $data['maintainer']; unset($data['maintainer']); return AddonInfo::fromArray($data); } /** * Checks if the provided addon is enabled */ public function isAddonEnabled(string $addonId): bool { return Addon::isEnabled($addonId); } /** * Returns a list with the IDs of the enabled addons * * @return string[] */ public function getEnabledAddons(): array { return Addon::getEnabledList(); } /** * Returns a list with the IDs of the non-hidden enabled addons * * @return string[] */ 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()); } }