move thumbnailer to api

This commit is contained in:
Ralf Becker 2016-04-06 19:39:49 +00:00
parent 9fd7b645ec
commit 5d72bbfc1c
5 changed files with 28 additions and 26 deletions

View File

@ -892,7 +892,7 @@ egw_LAB.wait(function() {
{ {
$name = egw::link(Vfs::download_url(substr($name,4))); $name = egw::link(Vfs::download_url(substr($name,4)));
} }
if ($name[0] == '/' || substr($name,0,7) == 'http://' || substr($name,0,8) == 'https://' || stripos($name,'etemplate/thumbnail.php') ) if ($name[0] == '/' || substr($name,0,7) == 'http://' || substr($name,0,8) == 'https://' || stripos($name,'api/thumbnail.php') )
{ {
if (!($name[0] == '/' || substr($name,0,7) == 'http://' || substr($name,0,8) == 'https://')) $name = '/'.$name; if (!($name[0] == '/' || substr($name,0,7) == 'http://' || substr($name,0,8) == 'https://')) $name = '/'.$name;
$url = $name; $url = $name;

View File

@ -1903,7 +1903,7 @@ class Vfs extends Vfs\StreamWrapper
{ {
$thparams['thsize'] = $thsize; $thparams['thsize'] = $thsize;
} }
$image = $GLOBALS['egw']->link('/etemplate/thumbnail.php', $thparams); $image = $GLOBALS['egw']->link('/api/thumbnail.php', $thparams);
} }
else else
{ {

View File

@ -10,6 +10,8 @@
* @version $Id$ * @version $Id$
*/ */
use EGroupware\Api;
use EGroupware\Api\Vfs;
//Set all necessary info and fire up egroupware //Set all necessary info and fire up egroupware
$GLOBALS['egw_info']['flags'] = array( $GLOBALS['egw_info']['flags'] = array(
@ -44,10 +46,10 @@ function get_srcfile()
} }
else else
{ {
$g_srcfile = egw_link::vfs_path($_GET['app'], $_GET['id'], $_GET['file'], true); $g_srcfile = Api\Link::vfs_path($_GET['app'], $_GET['id'], $_GET['file'], true);
} }
return egw_vfs::PREFIX.$g_srcfile; return Vfs::PREFIX.$g_srcfile;
} }
/** /**
@ -103,7 +105,7 @@ function get_maxsize()
function read_thumbnail($src) function read_thumbnail($src)
{ {
//Check whether the source file is readable and exists //Check whether the source file is readable and exists
if (!file_exists($src) || !egw_vfs::is_readable($src)) if (!file_exists($src) || !Vfs::is_readable($src))
{ {
return false; return false;
} }
@ -134,14 +136,14 @@ function read_thumbnail($src)
// Generate the destination filename and check whether the destination directory // Generate the destination filename and check whether the destination directory
// had been successfully created (the cache class used in gen_dstfile does that). // had been successfully created (the cache class used in gen_dstfile does that).
$stat = egw_vfs::stat(egw_vfs::parse_url($src, PHP_URL_PATH)); $stat = Vfs::stat(Vfs::parse_url($src, PHP_URL_PATH));
// if pdf-thumbnail-creation is not available, generate a single scaled-down pdf-icon // if pdf-thumbnail-creation is not available, generate a single scaled-down pdf-icon
if ($stat && egw_vfs::mime_content_type($src) == 'application/pdf' && !pdf_thumbnails_available()) if ($stat && Vfs::mime_content_type($src) == 'application/pdf' && !pdf_thumbnails_available())
{ {
list($app, $icon) = explode('/', egw_vfs::mime_icon('application/pdf'), 2); list($app, $icon) = explode('/', Vfs::mime_icon('application/pdf'), 2);
list(, $path) = explode($GLOBALS['egw_info']['server']['webserver_url'], list(, $path) = explode($GLOBALS['egw_info']['server']['webserver_url'],
common::image($app, $icon), 2); Api\Image::find($app, $icon), 2);
$src = EGW_SERVER_ROOT.$path; $src = EGW_SERVER_ROOT.$path;
$stat = false; $stat = false;
$maxsize = $height = $width = $minsize = $maxh = $minh = $maxw = $minw = 16; $maxsize = $height = $width = $minsize = $maxh = $minh = $maxw = $minw = 16;
@ -176,10 +178,10 @@ function read_thumbnail($src)
// simply output the mime type icon // simply output the mime type icon
if (!$exists) if (!$exists)
{ {
$mime = egw_vfs::mime_content_type($src); $mime = Vfs::mime_content_type($src);
list($app, $icon) = explode('/', egw_vfs::mime_icon($mime), 2); list($app, $icon) = explode('/', Vfs::mime_icon($mime), 2);
list(, $path) = explode($GLOBALS['egw_info']['server']['webserver_url'], list(, $path) = explode($GLOBALS['egw_info']['server']['webserver_url'],
common::image($app, $icon), 2); Api\Image::find($app, $icon), 2);
$dst = EGW_SERVER_ROOT.$path; $dst = EGW_SERVER_ROOT.$path;
$output_mime = mime_content_type($dst); $output_mime = mime_content_type($dst);
} }
@ -188,7 +190,7 @@ function read_thumbnail($src)
{ {
// Allow client to cache these, makes scrolling in filemanager much nicer // Allow client to cache these, makes scrolling in filemanager much nicer
// setting maximum allow caching time of one year, if url contains (non-empty) moditication time // setting maximum allow caching time of one year, if url contains (non-empty) moditication time
egw_session::cache_control(empty($_GET['mtime']) ? 300 : 31536000, true); // true = private / browser only caching Api\Session::cache_control(empty($_GET['mtime']) ? 300 : 31536000, true); // true = private / browser only caching
header('Content-Type: '.$output_mime); header('Content-Type: '.$output_mime);
readfile($dst); readfile($dst);
return true; return true;
@ -213,9 +215,9 @@ function read_thumbnail($src)
function gen_dstfile($src, $maxsize, $height=null, $width=null, $minsize=null) function gen_dstfile($src, $maxsize, $height=null, $width=null, $minsize=null)
{ {
// Use the egroupware file cache to store the thumbnails on a per instance basis // Use the egroupware file cache to store the thumbnails on a per instance basis
$cachefile = new egw_cache_files(array()); $cachefile = new Api\Cache\Files(array());
$size = ($height > 0 ? 'h'.$height : ($width > 0 ? 'w'.$height : ($minsize > 0 ? 'm'.$minsize : $maxsize))); $size = ($height > 0 ? 'h'.$height : ($width > 0 ? 'w'.$height : ($minsize > 0 ? 'm'.$minsize : $maxsize)));
return $cachefile->filename(egw_cache::keys(egw_cache::INSTANCE, 'etemplate', return $cachefile->filename(Api\Cache::keys(Api\Cache::INSTANCE, 'etemplate',
'thumb_'.md5($src.$size).'.png'), true); 'thumb_'.md5($src.$size).'.png'), true);
} }
@ -300,9 +302,9 @@ function exif_thumbnail_load($file)
function gd_image_load($file,$maxw,$maxh) function gd_image_load($file,$maxw,$maxh)
{ {
// Get mime type // Get mime type
list($type, $image_type) = explode('/', $mime = egw_vfs::mime_content_type($file)); list($type, $image_type) = explode('/', $mime = Vfs::mime_content_type($file));
// if $file is not from vfs, use mime_magic::filename2mime to get mime-type from extension // if $file is not from vfs, use Api\MimeMagic::filename2mime to get mime-type from extension
if (!$type) list($type, $image_type) = explode('/', $mime = mime_magic::filename2mime($file)); if (!$type) list($type, $image_type) = explode('/', $mime = Api\MimeMagic::filename2mime($file));
// Call the according gd constructor depending on the file type // Call the according gd constructor depending on the file type
if($type == 'image') if($type == 'image')
@ -322,9 +324,9 @@ function gd_image_load($file,$maxw,$maxh)
case 'bmp': case 'bmp':
return imagecreatefromwbmp($file); return imagecreatefromwbmp($file);
case 'svg+xml': case 'svg+xml':
html::content_header(egw_vfs::basename($file), $mime); Api\Header\Content::type(Vfs::basename($file), $mime);
readfile($file); readfile($file);
common::egw_exit(); exit;
} }
} }
else if ($type == 'application') else if ($type == 'application')
@ -358,7 +360,7 @@ function gd_image_load($file,$maxw,$maxh)
imagecopyresampled($img_dst, $thumb, 0, 0, 0, 0, $sw, $sh, imagesx($thumb), imagesy($thumb)); imagecopyresampled($img_dst, $thumb, 0, 0, 0, 0, $sw, $sh, imagesx($thumb), imagesy($thumb));
$thumb = $img_dst; $thumb = $img_dst;
} }
$mime = egw_vfs::mime_content_type($file); $mime = Vfs::mime_content_type($file);
$tag_image = null; $tag_image = null;
corner_tag($thumb, $tag_image, $mime); corner_tag($thumb, $tag_image, $mime);
imagedestroy($tag_image); imagedestroy($tag_image);
@ -381,7 +383,7 @@ function gd_image_load($file,$maxw,$maxh)
*/ */
function get_opendocument_thumbnail($file) function get_opendocument_thumbnail($file)
{ {
$mimetype = explode('/', egw_vfs::mime_content_type($file)); $mimetype = explode('/', Vfs::mime_content_type($file));
// Image is already there, but we can't access them directly through VFS // Image is already there, but we can't access them directly through VFS
$ext = $mimetype == 'application/vnd.oasis.opendocument.text' ? '.odt' : '.ods'; $ext = $mimetype == 'application/vnd.oasis.opendocument.text' ? '.odt' : '.ods';
@ -471,9 +473,9 @@ function corner_tag(&$target_image, &$tag_image, $mime)
// Find mime image, if no tag image set // Find mime image, if no tag image set
if(!$tag_image && $mime) if(!$tag_image && $mime)
{ {
list($app, $icon) = explode('/', egw_vfs::mime_icon($mime), 2); list($app, $icon) = explode('/', Vfs::mime_icon($mime), 2);
list(, $path) = explode($GLOBALS['egw_info']['server']['webserver_url'], list(, $path) = explode($GLOBALS['egw_info']['server']['webserver_url'],
common::image($app, $icon), 2); Api\Image::find($app, $icon), 2);
$dst = EGW_SERVER_ROOT.$path; $dst = EGW_SERVER_ROOT.$path;
$tag_image = imagecreatefrompng($dst); $tag_image = imagecreatefrompng($dst);
} }

View File

@ -343,7 +343,7 @@ class vfs_widget
$thparams['mtime'] = $value['mtime']; $thparams['mtime'] = $value['mtime'];
} }
$value = $GLOBALS['egw']->link('/etemplate/thumbnail.php', $thparams); $value = $GLOBALS['egw']->link('/api/thumbnail.php', $thparams);
} }
else else
{ {

View File

@ -148,7 +148,7 @@ egw.extend('images', egw.MODULE_GLOBAL, function()
{ {
var params = { 'path': _path, 'thsize': this.config('link_list_thumbnail') || 64}; var params = { 'path': _path, 'thsize': this.config('link_list_thumbnail') || 64};
if (_mtime) params.mtime = _mtime; if (_mtime) params.mtime = _mtime;
image = this.link('/etemplate/thumbnail.php', params); image = this.link('/api/thumbnail.php', params);
} }
// for svg return image itself // for svg return image itself
else if (type[0] == 'image' && type[1] == 'svg+xml') else if (type[0] == 'image' && type[1] == 'svg+xml')