Merge pull request #15346 from oparoz/split-image-provider
Split image provider in one sub-class per media type
This commit is contained in:
commit
1720fdf5f4
|
@ -661,7 +661,11 @@ $CONFIG = array(
|
||||||
*
|
*
|
||||||
* The following providers are enabled by default:
|
* The following providers are enabled by default:
|
||||||
*
|
*
|
||||||
* - OC\Preview\Image
|
* - OC\Preview\PNG
|
||||||
|
* - OC\Preview\JPEG
|
||||||
|
* - OC\Preview\GIF
|
||||||
|
* - OC\Preview\BMP
|
||||||
|
* - OC\Preview\XBitmap
|
||||||
* - OC\Preview\MarkDown
|
* - OC\Preview\MarkDown
|
||||||
* - OC\Preview\MP3
|
* - OC\Preview\MP3
|
||||||
* - OC\Preview\TXT
|
* - OC\Preview\TXT
|
||||||
|
@ -697,7 +701,11 @@ $CONFIG = array(
|
||||||
* - OC\Preview\StarOffice
|
* - OC\Preview\StarOffice
|
||||||
*/
|
*/
|
||||||
'enabledPreviewProviders' => array(
|
'enabledPreviewProviders' => array(
|
||||||
'OC\Preview\Image',
|
'OC\Preview\PNG',
|
||||||
|
'OC\Preview\JPEG',
|
||||||
|
'OC\Preview\GIF',
|
||||||
|
'OC\Preview\BMP',
|
||||||
|
'OC\Preview\XBitmap',
|
||||||
'OC\Preview\MP3',
|
'OC\Preview\MP3',
|
||||||
'OC\Preview\TXT',
|
'OC\Preview\TXT',
|
||||||
'OC\Preview\MarkDown'
|
'OC\Preview\MarkDown'
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @author Olivier Paroz <owncloud@interfasys.ch>
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||||
|
* @license AGPL-3.0
|
||||||
|
*
|
||||||
|
* This code is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License, version 3,
|
||||||
|
* as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace OC\Preview;
|
||||||
|
|
||||||
|
class BMP extends Image {
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public function getMimeType() {
|
||||||
|
return '/image\/bmp/';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @author Olivier Paroz <owncloud@interfasys.ch>
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||||
|
* @license AGPL-3.0
|
||||||
|
*
|
||||||
|
* This code is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License, version 3,
|
||||||
|
* as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace OC\Preview;
|
||||||
|
|
||||||
|
class GIF extends Image {
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public function getMimeType() {
|
||||||
|
return '/image\/gif/';
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* @author Georg Ehrke <georg@owncloud.com>
|
* @author Georg Ehrke <georg@owncloud.com>
|
||||||
* @author Georg Ehrke <georg@ownCloud.com>
|
* @author Olivier Paroz <owncloud@interfasys.ch>
|
||||||
* @author Joas Schilling <nickvergessen@owncloud.com>
|
* @author Joas Schilling <nickvergessen@owncloud.com>
|
||||||
* @author Morris Jobke <hey@morrisjobke.de>
|
* @author Morris Jobke <hey@morrisjobke.de>
|
||||||
* @author Thomas Müller <thomas.mueller@tmit.eu>
|
* @author Thomas Müller <thomas.mueller@tmit.eu>
|
||||||
|
@ -25,13 +25,7 @@
|
||||||
*/
|
*/
|
||||||
namespace OC\Preview;
|
namespace OC\Preview;
|
||||||
|
|
||||||
class Image extends Provider {
|
abstract class Image extends Provider {
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
public function getMimeType() {
|
|
||||||
return '/image\/(?!tiff$)(?!svg.*).*/';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @author Olivier Paroz <owncloud@interfasys.ch>
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||||
|
* @license AGPL-3.0
|
||||||
|
*
|
||||||
|
* This code is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License, version 3,
|
||||||
|
* as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace OC\Preview;
|
||||||
|
|
||||||
|
class JPEG extends Image {
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public function getMimeType() {
|
||||||
|
return '/image\/jpeg/';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @author Olivier Paroz <owncloud@interfasys.ch>
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||||
|
* @license AGPL-3.0
|
||||||
|
*
|
||||||
|
* This code is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License, version 3,
|
||||||
|
* as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace OC\Preview;
|
||||||
|
|
||||||
|
class PNG extends Image {
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public function getMimeType() {
|
||||||
|
return '/image\/png/';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @author Olivier Paroz <owncloud@interfasys.ch>
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||||
|
* @license AGPL-3.0
|
||||||
|
*
|
||||||
|
* This code is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License, version 3,
|
||||||
|
* as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace OC\Preview;
|
||||||
|
|
||||||
|
class XBitmap extends Image {
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public function getMimeType() {
|
||||||
|
return '/image\/x-xbitmap/';
|
||||||
|
}
|
||||||
|
}
|
|
@ -188,7 +188,11 @@ class PreviewManager implements IPreview {
|
||||||
* List of enabled default providers
|
* List of enabled default providers
|
||||||
*
|
*
|
||||||
* The following providers are enabled by default:
|
* The following providers are enabled by default:
|
||||||
* - OC\Preview\Image
|
* - OC\Preview\PNG
|
||||||
|
* - OC\Preview\JPEG
|
||||||
|
* - OC\Preview\GIF
|
||||||
|
* - OC\Preview\BMP
|
||||||
|
* - OC\Preview\XBitmap
|
||||||
* - OC\Preview\MarkDown
|
* - OC\Preview\MarkDown
|
||||||
* - OC\Preview\MP3
|
* - OC\Preview\MP3
|
||||||
* - OC\Preview\TXT
|
* - OC\Preview\TXT
|
||||||
|
@ -215,12 +219,24 @@ class PreviewManager implements IPreview {
|
||||||
return $this->defaultProviders;
|
return $this->defaultProviders;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->defaultProviders = $this->config->getSystemValue('enabledPreviewProviders', [
|
$imageProviders = [
|
||||||
'OC\Preview\Image',
|
'OC\Preview\PNG',
|
||||||
|
'OC\Preview\JPEG',
|
||||||
|
'OC\Preview\GIF',
|
||||||
|
'OC\Preview\BMP',
|
||||||
|
'OC\Preview\XBitmap'
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->defaultProviders = $this->config->getSystemValue('enabledPreviewProviders', array_merge([
|
||||||
'OC\Preview\MarkDown',
|
'OC\Preview\MarkDown',
|
||||||
'OC\Preview\MP3',
|
'OC\Preview\MP3',
|
||||||
'OC\Preview\TXT',
|
'OC\Preview\TXT',
|
||||||
]);
|
], $imageProviders));
|
||||||
|
|
||||||
|
if (in_array('OC\Preview\Image', $this->defaultProviders)) {
|
||||||
|
$this->defaultProviders = array_merge($this->defaultProviders, $imageProviders);
|
||||||
|
}
|
||||||
|
$this->defaultProviders = array_unique($this->defaultProviders);
|
||||||
return $this->defaultProviders;
|
return $this->defaultProviders;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -249,7 +265,11 @@ class PreviewManager implements IPreview {
|
||||||
|
|
||||||
$this->registerCoreProvider('OC\Preview\TXT', '/text\/plain/');
|
$this->registerCoreProvider('OC\Preview\TXT', '/text\/plain/');
|
||||||
$this->registerCoreProvider('OC\Preview\MarkDown', '/text\/(x-)?markdown/');
|
$this->registerCoreProvider('OC\Preview\MarkDown', '/text\/(x-)?markdown/');
|
||||||
$this->registerCoreProvider('OC\Preview\Image', '/image\/(?!tiff$)(?!svg.*).*/');
|
$this->registerCoreProvider('OC\Preview\PNG', '/image\/png/');
|
||||||
|
$this->registerCoreProvider('OC\Preview\JPEG', '/image\/jpeg/');
|
||||||
|
$this->registerCoreProvider('OC\Preview\GIF', '/image\/gif/');
|
||||||
|
$this->registerCoreProvider('OC\Preview\BMP', '/image\/bmp/');
|
||||||
|
$this->registerCoreProvider('OC\Preview\XBitmap', '/image\/x-xbitmap/');
|
||||||
$this->registerCoreProvider('OC\Preview\MP3', '/audio\/mpeg/');
|
$this->registerCoreProvider('OC\Preview\MP3', '/audio\/mpeg/');
|
||||||
|
|
||||||
// SVG, Office and Bitmap require imagick
|
// SVG, Office and Bitmap require imagick
|
||||||
|
|
Loading…
Reference in New Issue