Only register the core providers when necessary

This commit is contained in:
Joas Schilling 2015-03-16 11:25:41 +01:00
parent 47af533183
commit 2731b80f74
1 changed files with 13 additions and 6 deletions

View File

@ -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.*).*/');