]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Saving thumbnails in server and serving them secure.
authorSem <sembrestels@riseup.net>
Sat, 25 Feb 2012 00:38:29 +0000 (01:38 +0100)
committerSem <sembrestels@riseup.net>
Sat, 25 Feb 2012 00:38:29 +0000 (01:38 +0100)
actions/videolist/edit.php
start.php
thumbnail.php [new file with mode: 0644]

index 6670ceadb33c9d0ad453d541dfb57f422cb70caa..be566de7ef1000a70083f999679e5635121ab258 100644 (file)
@@ -71,6 +71,18 @@ $video->container_guid = $container_guid;
 if ($video->save()) {\r
 \r
        elgg_clear_sticky_form('videolist');\r
+       \r
+       // Let's save the thumbnail in the data folder\r
+       $thumbnail = file_get_contents($video->thumbnail);\r
+       if ($thumbnail) {\r
+               $prefix = "videolist/" . $video->guid;\r
+               $filehandler = new ElggFile();\r
+               $filehandler->owner_guid = $video->owner_guid;\r
+               $filehandler->setFilename($prefix . ".jpg");\r
+               $filehandler->open("write");\r
+               $filehandler->write($thumbnail);\r
+               $filehandler->close();\r
+       }\r
 \r
        system_message(elgg_echo('videolist:saved'));\r
 \r
index 4c29549eb5a5590f19d14f4edeb484d597f0ad5d..ff668f00cded075e6b6d0ebd51e216a2771bae2b 100644 (file)
--- 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 (file)
index 0000000..bd93f8e
--- /dev/null
@@ -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;