]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
added support for downloading images
authorcash <cash.costello@gmail.com>
Mon, 2 Jan 2012 14:48:22 +0000 (09:48 -0500)
committercash <cash.costello@gmail.com>
Mon, 2 Jan 2012 14:48:22 +0000 (09:48 -0500)
pages/download.php [deleted file]
pages/photos/image/download.php [new file with mode: 0644]
pages/photos/image/view.php
start.php

diff --git a/pages/download.php b/pages/download.php
deleted file mode 100644 (file)
index 23c3e39..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-/**
- * Tidypics Download Photos
- *
- * do not call this directly - call through page handler
- */
-
-global $CONFIG;
-
-$file_guid = (int) get_input("file_guid");
-$file = get_entity($file_guid);
-
-$type = get_input("type");
-
-if ($file) {
-       $filename = $file->originalfilename;
-       $mime = $file->mimetype;
-
-       header("Content-Type: $mime");
-       if ($type == "inline") {
-               header("Content-Disposition: inline; filename=\"$filename\"");
-       } else {
-               header("Content-Disposition: attachment; filename=\"$filename\"");
-       }
-
-       $readfile = new ElggFile($file_guid);
-       $readfile->owner_guid = $file->owner_guid;
-
-       $contents = $readfile->grabFile();
-
-       if (empty($contents)) {
-               echo file_get_contents(dirname(dirname(__FILE__)) . "/graphics/image_error_large.png" );
-       } else {
-
-               // expires every 60 days
-               $expires = 60 * 60*60*24;
-
-               header("Content-Length: " . strlen($contents));
-               header("Cache-Control: public", true);
-               header("Pragma: public", true);
-               header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $expires) . ' GMT', true);
-
-
-               echo $contents;
-       }
-
-       exit;
-} else {
-       register_error(elgg_echo("image:downloadfailed"));
-}
\ No newline at end of file
diff --git a/pages/photos/image/download.php b/pages/photos/image/download.php
new file mode 100644 (file)
index 0000000..ef47b76
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+/**
+ * Download a photo
+ *
+ * @author Cash Costello
+ * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License v2
+ */
+
+$guid = (int) get_input('guid');
+$image = get_entity($guid);
+
+$disposition = get_input('disposition', 'attachment');
+
+if ($image) {
+       $filename = $image->originalfilename;
+       $mime = $image->mimetype;
+
+       header("Content-Type: $mime");
+       header("Content-Disposition: $disposition; filename=\"$filename\"");
+
+       $contents = $image->grabFile();
+
+       if (empty($contents)) {
+               echo file_get_contents(dirname(dirname(__FILE__)) . "/graphics/image_error_large.png" );
+       } else {
+
+               // expires every 60 days
+               $expires = 60 * 60*60*24;
+
+               header("Content-Length: " . strlen($contents));
+               header("Cache-Control: public", true);
+               header("Pragma: public", true);
+               header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $expires) . ' GMT', true);
+
+               echo $contents;
+       }
+
+       exit;
+} else {
+       register_error(elgg_echo("image:downloadfailed"));
+}
index 22ccfb34d0ad99724ff5a232c7c907243708d989..f9157a900b56fdf9846878fb6c3f08a87292872d 100644 (file)
@@ -34,13 +34,15 @@ if (elgg_instanceof($owner, 'group')) {
 elgg_push_breadcrumb($album->title, $album->getURL());
 elgg_push_breadcrumb($photo->title);
 
-// add download button to title menu
-elgg_register_menu_item('title', array(
-       'name' => 'download',
-       'href' => 'photos/download',
-       'text' => elgg_echo('image:download'),
-       'link_class' => 'elgg-button elgg-button-action',
-));
+if (elgg_get_plugin_setting('download_link', 'tidypics')) {
+       // add download button to title menu
+       elgg_register_menu_item('title', array(
+               'name' => 'download',
+               'href' => "photos/download/$photo_guid",
+               'text' => elgg_echo('image:download'),
+               'link_class' => 'elgg-button elgg-button-action',
+       ));
+}
 
 $content = elgg_view_entity($photo, array('full_view' => true));
 
index 948d42fb5e8a4ddafce1496906e7b9c2734b6f10..5638037ccc5e825cc11208d20d4a33654268758a 100644 (file)
--- a/start.php
+++ b/start.php
@@ -199,13 +199,9 @@ function tidypics_page_handler($page) {
                        break;
 
                case "download": // download an image
-                       if (isset($page[1])) {
-                               set_input('file_guid', $page[1]);
-                       }
-                       if (isset($page[2])) {
-                               set_input('type', $page[2]);
-                       }
-                       include($CONFIG->pluginspath . "tidypics/pages/download.php");
+                       set_input('guid', $page[1]);
+                       set_input('disposition', elgg_extract(2, $page, 'attachment'));
+                       include "$base/image/download.php";
                        break;
 
                case "tagged": // all photos tagged with user