diff options
author | Julius Härtl <jus@bitgrid.net> | 2020-11-30 13:06:10 +0100 |
---|---|---|
committer | Julius Härtl <jus@bitgrid.net> | 2020-11-30 14:15:17 +0100 |
commit | 22e26a7f5eebb686ee4d923f4e4fbbd3d8c08b2b (patch) | |
tree | bde363ddb60daf8aaabd95ad492a2a9ce35ce903 /apps/theming | |
parent | 7718a8a4b81628b600ddafbf170ba34b41776f8e (diff) | |
download | nextcloud-server-22e26a7f5eebb686ee4d923f4e4fbbd3d8c08b2b.tar.gz nextcloud-server-22e26a7f5eebb686ee4d923f4e4fbbd3d8c08b2b.zip |
Store scss variables under a different prefix for each theming config version
The main issue with using the general theming- prefix is that with APCu caching
the cache is not shared between processes, so when trying to reset the cache
through the CLI, e.g. when updating the theming config the old cache is never
invalidated.
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'apps/theming')
-rw-r--r-- | apps/theming/lib/ThemingDefaults.php | 5 | ||||
-rw-r--r-- | apps/theming/tests/ThemingDefaultsTest.php | 5 |
2 files changed, 6 insertions, 4 deletions
diff --git a/apps/theming/lib/ThemingDefaults.php b/apps/theming/lib/ThemingDefaults.php index f47e4ae294d..242d6866ce1 100644 --- a/apps/theming/lib/ThemingDefaults.php +++ b/apps/theming/lib/ThemingDefaults.php @@ -290,13 +290,14 @@ class ThemingDefaults extends \OC_Defaults { * @return array scss variables to overwrite */ public function getScssVariables() { - $cache = $this->cacheFactory->createDistributed('theming-' . $this->urlGenerator->getBaseUrl()); + $cacheBuster = $this->config->getAppValue('theming', 'cachebuster', '0'); + $cache = $this->cacheFactory->createDistributed('theming-' . $cacheBuster . '-' . $this->urlGenerator->getBaseUrl()); if ($value = $cache->get('getScssVariables')) { return $value; } $variables = [ - 'theming-cachebuster' => "'" . $this->config->getAppValue('theming', 'cachebuster', '0') . "'", + 'theming-cachebuster' => "'" . $cacheBuster . "'", 'theming-logo-mime' => "'" . $this->config->getAppValue('theming', 'logoMime') . "'", 'theming-background-mime' => "'" . $this->config->getAppValue('theming', 'backgroundMime') . "'", 'theming-logoheader-mime' => "'" . $this->config->getAppValue('theming', 'logoheaderMime') . "'", diff --git a/apps/theming/tests/ThemingDefaultsTest.php b/apps/theming/tests/ThemingDefaultsTest.php index 341a1b24887..e34da50f5a6 100644 --- a/apps/theming/tests/ThemingDefaultsTest.php +++ b/apps/theming/tests/ThemingDefaultsTest.php @@ -634,9 +634,10 @@ class ThemingDefaultsTest extends TestCase { } public function testGetScssVariablesCached() { + $this->config->expects($this->any())->method('getAppValue')->with('theming', 'cachebuster', '0')->willReturn('1'); $this->cacheFactory->expects($this->once()) ->method('createDistributed') - ->with('theming-') + ->with('theming-1-') ->willReturn($this->cache); $this->cache->expects($this->once())->method('get')->with('getScssVariables')->willReturn(['foo' => 'bar']); $this->assertEquals(['foo' => 'bar'], $this->template->getScssVariables()); @@ -658,7 +659,7 @@ class ThemingDefaultsTest extends TestCase { $this->util->expects($this->any())->method('elementColor')->with($this->defaults->getColorPrimary())->willReturn('#aaaaaa'); $this->cacheFactory->expects($this->once()) ->method('createDistributed') - ->with('theming-') + ->with('theming-0-') ->willReturn($this->cache); $this->cache->expects($this->once())->method('get')->with('getScssVariables')->willReturn(null); $this->imageManager->expects($this->at(0))->method('getImageUrl')->with('logo')->willReturn('custom-logo?v=0'); |