From b706f6034fa98fb69a1029b10bf6c8ee045f0acf Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@users.sourceforge.net>
Date: Wed, 13 Jul 2011 16:55:25 +0000
Subject: [PATCH] Fix: Avoid conflict with other payment modules functions New:
 EMail topics can be forced by external modules

---
 htdocs/core/class/commonobject.class.php  | 10 ++++---
 htdocs/core/class/html.formmail.class.php | 26 ++++++++---------
 htdocs/paypal/lib/paypal.lib.php          | 34 +++++++++++------------
 3 files changed, 36 insertions(+), 34 deletions(-)

diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index e9ae1ea7e05..a6c93758797 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -22,7 +22,7 @@
  *	\file       htdocs/core/class/commonobject.class.php
  *	\ingroup    core
  *	\brief      File of parent class of all other business classes (invoices, contracts, proposals, orders, ...)
- *	\version    $Id: commonobject.class.php,v 1.145 2011/07/10 16:50:40 eldy Exp $
+ *	\version    $Id: commonobject.class.php,v 1.146 2011/07/13 16:55:25 eldy Exp $
  */
 
 
@@ -365,9 +365,10 @@ class CommonObject
 	 *      Return array with list of possible values for type of contacts
 	 *      @param      source      internal, external or all if not defined
 	 *      @param		order		Sort order by : code or rowid
-	 *      @return     array       List of type of contacts
+	 *      @param      option      0=Return array id->label, 1=Return array code->label
+	 *      @return     array       Array list of type of contacts (id->label if option=0, code->label if option=1)
 	 */
-	function liste_type_contact($source='internal', $order='code')
+	function liste_type_contact($source='internal', $order='code', $option=0)
 	{
 		global $langs;
 
@@ -390,7 +391,8 @@ class CommonObject
 
 				$transkey="TypeContact_".$this->element."_".$source."_".$obj->code;
 				$libelle_type=($langs->trans($transkey)!=$transkey ? $langs->trans($transkey) : $obj->libelle);
-				$tab[$obj->rowid]=$libelle_type;
+				if (empty($option)) $tab[$obj->rowid]=$libelle_type;
+				else $tab[$obj->code]=$libelle_type;
 				$i++;
 			}
 			return $tab;
diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php
index 3164f86d8e1..6ca8f1e007f 100644
--- a/htdocs/core/class/html.formmail.class.php
+++ b/htdocs/core/class/html.formmail.class.php
@@ -22,7 +22,7 @@
  *       \file       htdocs/core/class/html.formmail.class.php
  *       \ingroup    core
  *       \brief      Fichier de la classe permettant la generation du formulaire html d'envoi de mail unitaire
- *       \version    $Id: html.formmail.class.php,v 1.31 2011/07/10 20:03:41 eldy Exp $
+ *       \version    $Id: html.formmail.class.php,v 1.32 2011/07/13 16:55:25 eldy Exp $
  */
 require_once(DOL_DOCUMENT_ROOT ."/core/class/html.form.class.php");
 
