From f139edeec75fcd0c72f9d7194a0b2b0a09e6741a Mon Sep 17 00:00:00 2001
From: "florian.azizian" <florian.azizian@maarch.org>
Date: Wed, 17 Oct 2018 17:34:03 +0100
Subject: [PATCH] FIX #7995 edit contact in detail

---
 .../contact_addresses_up_db.php               | 25 +++---
 .../class/class_contacts_v2_Abstract.php      | 42 +++++-----
 .../indexing_searching/details.php            |  2 +-
 .../my_contacts/info_contact_iframe.php       | 77 ++++++++++++-------
 .../my_contacts/update_address_iframe.php     | 30 ++++----
 5 files changed, 96 insertions(+), 80 deletions(-)

diff --git a/apps/maarch_entreprise/admin/contacts/contact_addresses/contact_addresses_up_db.php b/apps/maarch_entreprise/admin/contacts/contact_addresses/contact_addresses_up_db.php
index f8841db15b8..0e3788de45b 100755
--- a/apps/maarch_entreprise/admin/contacts/contact_addresses/contact_addresses_up_db.php
+++ b/apps/maarch_entreprise/admin/contacts/contact_addresses/contact_addresses_up_db.php
@@ -49,9 +49,8 @@ if (!$return) {
 }
 
 if (!$return) {
-    $_SESSION['error'] = _SERVICE . ' ' . _UNKNOWN;
-    ?>
-    <script type="text/javascript">window.top.location.href='<?php echo $_SESSION['config']['businessappurl'];?>index.php';</script>
+    $_SESSION['error'] = _SERVICE . ' ' . _UNKNOWN; ?>
+    <script type="text/javascript">window.top.location.href='<?php echo $_SESSION['config']['businessappurl']; ?>index.php';</script>
     <?php
     exit();
 }
