diff options
author | Lukas Reschke <lukas@owncloud.com> | 2014-09-23 12:42:45 +0400 |
---|---|---|
committer | Lukas Reschke <lukas@owncloud.com> | 2014-09-23 12:42:45 +0400 |
commit | bb69eebde4e03b2672c99827d4ad5339ba432a85 (patch) | |
tree | 3e622b14aac7a7092e51167239764c28b42360e4 /lib/private/preview.php | |
parent | cb39c55073ebf7bc64e4bf0b7a29e2061f6cbbca (diff) |
Add a configuration switch for enabled preview mimetypes
Backport of https://github.com/owncloud/core/pull/11211 to stable7
Diffstat (limited to 'lib/private/preview.php')
-rwxr-xr-x | lib/private/preview.php | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/lib/private/preview.php b/lib/private/preview.php index 9006a2e8cbe..40b3eb8d44b 100755 --- a/lib/private/preview.php +++ b/lib/private/preview.php @@ -21,7 +21,6 @@ require_once 'preview/mp3.php'; require_once 'preview/pdf.php'; require_once 'preview/svg.php'; require_once 'preview/txt.php'; -require_once 'preview/unknown.php'; require_once 'preview/office.php'; class Preview { @@ -59,6 +58,7 @@ class Preview { //preview providers static private $providers = array(); static private $registeredProviders = array(); + static private $enabledProviders = array(); /** * @var \OCP\Files\FileInfo @@ -665,7 +665,33 @@ class Preview { * @return void */ public static function registerProvider($class, $options = array()) { - self::$registeredProviders[] = array('class' => $class, 'options' => $options); + /** + * Only register providers that have been explicitly enabled + * + * The following providers are enabled by default: + * - OC\Preview\Image + * - OC\Preview\MP3 + * - OC\Preview\TXT + * - OC\Preview\MarkDown + * + * The following providers are disabled by default due to performance or privacy concerns: + * - OC\Preview\Office + * - OC\Preview\SVG + * - OC\Preview\Movies + * - OC\Preview\PDF + */ + if(empty(self::$enabledProviders)) { + self::$enabledProviders = \OC_Config::getValue('enabledPreviewProviders', array( + 'OC\Preview\Image', + 'OC\Preview\MP3', + 'OC\Preview\TXT', + 'OC\Preview\MarkDown', + )); + } + + if(in_array($class, self::$enabledProviders)) { + self::$registeredProviders[] = array('class' => $class, 'options' => $options); + } } /** @@ -674,8 +700,7 @@ class Preview { */ private static function initProviders() { if (!\OC_Config::getValue('enable_previews', true)) { - $provider = new Preview\Unknown(array()); - self::$providers = array($provider->getMimeType() => $provider); + self::$providers = array(); return; } @@ -747,9 +772,7 @@ class Preview { self::initProviders(); } - //remove last element because it has the mimetype * - $providers = array_slice(self::$providers, 0, -1); - foreach ($providers as $supportedMimeType => $provider) { + foreach (self::$providers as $supportedMimeType => $provider) { if (preg_match($supportedMimeType, $mimeType)) { return true; } |