@@ -519,7 +519,7 @@ class FormMail
                 foreach($listofpaths as $key => $val)
                 {
                     $out.= '<div id="attachfile_'.$key.'">';
-                	$out.= img_mime($listofnames[$key]).' '.$listofnames[$key];
+                    $out.= img_mime($listofnames[$key]).' '.$listofnames[$key];
                     if (! $this->withfilereadonly)
                     {
                         $out.= ' <input type="image" style="border: 0px;" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/delete.png" value="'.($key+1).'" class="removedfile" id="removedfile_'.$key.'" name="removedfile_'.$key.'" />';
@@ -547,15 +547,15 @@ class FormMail
             $defaultmessage="";
 
             // TODO    A partir du type, proposer liste de messages dans table llx_models
-            if ($this->param["models"]=='body')						{ $defaultmessage=$this->withbody; }
-            if ($this->param["models"]=='facture_send')				{ $defaultmessage=$langs->transnoentities("PredefinedMailContentSendInvoice"); }
-            if ($this->param["models"]=='facture_relance')			{ $defaultmessage=$langs->transnoentities("PredefinedMailContentSendInvoiceReminder"); }
-            if ($this->param["models"]=='propal_send')				{ $defaultmessage=$langs->transnoentities("PredefinedMailContentSendProposal"); }
-            if ($this->param["models"]=='order_send')				{ $defaultmessage=$langs->transnoentities("PredefinedMailContentSendOrder"); }
-            if ($this->param["models"]=='order_supplier_send')		{ $defaultmessage=$langs->transnoentities("PredefinedMailContentSendSupplierOrder"); }
-            if ($this->param["models"]=='invoice_supplier_send')	{ $defaultmessage=$langs->transnoentities("PredefinedMailContentSendSupplierInvoice"); }
-            if ($this->param["models"]=='shipping_send')			{ $defaultmessage=$langs->transnoentities("PredefinedMailContentSendShipping"); }
-			if ($this->param["models"]=='fichinter_send')			{ $defaultmessage=$langs->transnoentities("PredefinedMailContentSendFichInter"); }
+            if     ($this->param["models"]=='facture_send')	            { $defaultmessage=$langs->transnoentities("PredefinedMailContentSendInvoice"); }
+            elseif ($this->param["models"]=='facture_relance')			{ $defaultmessage=$langs->transnoentities("PredefinedMailContentSendInvoiceReminder"); }
+            elseif ($this->param["models"]=='propal_send')				{ $defaultmessage=$langs->transnoentities("PredefinedMailContentSendProposal"); }
+            elseif ($this->param["models"]=='order_send')				{ $defaultmessage=$langs->transnoentities("PredefinedMailContentSendOrder"); }
+            elseif ($this->param["models"]=='order_supplier_send')		{ $defaultmessage=$langs->transnoentities("PredefinedMailContentSendSupplierOrder"); }
+            elseif ($this->param["models"]=='invoice_supplier_send')	{ $defaultmessage=$langs->transnoentities("PredefinedMailContentSendSupplierInvoice"); }
+            elseif ($this->param["models"]=='shipping_send')			{ $defaultmessage=$langs->transnoentities("PredefinedMailContentSendShipping"); }
+            elseif ($this->param["models"]=='fichinter_send')			{ $defaultmessage=$langs->transnoentities("PredefinedMailContentSendFichInter"); }
+            elseif (! is_numeric($this->withbody))                      { $defaultmessage=$this->withbody; }
 
             if ($conf->paypal->enabled && $conf->global->PAYPAL_ADD_PAYMENT_URL)
             {
@@ -565,12 +565,12 @@ class FormMail
 
                 if ($this->param["models"]=='order_send')
                 {
-                    $url=getPaymentUrl('order',$this->substit['__ORDERREF__']);
+                    $url=getPaypalPaymentUrl('order',$this->substit['__ORDERREF__']);
                     $defaultmessage=$langs->transnoentities("PredefinedMailContentSendOrderWithPaypalLink",$url);
                 }
                 if ($this->param["models"]=='facture_send')
                 {
-                    $url=getPaymentUrl('invoice',$this->substit['__FACREF__']);
+                    $url=getPaypalPaymentUrl('invoice',$this->substit['__FACREF__']);
                     $defaultmessage=$langs->transnoentities("PredefinedMailContentSendInvoiceWithPaypalLink",$url);
                 }
             }
diff --git a/htdocs/paypal/lib/paypal.lib.php b/htdocs/paypal/lib/paypal.lib.php
index 0e846c9e9a7..82ec9a15c2e 100755
--- a/htdocs/paypal/lib/paypal.lib.php
+++ b/htdocs/paypal/lib/paypal.lib.php
@@ -22,7 +22,7 @@
  *	\file			htdocs/paypal/lib/paypal.lib.php
  *  \ingroup		paypal
  *  \brief			Library for common paypal functions
- *  \version		$Id$
+ *  \version		$Id: paypal.lib.php,v 1.25 2011/07/13 16:55:34 eldy Exp $
  */
 function llxHeaderPaypal($title, $head = "")
 {
@@ -132,7 +132,7 @@ function html_print_paypal_footer($fromcompany,$langs)
 function paypaladmin_prepare_head()
 {
 	global $langs, $conf;
-	
+
 	$h = 0;
 	$head = array();
 
@@ -140,7 +140,7 @@ function paypaladmin_prepare_head()
 	$head[$h][1] = $langs->trans("Account");
 	$head[$h][2] = 'paypalaccount';
 	$h++;
-    
+
     // Show more tabs from modules
     // Entries must be declared in modules descriptor with line
     // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__');   to add new tab
@@ -151,24 +151,24 @@ function paypaladmin_prepare_head()
 }
 
 /**
- * 
+ *
  */
-function getPaymentUrl($source='',$ref='',$amount=0,$freetag='')
+function getPaypalPaymentUrl($source='',$ref='',$amount=0,$freetag='')
 {
 	global $conf;
-	
+
 	require_once(DOL_DOCUMENT_ROOT."/lib/security.lib.php");
-	
+
 	if (! empty($source) && ! empty($ref))
 	{
 		$token='';
 		if (! empty($conf->global->PAYPAL_SECURITY_TOKEN)) $token='&securekey='.dol_hash($conf->global->PAYPAL_SECURITY_TOKEN.$source.$ref, 2);
-		
+
 		if ($source == 'commande')	$source = 'order';
 		if ($source == 'facture')	$source = 'invoice';
-		
+
 		$url = DOL_MAIN_URL_ROOT.'/public/paypal/newpayment.php?source='.$source.'&ref='.$ref.$token;
-		
+
 		return $url;
 	}
 }
@@ -482,7 +482,7 @@ function hash_call($methodName,$nvpStr)
     global $conf, $langs;
     global $API_Endpoint, $API_Url, $API_version, $USE_PROXY, $PROXY_HOST, $PROXY_PORT, $PROXY_USER, $PROXY_PASS;
     global $PAYPAL_API_USER, $PAYPAL_API_PASSWORD, $PAYPAL_API_SIGNATURE;
-    
+
     // TODO problem with triggers
     $API_version="56";
 	if ($conf->global->PAYPAL_API_SANDBOX)
@@ -495,7 +495,7 @@ function hash_call($methodName,$nvpStr)
 	    $API_Endpoint = "https://api-3t.paypal.com/nvp";
 	    $API_Url = "https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=";
 	}
-	
+
 	// Clean parameters
 	$PAYPAL_API_USER="";
 	if ($conf->global->PAYPAL_API_USER) $PAYPAL_API_USER=$conf->global->PAYPAL_API_USER;
@@ -506,7 +506,7 @@ function hash_call($methodName,$nvpStr)
 	$PAYPAL_API_SANDBOX="";
 	if ($conf->global->PAYPAL_API_SANDBOX) $PAYPAL_API_SANDBOX=$conf->global->PAYPAL_API_SANDBOX;
 	// TODO END problem with triggers
-	
+
     dol_syslog("Paypal API endpoint ".$API_Endpoint);
 
     //setting the curl parameters.
@@ -580,19 +580,19 @@ function hash_call($methodName,$nvpStr)
 function GetApiError()
 {
 	$errors=array();
-	
+
 	$resArray=$_SESSION['reshash'];
-	
+
 	if(isset($_SESSION['curl_error_no']))
 	{
 		$errors[] = $_SESSION['curl_error_no'].'-'.$_SESSION['curl_error_msg'];
 	}
-	
+
 	foreach($resArray as $key => $value)
 	{
 		$errors[] = $key.'-'.$value;
 	}
-	
+
 	return $errors;
 }
 
-- 
GitLab