@@ -61,18 +60,19 @@ require_once("apps".DIRECTORY_SEPARATOR.$_SESSION['config']['app_id'].DIRECTORY_
 $contact = new contacts_v2();
 $iframe = false;
 
-if(isset($_GET['mycontact']) && $_GET['mycontact'] <> ''){
-	$admin = false;
-	if($_GET['mycontact'] == 'iframe'){
-		$iframe = 1;
-	} else if ($_GET['mycontact'] == 'iframe_add_up') {
-		$iframe = 2;
-	} else if ($_GET['mycontact'] == 'fromContactIframe') {
+if (isset($_GET['mycontact']) && $_GET['mycontact'] <> '') {
+    $admin = false;
+    if ($_GET['mycontact'] == 'iframe') {
+        $iframe = 1;
+    } elseif ($_GET['mycontact'] == 'iframe_add_up') {
+        $iframe = 2;
+    } elseif ($_GET['mycontact'] == 'fromContactIframe') {
         $iframe = 3;
+    } elseif ($_GET['mycontact'] == 'editDetail') {
+        $iframe = 4;
     }
-
 } else {
-	$admin = true;
+    $admin = true;
 }
 
 if (isset($_REQUEST['fromContactAddressesList'])) {
@@ -80,4 +80,3 @@ if (isset($_REQUEST['fromContactAddressesList'])) {
 }
 
 $contact->addupaddress($_POST['mode'], $admin, $iframe);
-?>
diff --git a/apps/maarch_entreprise/class/class_contacts_v2_Abstract.php b/apps/maarch_entreprise/class/class_contacts_v2_Abstract.php
index 247962af44e..0c5cf40ea08 100755
--- a/apps/maarch_entreprise/class/class_contacts_v2_Abstract.php
+++ b/apps/maarch_entreprise/class/class_contacts_v2_Abstract.php
@@ -1381,11 +1381,8 @@ abstract class contacts_v2_Abstract extends Database
             echo '</h2>';
         }
 
-        if ($iframe != true) {
-            echo '<div id="inner_content_contact" class="clearfix" align="center">';
-        } else {
-            echo '<div id="inner_content_contact" class="clearfix" align="center">';
-        }
+        echo '<div id="inner_content_contact" class="clearfix" align="center">';
+
         if ($state == false) {
             echo '<br /><br /><br /><br />'._THE_ADDRESS.' '._UNKOWN.'<br /><br /><br /><br />';
         } else {
@@ -1404,6 +1401,8 @@ abstract class contacts_v2_Abstract extends Database
                 $action = $_SESSION['config']['businessappurl'].'index.php?display=false&page=contact_addresses_up_db&mycontact=iframe_add_up';
             } elseif ($iframe == 'fromContactIframe') {
                 $action = $_SESSION['config']['businessappurl'].'index.php?display=false&page=contact_addresses_up_db&mycontact=fromContactIframe';
+            } elseif ($iframe == 'editDetail') {
+                $action = 'index.php?display=false&page=contact_addresses_up_db&mycontact=editDetail&editDetail';
             }
             if (isset($_SESSION['contact_address']['fromContactAddressesList']) && $_SESSION['contact_address']['fromContactAddressesList'] != '') {
                 $action = $_SESSION['config']['businessappurl'].'index.php?display=true&page=contact_addresses_up_db&fromContactAddressesList';
@@ -2118,32 +2117,29 @@ abstract class contacts_v2_Abstract extends Database
         if ($iframe) {
             if ($mode == 'add') {
                 if ($iframe == 1) {
-                    $path_contacts = $_SESSION['config']['businessappurl']
-                                              .'index.php?display=false&dir=my_contacts&page=create_contact_iframe&created=Y';
-                    $path_contacts_add_errors = $_SESSION['config']['businessappurl']
-                                              .'index.php?display=false&dir=my_contacts&page=create_address_iframe';
+                    $path_contacts = 'index.php?display=false&dir=my_contacts&page=create_contact_iframe&created=Y';
+                    $path_contacts_add_errors = 'index.php?display=false&dir=my_contacts&page=create_address_iframe';
                 } elseif ($iframe == 2) {
-                    $path_contacts = $_SESSION['config']['businessappurl']
-                                          .'index.php?display=false&dir=my_contacts&page=info_contact_iframe&contactid='.$_SESSION['contact']['current_contact_id'].'&addressid='.$_SESSION['contact']['current_address_id'];
-                    $path_contacts_add_errors = $_SESSION['config']['businessappurl']
-                                              .'index.php?display=false&dir=my_contacts&page=create_address_iframe&iframe=iframe_up_add';
+                    $path_contacts = 'index.php?display=false&dir=my_contacts&page=info_contact_iframe&contactid='.$_SESSION['contact']['current_contact_id'].'&addressid='.$_SESSION['contact']['current_address_id'];
+                    $path_contacts_add_errors = 'index.php?display=false&dir=my_contacts&page=create_address_iframe&iframe=iframe_up_add';
                 } elseif ($iframe == 3) {
-                    $path_contacts = $_SESSION['config']['businessappurl']
-                                          .'index.php?display=false&dir=my_contacts&page=info_contact_iframe&created=add&contactid='.$_SESSION['contact']['current_contact_id'].'&addressid='.$_SESSION['contact']['current_address_id'];
-                    $path_contacts_add_errors = $_SESSION['config']['businessappurl']
-                                              .'index.php?display=false&dir=my_contacts&page=create_address_iframe&iframe=iframe_up_add';
+                    $path_contacts = 'index.php?display=false&dir=my_contacts&page=info_contact_iframe&created=add&contactid='.$_SESSION['contact']['current_contact_id'].'&addressid='.$_SESSION['contact']['current_address_id'];
+                    $path_contacts_add_errors = 'index.php?display=false&dir=my_contacts&page=create_address_iframe&iframe=iframe_up_add';
                 }
             } elseif ($mode == 'up') {
                 if ($iframe == 3) {
-                    $path_contacts = $_SESSION['config']['businessappurl']
-                                          .'index.php?display=false&dir=my_contacts&page=info_contact_iframe&created=Y&contactid='.$_SESSION['contact']['current_contact_id'].'&addressid='.$_SESSION['contact']['current_address_id'];
+                    $path_contacts = 'index.php?display=false&dir=my_contacts&page=info_contact_iframe&created=Y&contactid='.$_SESSION['contact']['current_contact_id'].'&addressid='.$_SESSION['contact']['current_address_id'];
                 } else {
-                    $path_contacts = $_SESSION['config']['businessappurl']
-                                          .'index.php?display=false&dir=my_contacts&page=info_contact_iframe&created=Y&contactid='.$_SESSION['contact']['current_contact_id'].'&addressid='.$_SESSION['contact']['current_address_id'];
+                    $path_contacts = 'index.php?display=false&dir=my_contacts&page=info_contact_iframe&created=Y&contactid='.$_SESSION['contact']['current_contact_id'].'&addressid='.$_SESSION['contact']['current_address_id'];
+                }
+
+                $path_contacts_up_errors = 'index.php?display=false&dir=my_contacts&page=update_address_iframe';
+
+                if ($iframe == 4) {
+                    $path_contacts = 'index.php?display=false&dir=my_contacts&page=info_contact_iframe&created=editDetail&contactid='.$_SESSION['contact']['current_contact_id'].'&addressid='.$_SESSION['contact']['current_address_id'];
+                    $path_contacts_up_errors = 'index.php?display=false&dir=my_contacts&page=update_address_iframe&editDetail';
                 }
 
-                $path_contacts_up_errors = $_SESSION['config']['businessappurl']
-                                          .'index.php?display=false&dir=my_contacts&page=update_address_iframe';
             }
         }
         if (isset($_SESSION['contact_address']['fromContactAddressesList']) && $_SESSION['contact_address']['fromContactAddressesList'] != '') {
diff --git a/apps/maarch_entreprise/indexing_searching/details.php b/apps/maarch_entreprise/indexing_searching/details.php
index a792d73abe3..e6e6ed16e10 100755
--- a/apps/maarch_entreprise/indexing_searching/details.php
+++ b/apps/maarch_entreprise/indexing_searching/details.php
@@ -658,7 +658,7 @@ if ($stmt->rowCount() == 0) {
                     $inputValue = $data[$key]['value'];
                     $inputAddressValue = $data[$key]['address_value'];
 
-                    $iconShow = "<a href=\"#\" onclick=\"window.open('index.php?display=true&dir=my_contacts&page=info_contact_iframe&mode=view&popup&contactid={$inputValue}&addressid={$inputAddressValue}', 'contact_info', 'height=800, width=1000,scrollbars=yes,resizable=yes');\">".$iconShow.'</a>';
+                    $iconShow = "<a href=\"#\" onclick=\"window.open('index.php?display=true&dir=my_contacts&page=info_contact_iframe&mode=editDetail&editDetail&popup&contactid='+document.getElementById('contactid').value+'&addressid='+document.getElementById('addressid').value+'', 'contact_info', 'height=800, width=1000,scrollbars=yes,resizable=yes');\">".$iconShow.'</a>';
                 } elseif (in_array($key, ['dest_user_id', 'exp_user_id'])) {
                     $inputValue = $data[$key]['value'];
                     $inputAddressValue = $data[$key]['address_value'];
diff --git a/apps/maarch_entreprise/my_contacts/info_contact_iframe.php b/apps/maarch_entreprise/my_contacts/info_contact_iframe.php
index a8f75e3219f..aa38923e381 100755
--- a/apps/maarch_entreprise/my_contacts/info_contact_iframe.php
+++ b/apps/maarch_entreprise/my_contacts/info_contact_iframe.php
@@ -32,7 +32,7 @@ $_SESSION['info'] = '';
 
 if (isset($_GET['contactid']) && $_GET['contactid'] <> '') {
     $_SESSION['contact']['current_contact_id'] = $id;
-} else if ($_SESSION['contact']['current_contact_id'] <> '') {
+} elseif ($_SESSION['contact']['current_contact_id'] <> '') {
     $_GET['contactid'] = $_SESSION['contact']['current_contact_id'];
 }
 
@@ -41,7 +41,7 @@ if (isset($_GET['fromAttachmentContact']) && $_GET['fromAttachmentContact'] == "
 }
 if (isset($_GET['addressid']) && $_GET['addressid'] <> '') {
     $_SESSION['contact']['current_address_id'] = $id;
-} else if ($_SESSION['contact']['current_address_id'] <> '') {
+} elseif ($_SESSION['contact']['current_address_id'] <> '') {
     $_GET['addressid'] = $_SESSION['contact']['current_address_id'];
 }
 
@@ -98,7 +98,6 @@ if ($core_tools2->test_admin('update_contacts', 'apps', false) && $mode <> "view
         $_GET['id'] = $_GET['addressid'];
         include_once 'apps/' . $_SESSION['config']['app_id'] . '/my_contacts/update_address_iframe.php';
     }
-
 } else {
     include_once "apps".DIRECTORY_SEPARATOR.$_SESSION['config']['app_id'].DIRECTORY_SEPARATOR."class".DIRECTORY_SEPARATOR."class_contacts_v2.php";
     include_once "apps".DIRECTORY_SEPARATOR.$_SESSION['config']['app_id'].DIRECTORY_SEPARATOR."class".DIRECTORY_SEPARATOR."class_business_app_tools.php";
@@ -134,7 +133,7 @@ if ($core_tools2->test_admin('update_contacts', 'apps', false) && $mode <> "view
     $_SESSION['m_admin']['address']['SALUTATION_FOOTER']  = $request->show_string($line->salutation_footer);
     $_SESSION['m_admin']['address']['EXTERNAL_CONTACT_ID']= $request->show_string($line->external_contact_id);
 
-	$core_tools2->load_js();
+    $core_tools2->load_js();
 
     $query = "SELECT * FROM ".$_SESSION['tablename']['contact_communication']." WHERE contact_id = ?";
     $stmt = $db->query($query, array($line->contact_id));
@@ -144,20 +143,41 @@ if ($core_tools2->test_admin('update_contacts', 'apps', false) && $mode <> "view
     $_SESSION['m_admin']['communication']['ID']              = $contactCommunication->id;
     $_SESSION['m_admin']['communication']['CONTACT_ID']      = $contactCommunication->contact_id;
     $_SESSION['m_admin']['communication']['TYPE']            = functions::show_string($contactCommunication->type);
-    $_SESSION['m_admin']['communication']['VALUE']           = functions::show_string($contactCommunication->value);
-
-	?>
-	    <div id="inner_content" class="clearfix" align="center" style="padding:0px;width:100% !important;">
-	    	<div class="block">
-	<?php
-		$contact->get_contact_form();
-		$contact->get_address_form();
-	?>		
-			</div>
-		</div>
+    $_SESSION['m_admin']['communication']['VALUE']           = functions::show_string($contactCommunication->value); ?>
+<div id="inner_content" class="clearfix" align="center" style="padding:0px;width:100% !important;">
+    <div class="block">
+        <?php
+        $contact->get_contact_form();
+    $contact->get_address_form(); ?>
+    </div>
+</div>
 <?php
 }
 
+if ($_GET['created'] == "editDetail") {
+    ?>
+    <script type="text/javascript">
+        new Ajax.Request('index.php?display=false&dir=my_contacts&page=get_last_contact_address&mode=up',
+        {
+        method:'post',
+        parameters: {},
+        onSuccess: function(answer){
+            eval("response = "+answer.responseText);
+
+            if (response.rateColor != "") {
+                window.opener.$j('#contact').css('background-color', response.rateColor);
+            }
+
+            window.opener.$j('#contact').html(response.contactName);
+            window.opener.$j('#contactid').val(response.contactId);
+            window.opener.$j('#addressid').val(response.addressId);
+            this.close();
+        }       
+    });
+    </script><?php
+    exit;
+}
+
 ?>
 	<script type="text/javascript">
 		resize_frame_contact('contact');
@@ -166,32 +186,31 @@ if ($core_tools2->test_admin('update_contacts', 'apps', false) && $mode <> "view
 
 
 if (isset($_SESSION['AttachmentContact']) && $_SESSION['AttachmentContact'] =="1" && $_GET['created'] <> '' && isset($_GET['created'])) {
-	$infoContactDiv = "info_contact_div_attach";
-	?>
+    $infoContactDiv = "info_contact_div_attach"; ?>
 	<script>
-		simpleAjax("<?php echo $_SESSION['config']['businessappurl'].'index.php?display=true&page=unsetAttachmentContact';?>");
+		simpleAjax("<?php echo $_SESSION['config']['businessappurl'].'index.php?display=true&page=unsetAttachmentContact'; ?>");
 	</script>
 	<?php
 } else {
-	$infoContactDiv = "show_tab";
-}
+        $infoContactDiv = "show_tab";
+    }
 
 if ($_GET['created'] == "open") {
-	?>
+    ?>
 		<script type="text/javascript">
-			set_new_contact_address("<?php echo $_SESSION['config']['businessappurl'] . 'index.php?display=false&dir=my_contacts&page=get_last_contact_address&mode=up';?>", "<?php functions::xecho($infoContactDiv );?>", "false");
+			set_new_contact_address("<?php echo $_SESSION['config']['businessappurl'] . 'index.php?display=false&dir=my_contacts&page=get_last_contact_address&mode=up'; ?>", "<?php functions::xecho($infoContactDiv); ?>", "false");
 		</script>
 	<?php
-} else if(isset($_GET['created']) && $_GET['created'] == 'add'){
-?>
+} elseif (isset($_GET['created']) && $_GET['created'] == 'add') {
+        ?>
 	<script type="text/javascript">
-		set_new_contact_address("<?php echo $_SESSION['config']['businessappurl'] . 'index.php?display=false&dir=my_contacts&page=get_last_contact_address';?>", "<?php functions::xecho($infoContactDiv );?>", "true");
+		set_new_contact_address("<?php echo $_SESSION['config']['businessappurl'] . 'index.php?display=false&dir=my_contacts&page=get_last_contact_address'; ?>", "<?php functions::xecho($infoContactDiv); ?>", "true");
 	</script>
 <?php
-} else if(isset($_GET['created']) && $_GET['created'] <> ''){
-?>
+    } elseif (isset($_GET['created']) && $_GET['created'] <> '') {
+        ?>
 	<script type="text/javascript">
-		set_new_contact_address("<?php echo $_SESSION['config']['businessappurl'] . 'index.php?display=false&dir=my_contacts&page=get_last_contact_address&mode=up';?>", "<?php functions::xecho($infoContactDiv );?>", "true");
+		set_new_contact_address("<?php echo $_SESSION['config']['businessappurl'] . 'index.php?display=false&dir=my_contacts&page=get_last_contact_address&mode=up'; ?>", "<?php functions::xecho($infoContactDiv); ?>", "true");
 	</script>
 <?php
-}
+    }
diff --git a/apps/maarch_entreprise/my_contacts/update_address_iframe.php b/apps/maarch_entreprise/my_contacts/update_address_iframe.php
index cb8cb05ed33..26927b744f8 100755
--- a/apps/maarch_entreprise/my_contacts/update_address_iframe.php
+++ b/apps/maarch_entreprise/my_contacts/update_address_iframe.php
@@ -42,23 +42,25 @@ $func = new functions();
 
 if (isset($_GET['id'])) {
     $id = addslashes($func->wash($_GET['id'], "alphanum", _ADDRESS));
-
 } else {
     $id = "";
 }
 
-if (isset($_GET['fromContactIframe'])) {
-    $iframe_txt = "fromContactIframe";
-    $_SESSION['contact']['current_address_id'] = $id;
+if (isset($_GET['editDetail'])) {
+    $contact->formaddress("up", $id, false, 'editDetail');
 } else {
-    $iframe_txt = "iframe_add_up";
+    if (isset($_GET['fromContactIframe'])) {
+        $iframe_txt = "fromContactIframe";
+        $_SESSION['contact']['current_address_id'] = $id;
+    } else {
+        $iframe_txt = "iframe_add_up";
+    }
+        
+    $load_js = '<script type="text/javascript">';
+    $load_js .= "resize_frame_contact('address');";
+    $load_js .= '</script>';
+        
+    $contact->formaddress("up", $id, false, $iframe_txt);
+        
+    echo $load_js;
 }
-
-$load_js = '<script type="text/javascript">';
-$load_js .= "resize_frame_contact('address');";
-$load_js .= '</script>';
-
-$contact->formaddress("up", $id, false, $iframe_txt);
-
-echo $load_js;
-?>
-- 
GitLab