From c4632cda1a8dc731ae47e73ee53ee7fbcb3f61ac Mon Sep 17 00:00:00 2001 From: Romain Quetiez Date: Wed, 4 Jun 2014 13:10:23 +0000 Subject: [PATCH] Added a helper function to get an icon stored as an ormDocument: ormDocument::GetDownloadURL SVN:trunk[3191] --- core/ormdocument.class.inc.php | 13 ++++++++++++- pages/ajax.render.php | 6 ++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/core/ormdocument.class.inc.php b/core/ormdocument.class.inc.php index 94625b175..72a897f05 100644 --- a/core/ormdocument.class.inc.php +++ b/core/ormdocument.class.inc.php @@ -117,7 +117,18 @@ class ormDocument { return "".$this->GetFileName()."\n"; } - + + /** + * Returns an URL to download a document like an image (uses HTTP caching) + * @return string + */ + public function GetDownloadURL($sClass, $Id, $sAttCode) + { + // Compute a signature to reset the cache anytime the data changes (this is acceptable if used only with icon files) + $sSignature = md5($this->GetData()); + return utils::GetAbsoluteUrlAppRoot()."pages/ajax.render.php?operation=download_document&class=$sClass&id=$Id&field=$sAttCode&s=$sSignature&cache=86400"; + } + public function IsPreviewAvailable() { diff --git a/pages/ajax.render.php b/pages/ajax.render.php index 1bef4cf81..547c4c83d 100644 --- a/pages/ajax.render.php +++ b/pages/ajax.render.php @@ -778,9 +778,15 @@ try case 'download_document': $id = utils::ReadParam('id', ''); $sField = utils::ReadParam('field', ''); + $iCacheSec = (int) utils::ReadParam('cache', 0); if (!empty($sClass) && !empty($id) && !empty($sField)) { DownloadDocument($oPage, $sClass, $id, $sField, 'attachment'); + if ($iCacheSec > 0) + { + $oPage->add_header("Expires: "); // Reset the value set in ajax_page + $oPage->add_header("Cache-Control: no-transform,public,max-age=$iCacheSec,s-maxage=$iCacheSec"); + } } break;