aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2018-11-12 11:00:56 +0100
committerJulius Härtl <jus@bitgrid.net>2018-11-12 11:00:56 +0100
commit26b160cc439d0d3396fe54ee7222a0642bfbd022 (patch)
treeebc7693536646e8d30b845f29eda3c4afd4a01f1
parentd6de8ebeb272d677a4bf1930c6eb42c1bf57b844 (diff)
downloadnextcloud-server-26b160cc439d0d3396fe54ee7222a0642bfbd022.tar.gz
nextcloud-server-26b160cc439d0d3396fe54ee7222a0642bfbd022.zip
Make sure to always load the latest icons-vars.css file
Signed-off-by: Julius Härtl <jus@bitgrid.net>
-rw-r--r--lib/private/Template/IconsCacher.php18
-rw-r--r--tests/lib/Template/IconsCacherTest.php7
2 files changed, 21 insertions, 4 deletions
diff --git a/lib/private/Template/IconsCacher.php b/lib/private/Template/IconsCacher.php
index c91bf13ad53..1020cd24dcd 100644
--- a/lib/private/Template/IconsCacher.php
+++ b/lib/private/Template/IconsCacher.php
@@ -24,6 +24,7 @@ declare (strict_types = 1);
namespace OC\Template;
+use OCP\AppFramework\Utility\ITimeFactory;
use OCP\Files\IAppData;
use OCP\Files\NotFoundException;
use OCP\Files\SimpleFS\ISimpleFolder;
@@ -46,6 +47,9 @@ class IconsCacher {
/** @var IURLGenerator */
protected $urlGenerator;
+ /** @var ITimeFactory */
+ protected $timeFactory;
+
/** @var string */
private $iconVarRE = '/--(icon-[a-zA-Z0-9-]+):\s?url\(["\']?([a-zA-Z0-9-_\~\/\.\?\&\=\:\;\+\,]+)[^;]+;/m';
@@ -58,14 +62,17 @@ class IconsCacher {
* @param ILogger $logger
* @param Factory $appDataFactory
* @param IURLGenerator $urlGenerator
+ * @param ITimeFactory $timeFactory
* @throws \OCP\Files\NotPermittedException
*/
public function __construct(ILogger $logger,
Factory $appDataFactory,
- IURLGenerator $urlGenerator) {
+ IURLGenerator $urlGenerator,
+ ITimeFactory $timeFactory) {
$this->logger = $logger;
$this->appData = $appDataFactory->get('css');
$this->urlGenerator = $urlGenerator;
+ $this->timeFactory = $timeFactory;
try {
$this->folder = $this->appData->getFolder('icons');
@@ -216,6 +223,11 @@ class IconsCacher {
}
public function injectCss() {
+ $mtime = $this->timeFactory->getTime();
+ $file = $this->getCachedList();
+ if ($file) {
+ $mtime = $file->getMTime();
+ }
// Only inject once
foreach (\OC_Util::$headers as $header) {
if (
@@ -225,8 +237,8 @@ class IconsCacher {
return;
}
}
- $linkToCSS = $this->urlGenerator->linkToRoute('core.Css.getCss', ['appName' => 'icons', 'fileName' => $this->fileName]);
+ $linkToCSS = $this->urlGenerator->linkToRoute('core.Css.getCss', ['appName' => 'icons', 'fileName' => $this->fileName, 'v' => $mtime]);
\OC_Util::addHeader('link', ['rel' => 'stylesheet', 'href' => $linkToCSS], null, true);
}
-} \ No newline at end of file
+}
diff --git a/tests/lib/Template/IconsCacherTest.php b/tests/lib/Template/IconsCacherTest.php
index c537323e0eb..cc6224f3228 100644
--- a/tests/lib/Template/IconsCacherTest.php
+++ b/tests/lib/Template/IconsCacherTest.php
@@ -28,6 +28,7 @@ use OC\Files\AppData\AppData;
use OC\Files\AppData\Factory;
use OC\Template\IconsCacher;
use OCA\Theming\ThemingDefaults;
+use OCP\AppFramework\Utility\ITimeFactory;
use OCP\Files\IAppData;
use OCP\Files\NotFoundException;
use OCP\Files\SimpleFS\ISimpleFile;
@@ -46,10 +47,13 @@ class IconsCacherTest extends \Test\TestCase {
protected $appData;
/** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */
protected $urlGenerator;
+ /** @var ITimeFactory|\PHPUnit_Framework_MockObject_MockObject */
+ private $timeFactory;
protected function setUp() {
$this->logger = $this->createMock(ILogger::class);
$this->appData = $this->createMock(AppData::class);
+ $this->timeFactory = $this->createMock(ITimeFactory::class);
/** @var Factory|\PHPUnit_Framework_MockObject_MockObject $factory */
$factory = $this->createMock(Factory::class);
@@ -63,7 +67,8 @@ class IconsCacherTest extends \Test\TestCase {
$this->iconsCacher = new IconsCacher(
$this->logger,
$factory,
- $this->urlGenerator
+ $this->urlGenerator,
+ $this->timeFactory
);
}