aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/PreviewManager.php
diff options
context:
space:
mode:
authorDaniel Kesselberg <mail@danielkesselberg.de>2024-06-13 16:02:30 +0200
committerFerdinand Thiessen <opensource@fthiessen.de>2024-06-18 10:39:45 +0200
commitd270561ef83338672f16c4142871ba11a16f56aa (patch)
treeb1f8abdd85712656ba21b5f79faa81426caa10f6 /lib/private/PreviewManager.php
parent74396a245d4f86795f79721aef5a95359b8c436a (diff)
downloadnextcloud-server-d270561ef83338672f16c4142871ba11a16f56aa.tar.gz
nextcloud-server-d270561ef83338672f16c4142871ba11a16f56aa.zip
fix(preview): don't create folder structure when previews are disabled
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
Diffstat (limited to 'lib/private/PreviewManager.php')
-rw-r--r--lib/private/PreviewManager.php21
1 files changed, 17 insertions, 4 deletions
diff --git a/lib/private/PreviewManager.php b/lib/private/PreviewManager.php
index 21dd8f8a8ab..4daf5b2dc1e 100644
--- a/lib/private/PreviewManager.php
+++ b/lib/private/PreviewManager.php
@@ -50,6 +50,7 @@ class PreviewManager implements IPreview {
private IServerContainer $container;
private IBinaryFinder $binaryFinder;
private IMagickSupport $imagickSupport;
+ private bool $enablePreviews;
public function __construct(
IConfig $config,
@@ -73,6 +74,7 @@ class PreviewManager implements IPreview {
$this->container = $container;
$this->binaryFinder = $binaryFinder;
$this->imagickSupport = $imagickSupport;
+ $this->enablePreviews = $config->getSystemValueBool('enable_previews', true);
}
/**
@@ -86,7 +88,7 @@ class PreviewManager implements IPreview {
* @return void
*/
public function registerProvider($mimeTypeRegex, \Closure $callable): void {
- if (!$this->config->getSystemValueBool('enable_previews', true)) {
+ if (!$this->enablePreviews) {
return;
}
@@ -101,7 +103,7 @@ class PreviewManager implements IPreview {
* Get all providers
*/
public function getProviders(): array {
- if (!$this->config->getSystemValueBool('enable_previews', true)) {
+ if (!$this->enablePreviews) {
return [];
}
@@ -158,6 +160,7 @@ class PreviewManager implements IPreview {
* @since 11.0.0 - \InvalidArgumentException was added in 12.0.0
*/
public function getPreview(File $file, $width = -1, $height = -1, $crop = false, $mode = IPreview::MODE_FILL, $mimeType = null) {
+ $this->throwIfPreviewsDisabled();
$previewConcurrency = $this->getGenerator()->getNumConcurrentPreviews('preview_concurrency_all');
$sem = Generator::guardWithSemaphore(Generator::SEMAPHORE_ID_ALL, $previewConcurrency);
try {
@@ -181,6 +184,7 @@ class PreviewManager implements IPreview {
* @since 19.0.0
*/
public function generatePreviews(File $file, array $specifications, $mimeType = null) {
+ $this->throwIfPreviewsDisabled();
return $this->getGenerator()->generatePreviews($file, $specifications, $mimeType);
}
@@ -191,7 +195,7 @@ class PreviewManager implements IPreview {
* @return boolean
*/
public function isMimeSupported($mimeType = '*') {
- if (!$this->config->getSystemValueBool('enable_previews', true)) {
+ if (!$this->enablePreviews) {
return false;
}
@@ -216,7 +220,7 @@ class PreviewManager implements IPreview {
* Check if a preview can be generated for a file
*/
public function isAvailable(\OCP\Files\FileInfo $file): bool {
- if (!$this->config->getSystemValueBool('enable_previews', true)) {
+ if (!$this->enablePreviews) {
return false;
}
@@ -452,4 +456,13 @@ class PreviewManager implements IPreview {
});
}
}
+
+ /**
+ * @throws NotFoundException if preview generation is disabled
+ */
+ private function throwIfPreviewsDisabled(): void {
+ if (!$this->enablePreviews) {
+ throw new NotFoundException('Previews disabled');
+ }
+ }
}