Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Reschke <lukas@owncloud.com>2014-09-23 12:42:45 +0400
committerLukas Reschke <lukas@owncloud.com>2014-09-23 12:42:45 +0400
commitbb69eebde4e03b2672c99827d4ad5339ba432a85 (patch)
tree3e622b14aac7a7092e51167239764c28b42360e4 /lib/private/preview.php
parentcb39c55073ebf7bc64e4bf0b7a29e2061f6cbbca (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-xlib/private/preview.php37
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;
}