diff --git a/core/Controller/OCSController.php b/core/Controller/OCSController.php index 278e01403a..68861ce7e9 100644 --- a/core/Controller/OCSController.php +++ b/core/Controller/OCSController.php @@ -97,6 +97,7 @@ class OCSController extends \OCP\AppFramework\OCSController { 'micro' => $micro, 'string' => \OC_Util::getVersionString(), 'edition' => '', + 'extendedSupport' => \OCP\Util::hasExtendedSupport() ); if($this->userSession->isLoggedIn()) { diff --git a/lib/private/Support/Subscription/Registry.php b/lib/private/Support/Subscription/Registry.php index 89439cb814..c731da4f3b 100644 --- a/lib/private/Support/Subscription/Registry.php +++ b/lib/private/Support/Subscription/Registry.php @@ -72,4 +72,16 @@ class Registry implements IRegistry { } return false; } + + /** + * Indicates if the subscription has extended support + * + * @since 17.0.0 + */ + public function delegateHasExtendedSupport(): bool { + if ($this->subscription instanceof ISubscription && method_exists($this->subscription, 'hasExtendedSupport')) { + return $this->subscription->hasExtendedSupport(); + } + return false; + } } diff --git a/lib/public/Support/Subscription/IRegistry.php b/lib/public/Support/Subscription/IRegistry.php index 7782f201f2..f13bff597d 100644 --- a/lib/public/Support/Subscription/IRegistry.php +++ b/lib/public/Support/Subscription/IRegistry.php @@ -54,4 +54,11 @@ interface IRegistry { * @since 17.0.0 */ public function delegateHasValidSubscription(): bool; + + /** + * Indicates if the subscription has extended support + * + * @since 17.0.0 + */ + public function delegateHasExtendedSupport(): bool; } diff --git a/lib/public/Support/Subscription/ISubscription.php b/lib/public/Support/Subscription/ISubscription.php index fc53fe08da..8133360911 100644 --- a/lib/public/Support/Subscription/ISubscription.php +++ b/lib/public/Support/Subscription/ISubscription.php @@ -34,4 +34,11 @@ interface ISubscription { * @since 17.0.0 */ public function hasValidSubscription(): bool; + + /** + * Indicates if the subscription has extended support + * + * @since 17.0.0 + */ + public function hasExtendedSupport(): bool; } diff --git a/lib/public/Util.php b/lib/public/Util.php index 302eb8d035..7e9f6b2efb 100644 --- a/lib/public/Util.php +++ b/lib/public/Util.php @@ -89,7 +89,19 @@ class Util { public static function getVersion() { return \OC_Util::getVersion(); } - + + /** + * @since 17.0.0 + */ + public static function hasExtendedSupport(): bool { + try { + /** @var \OCP\Support\Subscription\IRegistry */ + $subscriptionRegistry = \OC::$server->query(\OCP\Support\Subscription\IRegistry::class); + return $subscriptionRegistry->delegateHasExtendedSupport(); + } catch (AppFramework\QueryException $e) {} + return \OC::$server->getConfig()->getSystemValueBool('extendedSupport', false); + } + /** * Set current update channel * @param string $channel @@ -98,7 +110,7 @@ class Util { public static function setChannel($channel) { \OC::$server->getConfig()->setSystemValue('updater.release.channel', $channel); } - + /** * Get current update channel * @return string @@ -501,7 +513,7 @@ class Util { public static function needUpgrade() { if (!isset(self::$needUpgradeCache)) { self::$needUpgradeCache=\OC_Util::needUpgrade(\OC::$server->getSystemConfig()); - } + } return self::$needUpgradeCache; } diff --git a/status.php b/status.php index 274a2edc61..a42af5a6b6 100644 --- a/status.php +++ b/status.php @@ -42,14 +42,16 @@ try { # see core/lib/private/legacy/defaults.php and core/themes/example/defaults.php # for description and defaults $defaults = new \OCP\Defaults(); - $values=array( + $values = [ 'installed'=>$installed, 'maintenance' => $maintenance, 'needsDbUpgrade' => \OCP\Util::needUpgrade(), 'version'=>implode('.', \OCP\Util::getVersion()), 'versionstring'=>OC_Util::getVersionString(), 'edition'=> '', - 'productname'=>$defaults->getName()); + 'productname'=>$defaults->getName(), + 'extendedSupport' => \OCP\Util::hasExtendedSupport() + ]; if (OC::$CLI) { print_r($values); } else {