From: Sem Date: Sat, 25 Feb 2012 00:38:29 +0000 (+0100) Subject: Saving thumbnails in server and serving them secure. X-Git-Url: https://gitweb.fluxo.info/?a=commitdiff_plain;h=8ccd45aa77d290906fd42dcf5520a434303d4f68;p=lorea%2Felgg.git Saving thumbnails in server and serving them secure. --- diff --git a/actions/videolist/edit.php b/actions/videolist/edit.php index 6670ceadb..be566de7e 100644 --- a/actions/videolist/edit.php +++ b/actions/videolist/edit.php @@ -71,6 +71,18 @@ $video->container_guid = $container_guid; if ($video->save()) { elgg_clear_sticky_form('videolist'); + + // Let's save the thumbnail in the data folder + $thumbnail = file_get_contents($video->thumbnail); + if ($thumbnail) { + $prefix = "videolist/" . $video->guid; + $filehandler = new ElggFile(); + $filehandler->owner_guid = $video->owner_guid; + $filehandler->setFilename($prefix . ".jpg"); + $filehandler->open("write"); + $filehandler->write($thumbnail); + $filehandler->close(); + } system_message(elgg_echo('videolist:saved')); diff --git a/start.php b/start.php index 4c29549eb..ff668f00c 100644 --- a/start.php +++ b/start.php @@ -255,7 +255,7 @@ function videolist_icon_url_override($hook, $type, $returnvalue, $params) { // tiny thumbnails are too small to be useful, so give a generic video icon if ($size != 'tiny' && isset($videolist_item->thumbnail)) { - return $videolist_item->thumbnail; + return elgg_get_site_url() . "mod/videolist/thumbnail.php?guid=" . $videolist_item->guid; } if (in_array($size, array('tiny', 'small', 'medium'))){ diff --git a/thumbnail.php b/thumbnail.php new file mode 100644 index 000000000..bd93f8e63 --- /dev/null +++ b/thumbnail.php @@ -0,0 +1,35 @@ +getSubtype() != "videolist_item") { + exit; +} + +$readfile = new ElggFile(); +$readfile->owner_guid = $item->owner_guid; +$readfile->setFilename("videolist/{$item->guid}.jpg"); +$contents = $readfile->grabFile(); + +// caching images for 10 days +header("Content-type: image/jpeg"); +header('Expires: ' . date('r',time() + 864000)); +header("Pragma: public", true); +header("Cache-Control: public", true); +header("Content-Length: " . strlen($contents)); + +echo $contents; +exit;