From 7fa3dfb91d662dfd196e1699e29e86aa2f0a85a6 Mon Sep 17 00:00:00 2001
From: "florian.azizian" <florian.azizian@maarch.org>
Date: Thu, 21 Feb 2019 21:29:58 +0100
Subject: [PATCH] FIX #9663 merge data does not work in email templates

---
 .../class/templates_controler_Abstract.php         |  2 +-
 .../templates/datasources/letterbox_attachment.php | 10 ++++++++--
 .../templates/templates_ajax_content_for_mails.php | 14 +++++++-------
 3 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/modules/templates/class/templates_controler_Abstract.php b/modules/templates/class/templates_controler_Abstract.php
index 7d5d9428224..bf27752ec6c 100755
--- a/modules/templates/class/templates_controler_Abstract.php
+++ b/modules/templates/class/templates_controler_Abstract.php
@@ -898,7 +898,7 @@ abstract class templates_controler_Abstract extends ObjectControler implements O
     * @param string $outputType : save to 'file', retrieve 'content'
     * @return merged content or path to file
     */
-    public function merge($templateId, $params = array(), $outputType)
+    public function merge($templateId, $params = array(), $outputType, $context = '')
     {
         include_once 'core/class/class_functions.php';
         include_once 'modules/templates/templates_tables_definition.php';
diff --git a/modules/templates/datasources/letterbox_attachment.php b/modules/templates/datasources/letterbox_attachment.php
index 9f8119fd2de..1036d7410c8 100755
--- a/modules/templates/datasources/letterbox_attachment.php
+++ b/modules/templates/datasources/letterbox_attachment.php
@@ -84,7 +84,7 @@ if (!empty($res_id)) {
             $myContact['title'] = $contacts->get_civility_contact($myContact['title']);
             $datasources['contact'][] = $myContact;
     
-            // single Contact
+        // single Contact
         } elseif (isset($res_contact_id) && isset($res_address_id) && is_numeric($res_contact_id)) {
             $stmt = $dbDatasource->query('SELECT * FROM view_contacts WHERE contact_id = ? and ca_id = ? ', array($res_contact_id, $res_address_id));
             $myContact = $stmt->fetch(PDO::FETCH_ASSOC);
@@ -96,6 +96,13 @@ if (!empty($res_id)) {
             $stmt = $dbDatasource->query('SELECT firstname, lastname, user_id, mail, phone, initials FROM users WHERE user_id = ?', [$res_contact_id]);
             $myContact = $stmt->fetch(PDO::FETCH_ASSOC);
             $datasources['contact'][] = $myContact;
+        } elseif (!empty($context)) {
+            $stmt = $dbDatasource->query('SELECT * FROM view_contacts WHERE contact_id = ? and ca_id = ?', array($datasources['res_letterbox'][0]['contact_id'], $datasources['res_letterbox'][0]['address_id']));
+            $myContact = $stmt->fetch(PDO::FETCH_ASSOC);
+            $myContact['postal_address'] = \Contact\controllers\ContactController::formatContactAddressAfnor($myContact);
+            $myContact['contact_title'] = $contacts->get_civility_contact($myContact['contact_title']);
+            $myContact['title'] = $contacts->get_civility_contact($myContact['title']);
+            $datasources['contact'][] = $myContact;
         }
     
         if (isset($datasources['contact'][0]['title']) && $datasources['contact'][0]['title'] == '') {
@@ -236,7 +243,6 @@ if (!empty($res_id)) {
         $copiesContact = false;
         $copiesEntity = false;
         if ($copies->item_type == 'user_id') {
-            
             $stmt2 = $dbDatasource->query('SELECT * FROM users WHERE user_id = ?', [$copies->item_id]);
             $copiesContact = $stmt2->fetchObject();
             $stmt3 = $dbDatasource->query('SELECT en.entity_id, en.entity_label FROM entities en, users_entities ue '
diff --git a/modules/templates/templates_ajax_content_for_mails.php b/modules/templates/templates_ajax_content_for_mails.php
index bed42750e24..3b8de783bae 100755
--- a/modules/templates/templates_ajax_content_for_mails.php
+++ b/modules/templates/templates_ajax_content_for_mails.php
@@ -33,23 +33,23 @@ $sec = new security();
 $res_view = $sec->retrieve_view_from_coll_id('letterbox_coll');
 
 $params = array(
-	'res_id' => $_GET['id'],
-	'coll_id'=> "letterbox_coll",
-	'res_view'=> $res_view
-	);
+    'res_id' => $_GET['id'],
+    'coll_id'=> "letterbox_coll",
+    'res_view'=> $res_view
+    );
 
 $template = $templateController->get($_REQUEST['templateId']);
-$template->template_content =  $templateController->merge($_REQUEST['templateId'], $params, 'content');
+$template->template_content =  $templateController->merge($_REQUEST['templateId'], $params, 'content', 'email');
 $template->template_content = str_replace("\r\n", "\n", $template->template_content);
 $template->template_content = str_replace("\r", "\n", $template->template_content);
 $template->template_content = str_replace("\n", "\\n ", $template->template_content);
 $template->template_content = str_replace("''", "'", $template->template_content);
 
-if($_REQUEST['mode'] == 'raw'){
+if ($_REQUEST['mode'] == 'raw') {
     $template->template_content = str_replace("<br>", "\\n", $template->template_content);
     $template->template_content = str_replace("<br />", "\\n", $template->template_content);
     $template->template_content = strip_tags($template->template_content);
 }
 
 echo "{status : 0, content : '" . addslashes($template->template_content) . "'}";
-exit();
\ No newline at end of file
+exit();
-- 
GitLab