diff options
Diffstat (limited to 'lib/public/App')
-rw-r--r-- | lib/public/App/AppPathNotFoundException.php | 1 | ||||
-rw-r--r-- | lib/public/App/Events/AppDisableEvent.php | 2 | ||||
-rw-r--r-- | lib/public/App/Events/AppEnableEvent.php | 2 | ||||
-rw-r--r-- | lib/public/App/Events/AppUpdateEvent.php | 10 | ||||
-rw-r--r-- | lib/public/App/IAppManager.php | 99 |
5 files changed, 99 insertions, 15 deletions
diff --git a/lib/public/App/AppPathNotFoundException.php b/lib/public/App/AppPathNotFoundException.php index 5e3ea7a9919..56d6571ea68 100644 --- a/lib/public/App/AppPathNotFoundException.php +++ b/lib/public/App/AppPathNotFoundException.php @@ -1,4 +1,5 @@ <?php + /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/lib/public/App/Events/AppDisableEvent.php b/lib/public/App/Events/AppDisableEvent.php index 00a74663667..5d16d42785e 100644 --- a/lib/public/App/Events/AppDisableEvent.php +++ b/lib/public/App/Events/AppDisableEvent.php @@ -11,6 +11,8 @@ namespace OCP\App\Events; use OCP\EventDispatcher\Event; /** + * This event is triggered when an app is disabled. + * * @since 27.0.0 */ class AppDisableEvent extends Event { diff --git a/lib/public/App/Events/AppEnableEvent.php b/lib/public/App/Events/AppEnableEvent.php index 70d42263d3e..fe1523d6a83 100644 --- a/lib/public/App/Events/AppEnableEvent.php +++ b/lib/public/App/Events/AppEnableEvent.php @@ -11,6 +11,8 @@ namespace OCP\App\Events; use OCP\EventDispatcher\Event; /** + * This event is triggered when an app is enabled. + * * @since 27.0.0 */ class AppEnableEvent extends Event { diff --git a/lib/public/App/Events/AppUpdateEvent.php b/lib/public/App/Events/AppUpdateEvent.php index de88d65b68b..2cf59ff7949 100644 --- a/lib/public/App/Events/AppUpdateEvent.php +++ b/lib/public/App/Events/AppUpdateEvent.php @@ -11,18 +11,18 @@ namespace OCP\App\Events; use OCP\EventDispatcher\Event; /** + * This event is triggered when an app is updated. + * * @since 27.0.0 */ class AppUpdateEvent extends Event { - private string $appId; - /** * @since 27.0.0 */ - public function __construct(string $appId) { + public function __construct( + private readonly string $appId, + ) { parent::__construct(); - - $this->appId = $appId; } /** diff --git a/lib/public/App/IAppManager.php b/lib/public/App/IAppManager.php index 508143426f5..20019ce1ffd 100644 --- a/lib/public/App/IAppManager.php +++ b/lib/public/App/IAppManager.php @@ -20,15 +20,28 @@ use OCP\IUser; */ interface IAppManager { /** - * Returns the app information from "appinfo/info.xml". + * @since 30.0.0 + */ + public const BACKEND_CALDAV = 'caldav'; + + /** + * Returns the app information from "appinfo/info.xml" for an app * * @param string|null $lang * @return array|null * @since 14.0.0 + * @since 31.0.0 Usage of $path is discontinued and throws an \InvalidArgumentException, use {@see self::getAppInfoByPath} instead. */ public function getAppInfo(string $appId, bool $path = false, $lang = null); /** + * Returns the app information from a given path ending with "/appinfo/info.xml" + * + * @since 31.0.0 + */ + public function getAppInfoByPath(string $path, ?string $lang = null): ?array; + + /** * Returns the app information from "appinfo/info.xml". * * @param string $appId @@ -39,6 +52,14 @@ interface IAppManager { public function getAppVersion(string $appId, bool $useCache = true): string; /** + * Returns the installed version of all apps + * + * @return array<string, string> + * @since 32.0.0 + */ + public function getAppInstalledVersions(bool $onlyEnabled = false): array; + + /** * Returns the app icon or null if none is found * * @param string $appId @@ -46,7 +67,7 @@ interface IAppManager { * @return string|null * @since 29.0.0 */ - public function getAppIcon(string $appId, bool $dark = false): string|null; + public function getAppIcon(string $appId, bool $dark = false): ?string; /** * Check if an app is enabled for user @@ -66,10 +87,18 @@ interface IAppManager { * @param string $appId * @return bool * @since 8.0.0 + * @deprecated 32.0.0 Use either {@see self::isEnabledForUser} or {@see self::isEnabledForAnyone} */ public function isInstalled($appId); /** + * Check if an app is enabled in the instance, either for everyone or for specific groups + * + * @since 32.0.0 + */ + public function isEnabledForAnyone(string $appId): bool; + + /** * Check if an app should be enabled by default * * Notice: This actually checks if the app should be enabled by default @@ -131,17 +160,15 @@ interface IAppManager { * @param bool $automaticDisabled * @since 8.0.0 */ - public function disableApp($appId, $automaticDisabled = false); + public function disableApp($appId, $automaticDisabled = false): void; /** * Get the directory for the given app. * - * @param string $appId - * @return string * @since 11.0.0 * @throws AppPathNotFoundException */ - public function getAppPath($appId); + public function getAppPath(string $appId): string; /** * Get the web path for the given app. @@ -157,7 +184,7 @@ interface IAppManager { * List all apps enabled for a user * * @param \OCP\IUser $user - * @return string[] + * @return list<string> * @since 8.1.0 */ public function getEnabledAppsForUser(IUser $user); @@ -167,14 +194,23 @@ interface IAppManager { * * @return string[] * @since 8.1.0 + * @deprecated 32.0.0 Use either {@see self::getEnabledApps} or {@see self::getEnabledAppsForUser} */ public function getInstalledApps(); /** + * List all apps enabled, either for everyone or for specific groups only + * + * @return list<string> + * @since 32.0.0 + */ + public function getEnabledApps(): array; + + /** * Clear the cached list of apps when enabling/disabling an app * @since 8.1.0 */ - public function clearAppsCache(); + public function clearAppsCache(): void; /** * @param string $appId @@ -190,7 +226,7 @@ interface IAppManager { * @return bool * * This function walks through the Nextcloud directory and loads all apps - * it can find. A directory contains an app if the file /appinfo/info.xml + * it can find. A directory contains an app if the file `/appinfo/info.xml` * exists. * * if $types is set to non-empty array, only apps of those types will be loaded @@ -242,6 +278,8 @@ interface IAppManager { * * @since 25.0.6 * @since 28.0.0 Added optional $withFallbacks parameter + * @deprecated 31.0.0 + * Use @see \OCP\INavigationManager::getDefaultEntryIdForUser() instead */ public function getDefaultAppForUser(?IUser $user = null, bool $withFallbacks = true): string; @@ -250,15 +288,56 @@ interface IAppManager { * * @return string[] The default applications * @since 28.0.0 + * @deprecated 31.0.0 + * Use @see \OCP\INavigationManager::getDefaultEntryIds() instead */ public function getDefaultApps(): array; /** * Set the global default apps with fallbacks * - * @param string[] $appId + * @param string[] $defaultApps * @throws \InvalidArgumentException If any of the apps is not installed * @since 28.0.0 + * @deprecated 31.0.0 + * Use @see \OCP\INavigationManager::setDefaultEntryIds() instead */ public function setDefaultApps(array $defaultApps): void; + + /** + * Check whether the given backend is required by at least one app. + * + * @param self::BACKEND_* $backend Name of the backend, one of `self::BACKEND_*` + * @return bool True if at least one app requires the backend + * + * @since 30.0.0 + */ + public function isBackendRequired(string $backend): bool; + + /** + * Clean the appId from forbidden characters + * + * @psalm-taint-escape callable + * @psalm-taint-escape cookie + * @psalm-taint-escape file + * @psalm-taint-escape has_quotes + * @psalm-taint-escape header + * @psalm-taint-escape html + * @psalm-taint-escape include + * @psalm-taint-escape ldap + * @psalm-taint-escape shell + * @psalm-taint-escape sql + * @psalm-taint-escape unserialize + * + * @since 31.0.0 + */ + public function cleanAppId(string $app): string; + + /** + * Get a list of all apps in the apps folder + * + * @return list<string> an array of app names (string IDs) + * @since 31.0.0 + */ + public function getAllAppsInAppsFolders(): array; } |