diff --git a/lib/private/OCS/CoreCapabilities.php b/lib/private/OCS/CoreCapabilities.php index 3d988a8662e..84c8ab66257 100644 --- a/lib/private/OCS/CoreCapabilities.php +++ b/lib/private/OCS/CoreCapabilities.php @@ -10,6 +10,7 @@ namespace OC\OCS; use OCP\Capabilities\ICapability; use OCP\IConfig; use OCP\IURLGenerator; +use OCP\ServerVersion; /** * Class Capabilities @@ -22,6 +23,7 @@ class CoreCapabilities implements ICapability { */ public function __construct( private IConfig $config, + private ServerVersion $serverVersion, ) { } @@ -35,10 +37,13 @@ class CoreCapabilities implements ICapability { * reference-api: boolean, * reference-regex: string, * mod-rewrite-working: boolean, + * version: list{int, int, int, int}, * }, * } */ public function getCapabilities(): array { + /** @var list{int, int, int, int} */ + $version = $this->serverVersion->getVersion(); return [ 'core' => [ 'pollinterval' => $this->config->getSystemValueInt('pollinterval', 60), @@ -46,6 +51,7 @@ class CoreCapabilities implements ICapability { 'reference-api' => true, 'reference-regex' => IURLGenerator::URL_REGEX_NO_MODIFIERS, 'mod-rewrite-working' => $this->config->getSystemValueBool('htaccess.IgnoreFrontController') || getenv('front_controller_active') === 'true', + 'version' => $version, ], ]; } diff --git a/lib/private/Server.php b/lib/private/Server.php index a42fcaace61..0475363e8c6 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -973,7 +973,10 @@ class Server extends ServerContainer implements IServerContainer { $this->registerService(CapabilitiesManager::class, function (ContainerInterface $c) { $manager = new CapabilitiesManager($c->get(LoggerInterface::class)); $manager->registerCapability(function () use ($c) { - return new \OC\OCS\CoreCapabilities($c->get(\OCP\IConfig::class)); + return new \OC\OCS\CoreCapabilities( + $c->get(\OCP\IConfig::class), + $c->get(\OCP\ServerVersion::class), + ); }); $manager->registerCapability(function () use ($c) { return $c->get(\OC\Security\Bruteforce\Capabilities::class); diff --git a/lib/public/ServerVersion.php b/lib/public/ServerVersion.php index d44452d42d0..deb8dab70a3 100644 --- a/lib/public/ServerVersion.php +++ b/lib/public/ServerVersion.php @@ -14,6 +14,7 @@ namespace OCP; */ class ServerVersion { + /** @var list{int, int, int, int} */ private array $version; private string $versionString; private string $build; @@ -27,13 +28,13 @@ class ServerVersion { $versionFile = __DIR__ . '/../../version.php'; require $versionFile; - /** @var int[] $OC_Version */ + /** @var list{int, int, int, int} $OC_Version */ $this->version = $OC_Version; /** @var string $OC_VersionString */ $this->versionString = $OC_VersionString; /** @var string $OC_Build */ $this->build = $OC_Build; - /** @var string $OC_Channel */ + /** @var 'beta'|'stable'|'enterprise'|'git' $OC_Channel */ $this->channel = $OC_Channel; } @@ -59,6 +60,7 @@ class ServerVersion { } /** + * @psalm-return list{int, int, int, int} * @since 31.0.0 */ public function getVersion(): array {