diff options
author | Ferdinand Thiessen <opensource@fthiessen.de> | 2025-01-24 13:14:19 +0100 |
---|---|---|
committer | Ferdinand Thiessen <opensource@fthiessen.de> | 2025-01-24 15:10:23 +0100 |
commit | eea91fa1ba846c7fb5b9eef88530438c404a8aff (patch) | |
tree | c5a32b8f989d2ade551d3af751b2735490ed8798 | |
parent | 31664b3edd38c4416945e30eaf14a9ab23492ae0 (diff) | |
download | nextcloud-server-fix/get-version-of-core.tar.gz nextcloud-server-fix/get-version-of-core.zip |
fix(TemplateLayout): `core` is not an app but the server itselffix/get-version-of-core
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
-rw-r--r-- | build/psalm-baseline.xml | 9 | ||||
-rw-r--r-- | lib/private/TemplateLayout.php | 17 | ||||
-rw-r--r-- | tests/lib/AppTest.php | 32 |
3 files changed, 30 insertions, 28 deletions
diff --git a/build/psalm-baseline.xml b/build/psalm-baseline.xml index 11b121045a2..49ce3c7b054 100644 --- a/build/psalm-baseline.xml +++ b/build/psalm-baseline.xml @@ -2576,15 +2576,6 @@ <code><![CDATA[$script]]></code> </ParamNameMismatch> </file> - <file src="lib/private/TemplateLayout.php"> - <InvalidParamDefault> - <code><![CDATA[string]]></code> - <code><![CDATA[string]]></code> - </InvalidParamDefault> - <InvalidScalarArgument> - <code><![CDATA[$appId]]></code> - </InvalidScalarArgument> - </file> <file src="lib/private/URLGenerator.php"> <InvalidReturnStatement> <code><![CDATA[$path]]></code> diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php index 001ef3afca5..e52ef702ad3 100644 --- a/lib/private/TemplateLayout.php +++ b/lib/private/TemplateLayout.php @@ -344,13 +344,18 @@ class TemplateLayout extends \OC_Template { return false; } - $appVersion = $this->appManager->getAppVersion($appId); - // For shipped apps the app version is not a single source of truth, we rather also need to consider the Nextcloud version - if ($this->appManager->isShipped($appId)) { - $appVersion .= '-' . self::$versionHash; - } + if ($appId === 'core') { + // core is not a real app but the server itself + $hash = self::$versionHash; + } else { + $appVersion = $this->appManager->getAppVersion($appId); + // For shipped apps the app version is not a single source of truth, we rather also need to consider the Nextcloud version + if ($this->appManager->isShipped($appId)) { + $appVersion .= '-' . self::$versionHash; + } - $hash = substr(md5($appVersion), 0, 8); + $hash = substr(md5($appVersion), 0, 8); + } self::$cacheBusterCache[$path] = $hash; } diff --git a/tests/lib/AppTest.php b/tests/lib/AppTest.php index 98c3a6ff158..3e4d762a0a4 100644 --- a/tests/lib/AppTest.php +++ b/tests/lib/AppTest.php @@ -12,7 +12,13 @@ use OC\App\InfoParser; use OC\AppConfig; use OCP\EventDispatcher\IEventDispatcher; use OCP\IAppConfig; -use OCP\IURLGenerator; +use OCP\ICacheFactory; +use OCP\IConfig; +use OCP\IDBConnection; +use OCP\IGroupManager; +use OCP\IUserManager; +use OCP\IUserSession; +use OCP\ServerVersion; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; @@ -463,8 +469,8 @@ class AppTest extends \Test\TestCase { * @dataProvider appConfigValuesProvider */ public function testEnabledApps($user, $expectedApps, $forceAll): void { - $userManager = \OC::$server->getUserManager(); - $groupManager = \OC::$server->getGroupManager(); + $userManager = \OCP\Server::get(IUserManager::class); + $groupManager = \OCP\Server::get(IGroupManager::class); $user1 = $userManager->createUser(self::TEST_USER1, 'NotAnEasyPassword123456+'); $user2 = $userManager->createUser(self::TEST_USER2, 'NotAnEasyPassword123456_'); $user3 = $userManager->createUser(self::TEST_USER3, 'NotAnEasyPassword123456?'); @@ -512,7 +518,7 @@ class AppTest extends \Test\TestCase { * enabled apps more than once when a user is set. */ public function testEnabledAppsCache(): void { - $userManager = \OC::$server->getUserManager(); + $userManager = \OCP\Server::get(IUserManager::class); $user1 = $userManager->createUser(self::TEST_USER1, 'NotAnEasyPassword123456+'); \OC_User::setUserId(self::TEST_USER1); @@ -544,8 +550,8 @@ class AppTest extends \Test\TestCase { private function setupAppConfigMock() { /** @var AppConfig|MockObject */ $appConfig = $this->getMockBuilder(AppConfig::class) - ->setMethods(['getValues']) - ->setConstructorArgs([\OC::$server->getDatabaseConnection()]) + ->onlyMethods(['getValues']) + ->setConstructorArgs([\OCP\Server::get(IDBConnection::class)]) ->disableOriginalConstructor() ->getMock(); @@ -561,13 +567,13 @@ class AppTest extends \Test\TestCase { private function registerAppConfig(AppConfig $appConfig) { $this->overwriteService(AppConfig::class, $appConfig); $this->overwriteService(AppManager::class, new AppManager( - \OC::$server->getUserSession(), - \OC::$server->getConfig(), - \OC::$server->getGroupManager(), - \OC::$server->getMemCacheFactory(), - \OC::$server->get(IEventDispatcher::class), - \OC::$server->get(LoggerInterface::class), - \OC::$server->get(IURLGenerator::class), + \OCP\Server::get(IUserSession::class), + \OCP\Server::get(IConfig::class), + \OCP\Server::get(IGroupManager::class), + \OCP\Server::get(ICacheFactory::class), + \OCP\Server::get(IEventDispatcher::class), + \OCP\Server::get(LoggerInterface::class), + \OCP\Server::get(ServerVersion::class), )); } |