From fc3f4ebb5697aec27170ee4da7a43440d0a8385a Mon Sep 17 00:00:00 2001 From: prasad <prasad@vtiger.com> Date: Tue, 6 Feb 2018 18:55:11 +0530 Subject: [PATCH] Fixes #774: Eliminated friction when download attachment has same name (but different content) --- .../layouts/v7/modules/MailManager/MailOpen.tpl | 7 ++++--- .../modules/MailManager/models/Message.php | 15 +++++++++------ .../modules/MailManager/views/Mail.php | 5 +++-- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/MailOpen.tpl b/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/MailOpen.tpl index ba0e4faec..11a69d5c8 100644 --- a/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/MailOpen.tpl +++ b/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/MailOpen.tpl @@ -119,13 +119,14 @@ {assign var=ATTACHNAME value=$ATTACHVALUE['filename']} {if $INLINE_ATT[$ATTACHNAME] eq null} {assign var=DOWNLOAD_LINK value=$ATTACHNAME|@escape:'url'} + {assign var=ATTACHID value=$ATTACHVALUE['attachid']} <span> <i class="fa {$MAIL->getAttachmentIcon($ATTACHVALUE['path'])}"></i> - <a href="index.php?module={$MODULE}&view=Index&_operation=mail&_operationarg=attachment_dld&_muid={$MAIL->muid()}&_atname={$DOWNLOAD_LINK|@escape:'htmlall':'UTF-8'}"> + <a href="index.php?module={$MODULE}&view=Index&_operation=mail&_operationarg=attachment_dld&_muid={$MAIL->muid()}&_atid={$ATTACHID}&_atname={$DOWNLOAD_LINK|@escape:'htmlall':'UTF-8'}"> {$ATTACHNAME} </a> <span> ({$ATTACHVALUE['size']})</span> - <a href="index.php?module={$MODULE}&view=Index&_operation=mail&_operationarg=attachment_dld&_muid={$MAIL->muid()}&_atname={$DOWNLOAD_LINK|@escape:'htmlall':'UTF-8'}"> + <a href="index.php?module={$MODULE}&view=Index&_operation=mail&_operationarg=attachment_dld&_muid={$MAIL->muid()}&_atid={$ATTACHID}&_atname={$DOWNLOAD_LINK|@escape:'htmlall':'UTF-8'}"> <i class="fa fa-download"></i> </a> </span> @@ -135,4 +136,4 @@ </div> {/if} </div> -{/strip} \ No newline at end of file +{/strip} diff --git a/pkg/vtiger/modules/MailManager/modules/MailManager/models/Message.php b/pkg/vtiger/modules/MailManager/modules/MailManager/models/Message.php index 095a55de8..cc10a52e9 100644 --- a/pkg/vtiger/modules/MailManager/modules/MailManager/models/Message.php +++ b/pkg/vtiger/modules/MailManager/modules/MailManager/models/Message.php @@ -247,8 +247,9 @@ class MailManager_Message_Model extends Vtiger_MailRecord { * @global Array $upload_badext - List of bad extensions * @param Boolean $withContent - Used to load the Attachments with/withoud content * @param String $aName - Attachment Name + * @param Integer $aId - Attachment Id (to eliminate friction with same Attachment Name) */ - protected function loadAttachmentsFromDB($withContent, $aName=false) { + protected function loadAttachmentsFromDB($withContent, $aName=false, $aId=false) { $db = PearDatabase::getInstance(); $currentUserModel = Users_Record_Model::getCurrentUserModel(); @@ -260,7 +261,8 @@ class MailManager_Message_Model extends Vtiger_MailRecord { $filteredColumns = "aname, attachid, path, cid"; $whereClause = ""; - if ($aName) { $whereClause = " AND aname=?"; $params[] = $aName; } + if ($aName) { $whereClause .= " AND aname=?"; $params[] = $aName; } + if ($aId) { $whereClause .= " AND aid=?"; $params[] = $aId; } $atResult = $db->pquery("SELECT {$filteredColumns} FROM vtiger_mailmanager_mailattachments WHERE userid=? AND muid=? $whereClause", $params); @@ -279,7 +281,7 @@ class MailManager_Message_Model extends Vtiger_MailRecord { $filePath = $atResultRow['path'].$atResultRow['attachid'].'_'.sanitizeUploadFileName($atResultRow['aname'], vglobal('upload_badext')); $fileSize = $this->convertFileSize(filesize($filePath)); $data = ($withContent? $fileContent: false); - $this->_attachments[] = array('filename'=>$atResultRow['aname'], 'data' => $data, 'size' => $fileSize, 'path' => $filePath); + $this->_attachments[] = array('filename'=>$atResultRow['aname'], 'data' => $data, 'size' => $fileSize, 'path' => $filePath, 'attachid' => $atResultRow['attachid']); unset($fileContent); // Clear immediately } @@ -404,10 +406,11 @@ class MailManager_Message_Model extends Vtiger_MailRecord { * Gets the Mail Attachments * @param Boolean $withContent * @param String $aName + * @param Integer $aId * @return List of Attachments */ - public function attachments($withContent=true, $aName=false) { - $this->loadAttachmentsFromDB($withContent, $aName); + public function attachments($withContent=true, $aName=false, $aId=false) { + $this->loadAttachmentsFromDB($withContent, $aName, $aId); return $this->_attachments; } @@ -700,4 +703,4 @@ class MailManager_Message_Model extends Vtiger_MailRecord { return $icon; } } -?> \ No newline at end of file +?> diff --git a/pkg/vtiger/modules/MailManager/modules/MailManager/views/Mail.php b/pkg/vtiger/modules/MailManager/modules/MailManager/views/Mail.php index 34d07c68b..7d03ebff4 100755 --- a/pkg/vtiger/modules/MailManager/modules/MailManager/views/Mail.php +++ b/pkg/vtiger/modules/MailManager/modules/MailManager/views/Mail.php @@ -245,6 +245,7 @@ class MailManager_Mail_View extends MailManager_Abstract_View { } else if ('attachment_dld' == $this->getOperationArg($request)) { $attachmentName = $request->getRaw('_atname'); $attachmentName= str_replace(' ', '_', $attachmentName); + $attachmentId = $request->get('_atid'); if (MailManager_Utils_Helper::allowedFileExtension($attachmentName)) { // This is to handle larger uploads @@ -253,7 +254,7 @@ class MailManager_Mail_View extends MailManager_Abstract_View { $mail = new MailManager_Message_Model(false, false); $mail->readFromDB($request->get('_muid')); - $attachment = $mail->attachments(true, $attachmentName); + $attachment = $mail->attachments(true, $attachmentName, $attachmentId); //As we are sending attachment name, it will return only that attachment details if($attachment[0]['data']) { header("Content-type: application/octet-stream"); @@ -361,4 +362,4 @@ class MailManager_Mail_View extends MailManager_Abstract_View { return $request->validateReadAccess(); } } -?> \ No newline at end of file +?> -- GitLab