diff options
-rw-r--r-- | pages/download.php | 50 | ||||
-rw-r--r-- | pages/photos/image/download.php | 41 | ||||
-rw-r--r-- | pages/photos/image/view.php | 16 | ||||
-rw-r--r-- | start.php | 10 |
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)); @@ -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 |