Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
die_coolen_jungs
our_own_cloud_project
Commits
fca9d325
Commit
fca9d325
authored
Nov 27, 2014
by
Joas Schilling
Browse files
Move registration of core preview providers to preview
So the class files only have class code and don't execute code
parent
05a069c1
Changes
10
Hide whitespace changes
Inline
Side-by-side
lib/private/preview.php
View file @
fca9d325
...
...
@@ -21,7 +21,7 @@ require_once 'preview/movie.php';
require_once
'preview/mp3.php'
;
require_once
'preview/svg.php'
;
require_once
'preview/txt.php'
;
require_once
'preview/office.php'
;
require_once
'preview/office
-cl
.php'
;
require_once
'preview/bitmap.php'
;
class
Preview
{
...
...
@@ -744,10 +744,11 @@ class Preview {
return
;
}
if
(
count
(
self
::
$providers
)
>
0
)
{
if
(
!
empty
(
self
::
$providers
))
{
return
;
}
self
::
registerCoreProviders
();
foreach
(
self
::
$registeredProviders
as
$provider
)
{
$class
=
$provider
[
'class'
];
$options
=
$provider
[
'options'
];
...
...
@@ -759,7 +760,74 @@ class Preview {
$keys
=
array_map
(
'strlen'
,
array_keys
(
self
::
$providers
));
array_multisort
(
$keys
,
SORT_DESC
,
self
::
$providers
);
}
protected
static
function
registerCoreProviders
()
{
self
::
registerProvider
(
'OC\Preview\TXT'
);
self
::
registerProvider
(
'OC\Preview\MarkDown'
);
self
::
registerProvider
(
'OC\Preview\Image'
);
self
::
registerProvider
(
'OC\Preview\MP3'
);
// SVG, Office and Bitmap require imagick
if
(
extension_loaded
(
'imagick'
))
{
$checkImagick
=
new
\
Imagick
();
$imagickProviders
=
array
(
'SVG'
=>
'OC\Preview\SVG'
,
'TIFF'
=>
'OC\Preview\TIFF'
,
'PDF'
=>
'OC\Preview\PDF'
,
'AI'
=>
'OC\Preview\Illustrator'
,
'PSD'
=>
'OC\Preview\Photoshop'
,
// Requires adding 'eps' => array('application/postscript', null), to lib/private/mimetypes.list.php
'EPS'
=>
'OC\Preview\Postscript'
,
);
foreach
(
$imagickProviders
as
$queryFormat
=>
$provider
)
{
if
(
count
(
$checkImagick
->
queryFormats
(
$queryFormat
))
===
1
)
{
self
::
registerProvider
(
$provider
);
}
}
if
(
count
(
$checkImagick
->
queryFormats
(
'PDF'
))
===
1
)
{
// Office previews are currently not supported on Windows
if
(
!
\
OC_Util
::
runningOnWindows
()
&&
\
OC_Helper
::
is_function_enabled
(
'shell_exec'
))
{
$officeFound
=
is_string
(
\
OC
::
$server
->
getConfig
()
->
getSystemValue
(
'preview_libreoffice_path'
,
null
));
if
(
!
$officeFound
)
{
//let's see if there is libreoffice or openoffice on this machine
$whichLibreOffice
=
shell_exec
(
'command -v libreoffice'
);
$officeFound
=
!
empty
(
$whichLibreOffice
);
if
(
!
$officeFound
)
{
$whichOpenOffice
=
shell_exec
(
'command -v openoffice'
);
$officeFound
=
!
empty
(
$whichOpenOffice
);
}
}
if
(
$officeFound
)
{
self
::
registerProvider
(
'OC\Preview\MSOfficeDoc'
);
self
::
registerProvider
(
'OC\Preview\MSOffice2003'
);
self
::
registerProvider
(
'OC\Preview\MSOffice2007'
);
self
::
registerProvider
(
'OC\Preview\OpenDocument'
);
self
::
registerProvider
(
'OC\Preview\StarOffice'
);
}
}
}
}
// Video requires avconv or ffmpeg and is therefor
// currently not supported on Windows.
if
(
!
\
OC_Util
::
runningOnWindows
())
{
$avconvBinary
=
\
OC_Helper
::
findBinaryPath
(
'avconv'
);
$ffmpegBinary
=
(
$avconvBinary
)
?
null
:
\
OC_Helper
::
findBinaryPath
(
'ffmpeg'
);
if
(
$avconvBinary
||
$ffmpegBinary
)
{
// FIXME // a bit hacky but didn't want to use subclasses
\
OC\Preview\Movie
::
$avconvBinary
=
$avconvBinary
;
\
OC\Preview\Movie
::
$ffmpegBinary
=
$ffmpegBinary
;
self
::
registerProvider
(
'OC\Preview\Movie'
);
}
}
}
/**
...
...
lib/private/preview/bitmap.php
View file @
fca9d325
...
...
@@ -9,10 +9,6 @@ namespace OC\Preview;
use
Imagick
;
if
(
extension_loaded
(
'imagick'
))
{
$checkImagick
=
new
Imagick
();
class
Bitmap
extends
Provider
{
public
function
getMimeType
()
{
...
...
@@ -23,11 +19,11 @@ if (extension_loaded('imagick')) {
$tmpPath
=
$fileview
->
toTmpFile
(
$path
);
//create imagick object from bitmap or vector file
try
{
try
{
// Layer 0 contains either the bitmap or
// a flat representation of all vector layers
$bp
=
new
Imagick
(
$tmpPath
.
'[0]'
);
$bp
->
setImageFormat
(
'png'
);
}
catch
(
\
Exception
$e
)
{
\
OC_Log
::
write
(
'core'
,
$e
->
getmessage
(),
\
OC_Log
::
ERROR
);
...
...
@@ -35,17 +31,14 @@ if (extension_loaded('imagick')) {
}
unlink
(
$tmpPath
);
//new bitmap image object
$image
=
new
\
OC_Image
(
$bp
);
//check if image object is valid
return
$image
->
valid
()
?
$image
:
false
;
}
}
if
(
count
(
$checkImagick
->
queryFormats
(
'PDF'
))
===
1
)
{
//.pdf
class
PDF
extends
Bitmap
{
...
...
@@ -54,12 +47,7 @@ if (extension_loaded('imagick')) {
}
}
\
OC\Preview
::
registerProvider
(
'OC\Preview\PDF'
);
}
if
(
count
(
$checkImagick
->
queryFormats
(
'TIFF'
))
===
1
)
{
//.tiff
class
TIFF
extends
Bitmap
{
...
...
@@ -68,12 +56,7 @@ if (extension_loaded('imagick')) {
}
}
\
OC\Preview
::
registerProvider
(
'OC\Preview\TIFF'
);
}
if
(
count
(
$checkImagick
->
queryFormats
(
'AI'
))
===
1
)
{
//.ai
class
Illustrator
extends
Bitmap
{
...
...
@@ -82,12 +65,6 @@ if (extension_loaded('imagick')) {
}
}
\
OC\Preview
::
registerProvider
(
'OC\Preview\Illustrator'
);
}
// Requires adding 'eps' => array('application/postscript', null), to lib/private/mimetypes.list.php
if
(
count
(
$checkImagick
->
queryFormats
(
'EPS'
))
===
1
)
{
//.eps
class
Postscript
extends
Bitmap
{
...
...
@@ -98,11 +75,6 @@ if (extension_loaded('imagick')) {
}
\
OC\Preview
::
registerProvider
(
'OC\Preview\Postscript'
);
}
if
(
count
(
$checkImagick
->
queryFormats
(
'PSD'
))
===
1
)
{
//.psd
class
Photoshop
extends
Bitmap
{
...
...
@@ -111,7 +83,3 @@ if (extension_loaded('imagick')) {
}
}
\
OC\Preview
::
registerProvider
(
'OC\Preview\Photoshop'
);
}
}
lib/private/preview/image.php
View file @
fca9d325
...
...
@@ -35,5 +35,3 @@ class Image extends Provider {
}
}
\
OC\Preview
::
registerProvider
(
'OC\Preview\Image'
);
lib/private/preview/movie.php
View file @
fca9d325
...
...
@@ -8,13 +8,6 @@
*/
namespace
OC\Preview
;
// movie preview is currently not supported on Windows
if
(
!
\
OC_Util
::
runningOnWindows
())
{
$avconvBinary
=
\
OC_Helper
::
findBinaryPath
(
'avconv'
);
$ffmpegBinary
=
(
$avconvBinary
)
?
null
:
\
OC_Helper
::
findBinaryPath
(
'ffmpeg'
);
if
(
$avconvBinary
||
$ffmpegBinary
)
{
class
Movie
extends
Provider
{
public
static
$avconvBinary
;
public
static
$ffmpegBinary
;
...
...
@@ -95,12 +88,3 @@ if (!\OC_Util::runningOnWindows()) {
return
false
;
}
}
// a bit hacky but didn't want to use subclasses
Movie
::
$avconvBinary
=
$avconvBinary
;
Movie
::
$ffmpegBinary
=
$ffmpegBinary
;
\
OC\Preview
::
registerProvider
(
'OC\Preview\Movie'
);
}
}
lib/private/preview/mp3.php
View file @
fca9d325
...
...
@@ -44,5 +44,3 @@ class MP3 extends Provider {
}
}
\
OC\Preview
::
registerProvider
(
'OC\Preview\MP3'
);
lib/private/preview/office-cl.php
View file @
fca9d325
...
...
@@ -7,9 +7,6 @@
*/
namespace
OC\Preview
;
// office preview is currently not supported on Windows
if
(
!
\
OC_Util
::
runningOnWindows
())
{
//we need imagick to convert
class
Office
extends
Provider
{
...
...
@@ -90,8 +87,6 @@ if (!\OC_Util::runningOnWindows()) {
}
\
OC\Preview
::
registerProvider
(
'OC\Preview\MSOfficeDoc'
);
//.docm, .dotm, .xls(m), .xlt(m), .xla(m), .ppt(m), .pot(m), .pps(m), .ppa(m)
class
MSOffice2003
extends
Office
{
...
...
@@ -101,8 +96,6 @@ if (!\OC_Util::runningOnWindows()) {
}
\
OC\Preview
::
registerProvider
(
'OC\Preview\MSOffice2003'
);
//.docx, .dotx, .xlsx, .xltx, .pptx, .potx, .ppsx
class
MSOffice2007
extends
Office
{
...
...
@@ -112,8 +105,6 @@ if (!\OC_Util::runningOnWindows()) {
}
\
OC\Preview
::
registerProvider
(
'OC\Preview\MSOffice2007'
);
//.odt, .ott, .oth, .odm, .odg, .otg, .odp, .otp, .ods, .ots, .odc, .odf, .odb, .odi, .oxt
class
OpenDocument
extends
Office
{
...
...
@@ -123,8 +114,6 @@ if (!\OC_Util::runningOnWindows()) {
}
\
OC\Preview
::
registerProvider
(
'OC\Preview\OpenDocument'
);
//.sxw, .stw, .sxc, .stc, .sxd, .std, .sxi, .sti, .sxg, .sxm
class
StarOffice
extends
Office
{
...
...
@@ -133,6 +122,3 @@ if (!\OC_Util::runningOnWindows()) {
}
}
\
OC\Preview
::
registerProvider
(
'OC\Preview\StarOffice'
);
}
lib/private/preview/office.php
deleted
100644 → 0
View file @
05a069c1
<?php
/**
* Copyright (c) 2013 Georg Ehrke georg@ownCloud.com
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
//both, libreoffice backend and php fallback, need imagick
if
(
extension_loaded
(
'imagick'
))
{
$checkImagick
=
new
Imagick
();
if
(
count
(
$checkImagick
->
queryFormats
(
'PDF'
))
===
1
)
{
$isShellExecEnabled
=
\
OC_Helper
::
is_function_enabled
(
'shell_exec'
);
// LibreOffice preview is currently not supported on Windows
if
(
!
\
OC_Util
::
runningOnWindows
())
{
$whichLibreOffice
=
(
$isShellExecEnabled
?
shell_exec
(
'command -v libreoffice'
)
:
''
);
$isLibreOfficeAvailable
=
!
empty
(
$whichLibreOffice
);
$whichOpenOffice
=
(
$isShellExecEnabled
?
shell_exec
(
'command -v openoffice'
)
:
''
);
$isOpenOfficeAvailable
=
!
empty
(
$whichOpenOffice
);
//let's see if there is libreoffice or openoffice on this machine
if
(
$isShellExecEnabled
&&
(
$isLibreOfficeAvailable
||
$isOpenOfficeAvailable
||
is_string
(
\
OC_Config
::
getValue
(
'preview_libreoffice_path'
,
null
))))
{
require_once
(
'office-cl.php'
);
}
}
}
}
lib/private/preview/provider.php
View file @
fca9d325
...
...
@@ -5,18 +5,21 @@ abstract class Provider {
private
$options
;
public
function
__construct
(
$options
)
{
$this
->
options
=
$options
;
$this
->
options
=
$options
;
}
/**
* @return string Regex with the mimetypes that are supported by this provider
*/
abstract
public
function
getMimeType
();
/**
* Check if a preview can be generated for $path
*
* @param
string $path
* @param
\OC\Files\FileInfo $file
* @return bool
*/
public
function
isAvailable
(
$
path
)
{
public
function
isAvailable
(
$
file
)
{
return
true
;
}
...
...
@@ -32,5 +35,4 @@ abstract class Provider {
* OC_Image object of the preview
*/
abstract
public
function
getThumbnail
(
$path
,
$maxX
,
$maxY
,
$scalingup
,
$fileview
);
}
lib/private/preview/svg.php
View file @
fca9d325
...
...
@@ -9,12 +9,6 @@ namespace OC\Preview;
use
Imagick
;
if
(
extension_loaded
(
'imagick'
))
{
$checkImagick
=
new
Imagick
();
if
(
count
(
$checkImagick
->
queryFormats
(
'SVG'
))
===
1
)
{
class
SVG
extends
Provider
{
public
function
getMimeType
()
{
...
...
@@ -50,9 +44,4 @@ if (extension_loaded('imagick')) {
//check if image object is valid
return
$image
->
valid
()
?
$image
:
false
;
}
}
\
OC\Preview
::
registerProvider
(
'OC\Preview\SVG'
);
}
}
lib/private/preview/txt.php
View file @
fca9d325
...
...
@@ -8,28 +8,22 @@
namespace
OC\Preview
;
class
TXT
extends
Provider
{
/**
* {@inheritDoc}
*/
public
function
getMimeType
()
{
return
'/text\/plain/'
;
}
/**
* Check if a preview can be generated for $path
*
* @param \OC\Files\FileInfo $file
* @return bool
* {@inheritDoc}
*/
public
function
isAvailable
(
$file
)
{
return
$file
->
getSize
()
>
5
;
}
/**
* @param string $path
* @param int $maxX
* @param int $maxY
* @param boolean $scalingup
* @param \OC\Files\View $fileview
* @return bool|\OC_Image
* {@inheritDoc}
*/
public
function
getThumbnail
(
$path
,
$maxX
,
$maxY
,
$scalingup
,
$fileview
)
{
...
...
@@ -80,14 +74,9 @@ class TXT extends Provider {
}
}
\
OC\Preview
::
registerProvider
(
'OC\Preview\TXT'
);
class
MarkDown
extends
TXT
{
public
function
getMimeType
()
{
return
'/text\/(x-)?markdown/'
;
}
}
\
OC\Preview
::
registerProvider
(
'OC\Preview\MarkDown'
);
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment