aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@owncloud.com>2015-03-16 11:25:41 +0100
committerJoas Schilling <nickvergessen@owncloud.com>2015-03-16 12:45:18 +0100
commit2731b80f747786860d247255ff2a849b5249e87b (patch)
treefd63607ff06ce8f8a6f81c6b396ef58afee73789
parent47af533183c8b8bf3ed05083e9e48723e1e7e9e5 (diff)
downloadnextcloud-server-2731b80f747786860d247255ff2a849b5249e87b.tar.gz
nextcloud-server-2731b80f747786860d247255ff2a849b5249e87b.zip
Only register the core providers when necessary
-rw-r--r--lib/private/previewmanager.php19
1 files changed, 13 insertions, 6 deletions
diff --git a/lib/private/previewmanager.php b/lib/private/previewmanager.php
index 0a0c47df28f..9f78379ba0f 100644
--- a/lib/private/previewmanager.php
+++ b/lib/private/previewmanager.php
@@ -15,9 +15,12 @@ class PreviewManager implements IPreview {
/** @var \OCP\IConfig */
protected $config;
- /** @var array */
+ /** @var bool */
protected $providerListDirty = false;
+ /** @var bool */
+ protected $registeredCoreProviders = false;
+
/** @var array */
protected $providers = [];
@@ -34,11 +37,6 @@ class PreviewManager implements IPreview {
*/
public function __construct(\OCP\IConfig $config) {
$this->config = $config;
-
- if ($this->config->getSystemValue('enable_previews', true)) {
- // Register the default providers like txt, image, ...
- $this->registerCoreProviders();
- }
}
/**
@@ -72,6 +70,7 @@ class PreviewManager implements IPreview {
return [];
}
+ $this->registerCoreProviders();
if ($this->providerListDirty) {
$keys = array_map('strlen', array_keys($this->providers));
array_multisort($keys, SORT_DESC, $this->providers);
@@ -86,6 +85,7 @@ class PreviewManager implements IPreview {
* @return bool
*/
public function hasProviders() {
+ $this->registerCoreProviders();
return !empty($this->providers);
}
@@ -118,6 +118,7 @@ class PreviewManager implements IPreview {
return $this->mimeTypeSupportMap[$mimeType];
}
+ $this->registerCoreProviders();
$providerMimeTypes = array_keys($this->providers);
foreach ($providerMimeTypes as $supportedMimeType) {
if (preg_match($supportedMimeType, $mimeType)) {
@@ -140,6 +141,7 @@ class PreviewManager implements IPreview {
return false;
}
+ $this->registerCoreProviders();
if (!$this->isMimeSupported($file->getMimetype())) {
return false;
}
@@ -225,6 +227,11 @@ class PreviewManager implements IPreview {
* Register the default providers (if enabled)
*/
protected function registerCoreProviders() {
+ if ($this->registeredCoreProviders) {
+ return;
+ }
+ $this->registeredCoreProviders = true;
+
$this->registerCoreProvider('OC\Preview\TXT', '/text\/plain/');
$this->registerCoreProvider('OC\Preview\MarkDown', '/text\/(x-)?markdown/');
$this->registerCoreProvider('OC\Preview\Image', '/image\/(?!tiff$)(?!svg.*).*/');