From e38dea3542ee48c6ad51808fc28d9d098cc804b2 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 13 Mar 2015 09:39:16 +0100 Subject: [PATCH] Cache result for isMimeTypeSupported() --- lib/private/previewmanager.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/private/previewmanager.php b/lib/private/previewmanager.php index c940307084d..9f83d88a1fe 100644 --- a/lib/private/previewmanager.php +++ b/lib/private/previewmanager.php @@ -18,6 +18,9 @@ class PreviewManager implements IPreview { /** @var array */ protected $providers = []; + /** @var array mime type => support status */ + protected $mimeTypeSupportMap = []; + /** @var array */ protected $defaultProviders; @@ -96,12 +99,18 @@ class PreviewManager implements IPreview { return false; } + if (isset($this->mimeTypeSupportMap[$mimeType])) { + return $this->mimeTypeSupportMap[$mimeType]; + } + $providerMimeTypes = array_keys($this->providers); foreach ($providerMimeTypes as $supportedMimeType) { if (preg_match($supportedMimeType, $mimeType)) { + $this->mimeTypeSupportMap[$mimeType] = true; return true; } } + $this->mimeTypeSupportMap[$mimeType] = false; return false; } @@ -116,6 +125,10 @@ class PreviewManager implements IPreview { return false; } + if (!$this->isMimeSupported($file->getMimetype())) { + return false; + } + $mount = $file->getMountPoint(); if ($mount and !$mount->getOption('previews', true)){ return false; -- 2.39.5