mirror of
https://github.com/nextcloud/server.git
synced 2026-05-19 08:25:56 -04:00
Merge pull request #30624 from nextcloud/theming/background-image
Avoid file system access on checking if an image exists
This commit is contained in:
commit
20f1971266
2 changed files with 11 additions and 16 deletions
|
|
@ -78,10 +78,8 @@ class ImageManager {
|
|||
|
||||
public function getImageUrl(string $key, bool $useSvg = true): string {
|
||||
$cacheBusterCounter = $this->config->getAppValue('theming', 'cachebuster', '0');
|
||||
try {
|
||||
$image = $this->getImage($key, $useSvg);
|
||||
if ($this->hasImage($key)) {
|
||||
return $this->urlGenerator->linkToRoute('theming.Theming.getImage', [ 'key' => $key ]) . '?v=' . $cacheBusterCounter;
|
||||
} catch (NotFoundException $e) {
|
||||
}
|
||||
|
||||
switch ($key) {
|
||||
|
|
@ -132,6 +130,11 @@ class ImageManager {
|
|||
return $folder->getFile($key);
|
||||
}
|
||||
|
||||
public function hasImage(string $key): bool {
|
||||
$mimeSetting = $this->config->getAppValue('theming', $key . 'Mime', '');
|
||||
return $mimeSetting !== '';
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, array{mime: string, url: string}>
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -136,7 +136,6 @@ class ImageManagerTest extends TestCase {
|
|||
['theming', 'logoMime', '']
|
||||
)
|
||||
->willReturn(0);
|
||||
$this->mockGetImage('logo', $file);
|
||||
$this->urlGenerator->expects($this->once())
|
||||
->method('linkToRoute')
|
||||
->willReturn('url-to-image');
|
||||
|
|
@ -148,9 +147,9 @@ class ImageManagerTest extends TestCase {
|
|||
->method('getAppValue')
|
||||
->withConsecutive(
|
||||
['theming', 'cachebuster', '0'],
|
||||
['theming', 'logoMime', false]
|
||||
['theming', 'logoMime', '']
|
||||
)
|
||||
->willReturnOnConsecutiveCalls(0, false);
|
||||
->willReturnOnConsecutiveCalls(0, '');
|
||||
$this->urlGenerator->expects($this->once())
|
||||
->method('imagePath')
|
||||
->with('core', 'logo/logo.png')
|
||||
|
|
@ -167,15 +166,8 @@ class ImageManagerTest extends TestCase {
|
|||
['theming', 'cachebuster', '0'],
|
||||
['theming', 'logoMime', '']
|
||||
)
|
||||
->willReturn(0);
|
||||
$this->mockGetImage('logo', $file);
|
||||
$this->urlGenerator->expects($this->at(0))
|
||||
->method('getBaseUrl')
|
||||
->willReturn('baseurl');
|
||||
$this->urlGenerator->expects($this->at(1))
|
||||
->method('getAbsoluteUrl')
|
||||
->willReturn('url-to-image-absolute?v=0');
|
||||
$this->urlGenerator->expects($this->at(2))
|
||||
->willReturnOnConsecutiveCalls(0, 0);
|
||||
$this->urlGenerator->expects($this->any())
|
||||
->method('getAbsoluteUrl')
|
||||
->willReturn('url-to-image-absolute?v=0');
|
||||
$this->assertEquals('url-to-image-absolute?v=0', $this->imageManager->getImageUrlAbsolute('logo', false));
|
||||
|
|
@ -207,7 +199,7 @@ class ImageManagerTest extends TestCase {
|
|||
->method('getAppValue')
|
||||
->with('theming', 'cachebuster', '0')
|
||||
->willReturn('0');
|
||||
$this->appData->expects($this->at(0))
|
||||
$this->appData->expects($this->once())
|
||||
->method('getFolder')
|
||||
->with('0')
|
||||
->willReturn($folder);
|
||||
|
|
|
|||
Loading…
Reference in a new issue