From 77c12342b817798101b84ee76191f570a5aa8862 Mon Sep 17 00:00:00 2001
From: Alan Bell <alanbell@ubuntu.com>
Date: Tue, 26 Apr 2016 12:53:33 +0100
Subject: [PATCH] allow sent mails to be filed correctly ref #142

---
 .../modules/MailManager/views/Mail.php        |  3 +-
 .../modules/MailManager/views/Relation.php    | 40 +++++++++++--------
 .../templates/resources/MailManager.js        |  1 +
 3 files changed, 27 insertions(+), 17 deletions(-)
 mode change 100644 => 100755 pkg/vtiger/modules/MailManager/modules/MailManager/views/Mail.php
 mode change 100644 => 100755 pkg/vtiger/modules/MailManager/modules/MailManager/views/Relation.php
 mode change 100644 => 100755 pkg/vtiger/modules/MailManager/templates/resources/MailManager.js

diff --git a/pkg/vtiger/modules/MailManager/modules/MailManager/views/Mail.php b/pkg/vtiger/modules/MailManager/modules/MailManager/views/Mail.php
old mode 100644
new mode 100755
index 51b1757b4..a36ca4917
--- a/pkg/vtiger/modules/MailManager/modules/MailManager/views/Mail.php
+++ b/pkg/vtiger/modules/MailManager/modules/MailManager/views/Mail.php
@@ -39,6 +39,7 @@ class MailManager_Mail_View extends MailManager_Abstract_View {
 
 			$metainfo  = array(
 					'from' => $mail->from(), 'subject' => $mail->subject(),
+					'sendto'=>$mail->to(),
 					'msgno' => $mail->msgNo(), 'msguid' => $mail->uniqueid(),
 					'folder' => $foldername );
 
@@ -323,4 +324,4 @@ class MailManager_Mail_View extends MailManager_Abstract_View {
             return $request->validateReadAccess(); 
         } 
 }
-?>
\ No newline at end of file
+?>
diff --git a/pkg/vtiger/modules/MailManager/modules/MailManager/views/Relation.php b/pkg/vtiger/modules/MailManager/modules/MailManager/views/Relation.php
old mode 100644
new mode 100755
index 78e171764..b8d9cd082
--- a/pkg/vtiger/modules/MailManager/modules/MailManager/views/Relation.php
+++ b/pkg/vtiger/modules/MailManager/modules/MailManager/views/Relation.php
@@ -55,7 +55,13 @@ class MailManager_Relation_View extends MailManager_Abstract_View {
 
 			// Check if the message is already linked.
 			$linkedto = MailManager_Relate_Action::associatedLink($request->get('_msguid'));
-			// If the message was not linked, lookup for matching records, using FROM address
+			// If the message was not linked, lookup for matching records, using FROM address unless it is in the sent folder
+      $folder=$request->get('_folder');
+      if ($folder=="Sent"){
+        $contacts=$request->get('_msendto');
+      }else{
+			  $contacts=$request->get('_mfrom');
+			}
 			if (empty($linkedto)) {
 				$results = array();
 				$modules = array();
@@ -63,10 +69,8 @@ class MailManager_Relation_View extends MailManager_Abstract_View {
 				foreach (self::$MODULES as $MODULE) {
 					if(!in_array($MODULE, $allowedModules)) continue;
 
-					$from = $request->get('_mfrom');
-					if(empty($from)) continue;
-
-					$results[$MODULE] = $this->lookupModuleRecordsWithEmail($MODULE, $from);
+					if(empty($contacts)) continue;
+					$results[$MODULE] = $this->lookupModuleRecordsWithEmail($MODULE, $contacts);
 					$describe = $this->ws_describe($MODULE);
 					$modules[$MODULE] = array('label' => $describe['label'], 'name' => textlength_check($describe['name']), 'id' => $describe['idPrefix'] );
 
@@ -417,18 +421,22 @@ class MailManager_Relation_View extends MailManager_Abstract_View {
 	 * @param Email Address $email
 	 * @return Array
 	 */
-	public function lookupModuleRecordsWithEmail($module, $email) {
+	public function lookupModuleRecordsWithEmail($module, $emails) {
 		$currentUserModel = vglobal('current_user');
-		$query = $this->buildSearchQuery($module, $email, 'EMAIL');
-		$qresults = vtws_query( $query, $currentUserModel );
-		$describe = $this->ws_describe($module);
-		$labelFields = explode(',', $describe['labelFields']);
-
+    //could be to multiple email addresses
 		$results = array();
-		foreach($qresults as $qresult) {
-			$labelValues = array();
-			foreach($labelFields as $fieldname) {
-				if(isset($qresult[$fieldname])) $labelValues[] = $qresult[$fieldname];
+    foreach(explode(",",$emails) as $email){
+      $query = $this->buildSearchQuery($module, $email, 'EMAIL');
+      $qresults = vtws_query( $query, $currentUserModel );
+      $describe = $this->ws_describe($module);
+      $labelFields = explode(',', $describe['labelFields']);
+      foreach($qresults as $qresult) {
+        $labelValues = array();
+        foreach($labelFields as $fieldname) {
+          if(isset($qresult[$fieldname])) $labelValues[] = $qresult[$fieldname];
+        }
+        $ids = vtws_getIdComponents($qresult['id']);
+        $results[] = array( 'wsid' => $qresult['id'], 'id' => $ids[1], 'label' => implode(' ', $labelValues));
 			}
 			$ids = vtws_getIdComponents($qresult['id']);
 			$results[] = array( 'wsid' => $qresult['id'], 'id' => $ids[1], 'label' => implode(' ', $labelValues));
@@ -440,4 +448,4 @@ class MailManager_Relation_View extends MailManager_Abstract_View {
             return $request->validateWriteAccess(); 
         }
 }
-?>
\ No newline at end of file
+?>
diff --git a/pkg/vtiger/modules/MailManager/templates/resources/MailManager.js b/pkg/vtiger/modules/MailManager/templates/resources/MailManager.js
old mode 100644
new mode 100755
index ecc7388a4..e0368d335
--- a/pkg/vtiger/modules/MailManager/templates/resources/MailManager.js
+++ b/pkg/vtiger/modules/MailManager/templates/resources/MailManager.js
@@ -766,6 +766,7 @@ if (typeof(MailManager) == 'undefined') {
 
 			var meta = MailManager.mail_open_meta;
                         AppConnector.request(MailManager._baseurl() + "_operation=relation&_operationarg=find&_mfrom=" + encodeURIComponent(meta['from']) +
+                        '&_msendto='+ encodeURIComponent(meta['sendto']) +
 				'&_folder=' +encodeURIComponent(meta['folder']) +'&_msgno=' +encodeURIComponent(meta['msgno']) +'&_msguid=' +
 				encodeURIComponent(meta['msguid'].replace('<', '&lt;').replace('>', '&gt;'))).then(function(responseJSON) { 
                                         responseJSON = JSON.parse(responseJSON);
-- 
GitLab