aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pages/download.php50
-rw-r--r--pages/photos/image/download.php41
-rw-r--r--pages/photos/image/view.php16
-rw-r--r--start.php10
4 files changed, 53 insertions, 64 deletions
diff --git a/pages/download.php b/pages/download.php
deleted file mode 100644
index 23c3e39f4..000000000
--- a/pages/download.php
+++ /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
index 000000000..ef47b7638
--- /dev/null
+++ b/pages/photos/image/download.php
@@ -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"));
+}
diff --git a/pages/photos/image/view.php b/pages/photos/image/view.php
index 22ccfb34d..f9157a900 100644
--- a/pages/photos/image/view.php
+++ b/pages/photos/image/view.php
@@ -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));
diff --git a/start.php b/start.php
index 948d42fb5..5638037cc 100644
--- 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