diff options
author | Sem <sembrestels@riseup.net> | 2012-02-25 01:38:29 +0100 |
---|---|---|
committer | Sem <sembrestels@riseup.net> | 2012-02-25 01:38:29 +0100 |
commit | 8ccd45aa77d290906fd42dcf5520a434303d4f68 (patch) | |
tree | f1cb3ccc39ce4e8a4ebafb68e414c0c963790dc6 | |
parent | 3a948fa46583e2419388d0c04e910f5d69721d3e (diff) | |
download | elgg-8ccd45aa77d290906fd42dcf5520a434303d4f68.tar.gz elgg-8ccd45aa77d290906fd42dcf5520a434303d4f68.tar.bz2 |
Saving thumbnails in server and serving them secure.
-rw-r--r-- | actions/videolist/edit.php | 12 | ||||
-rw-r--r-- | start.php | 2 | ||||
-rw-r--r-- | thumbnail.php | 35 |
3 files changed, 48 insertions, 1 deletions
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'));
@@ -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 @@ +<?php +/** + * Elgg file thumbnail + * + * @package ElggFile + */ + +// Get engine +require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); + +// Get videolist item GUID +$guid = (int) get_input('guid', 0); + +// Get file thumbnail size +$size = get_input('size', 'small'); + +$item = get_entity($guid); +if (!$item || $item->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; |