diff options
author | Lukas Reschke <lukas@owncloud.com> | 2014-09-19 13:35:21 +0200 |
---|---|---|
committer | Lukas Reschke <lukas@owncloud.com> | 2014-09-22 16:09:08 +0200 |
commit | ca3447fcdea878ade24caed4ad300697fc132d08 (patch) | |
tree | 2749ec20587207a007ac35e76d5d1d48712b5606 /lib/private/preview.php | |
parent | 831d34f084e4c2f6b13303f58e12a9f96eb10a74 (diff) | |
download | nextcloud-server-ca3447fcdea878ade24caed4ad300697fc132d08.tar.gz nextcloud-server-ca3447fcdea878ade24caed4ad300697fc132d08.zip |
Add a configuration switch for enabled preview mimetypes
Diffstat (limited to 'lib/private/preview.php')
-rwxr-xr-x | lib/private/preview.php | 47 |
1 files changed, 35 insertions, 12 deletions
diff --git a/lib/private/preview.php b/lib/private/preview.php index b04cc2b8564..9d44d00e686 100755 --- a/lib/private/preview.php +++ b/lib/private/preview.php @@ -13,7 +13,6 @@ */ namespace OC; -use OC\Files\Filesystem; use OC\Preview\Provider; use OCP\Files\NotFoundException; @@ -23,7 +22,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'; require_once 'preview/tiff.php'; @@ -62,6 +60,7 @@ class Preview { //preview providers static private $providers = array(); static private $registeredProviders = array(); + static private $enabledProviders = array(); /** * @var \OCP\Files\FileInfo @@ -669,12 +668,39 @@ class Preview { } /** - * register a new preview provider to be used + * Register a new preview provider to be used + * @param $class * @param array $options - * @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 + * - OC\Preview\Tiff + */ + if(empty(self::$enabledProviders)) { + self::$enabledProviders = \OC::$server->getConfig()->getSystemValue('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); + } } /** @@ -682,9 +708,8 @@ class Preview { * @return void */ private static function initProviders() { - if (!\OC_Config::getValue('enable_previews', true)) { - $provider = new Preview\Unknown(array()); - self::$providers = array($provider->getMimeType() => $provider); + if (!\OC::$server->getConfig()->getSystemValue('enable_previews', true)) { + self::$providers = array(); return; } @@ -698,12 +723,12 @@ class Preview { /** @var $object Provider */ $object = new $class($options); - self::$providers[$object->getMimeType()] = $object; } $keys = array_map('strlen', array_keys(self::$providers)); array_multisort($keys, SORT_DESC, self::$providers); + } public static function post_write($args) { @@ -758,9 +783,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) { /** * @var \OC\Preview\Provider $provider */ |