diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php
index 3527535809b..f222d6e63e5 100644
--- a/htdocs/adherents/class/adherent.class.php
+++ b/htdocs/adherents/class/adherent.class.php
@@ -41,6 +41,10 @@ class Adherent extends CommonObject
public $table_element='adherent';
protected $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe
+ var $error;
+ var $errors;
+ var $mesgs;
+
var $id;
var $ref;
var $civilite_id;
@@ -1370,10 +1374,10 @@ class Adherent extends CommonObject
*/
function add_to_abo()
{
- global $conf;
+ global $conf,$langs;
include_once DOL_DOCUMENT_ROOT.'/mailmanspip/class/mailmanspip.class.php';
- $mailmanspip=new MailmanSpip($db);
+ $mailmanspip=new MailmanSpip($this->db);
$err=0;
@@ -1386,6 +1390,16 @@ class Adherent extends CommonObject
$this->error=$mailmanspip->error;
$err+=1;
}
+ foreach ($mailmanspip->mladded_ko as $tmplist => $tmpemail)
+ {
+ $langs->load("errors");
+ $this->errors[]=$langs->trans("ErrorFailedToAddToMailmanList",$tmpemail,$tmplist);
+ }
+ foreach ($mailmanspip->mladded_ok as $tmplist => $tmpemail)
+ {
+ $langs->load("mailmanspip");
+ $this->mesgs[]=$langs->trans("SuccessToAddToMailmanList",$tmpemail,$tmplist);
+ }
}
// spip
@@ -1400,11 +1414,10 @@ class Adherent extends CommonObject
}
if ($err)
{
- // error
return -$err;
}
else
- {
+ {
return 1;
}
}
@@ -1418,10 +1431,10 @@ class Adherent extends CommonObject
*/
function del_to_abo()
{
- global $conf;
+ global $conf,$langs;
include_once DOL_DOCUMENT_ROOT.'/mailmanspip/class/mailmanspip.class.php';
- $mailmanspip=new MailmanSpip($db);
+ $mailmanspip=new MailmanSpip($this->db);
$err=0;
@@ -1431,8 +1444,20 @@ class Adherent extends CommonObject
$result=$mailmanspip->del_to_mailman($this);
if ($result < 0)
{
+ $this->error=$mailmanspip->error;
$err+=1;
}
+
+ foreach ($mailmanspip->mlremoved_ko as $tmplist => $tmpemail)
+ {
+ $langs->load("errors");
+ $this->errors[]=$langs->trans("ErrorFailedToRemoveToMailmanList",$tmpemail,$tmplist);
+ }
+ foreach ($mailmanspip->mlremoved_ok as $tmplist => $tmpemail)
+ {
+ $langs->load("mailmanspip");
+ $this->mesgs[]=$langs->trans("SuccessToRemoveToMailmanList",$tmpemail,$tmplist);
+ }
}
if ($conf->global->ADHERENT_USE_SPIP && ! empty($conf->mailmanspip->enabled))
diff --git a/htdocs/adherents/fiche.php b/htdocs/adherents/fiche.php
index 787cad2664f..d34da06987d 100644
--- a/htdocs/adherents/fiche.php
+++ b/htdocs/adherents/fiche.php
@@ -356,15 +356,24 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->adherent->creer)
{
if ($object->oldcopy->del_to_abo() < 0)
{
- // error
- $errmsgs[]= $langs->trans("FailedToCleanMailmanList").': '.$object->error."
\n";
+ if (! empty($object->oldcopy->error)) setEventMessage($langs->trans("ErrorFailedToRemoveToMailmanList").': '.$object->oldcopy->error, 'errors');
+ setEventMessage($object->oldcopy->errors, 'errors');
+ }
+ else
+ {
+ setEventMessage($object->oldcopy->mesgs,'mesgs');
}
}
- if ($object->add_to_abo() < 0) // We add subscription if new email or new type (new type may means more mailing-list to subscribe)
+ // We add subscription if new email or new type (new type may means more mailing-list to subscribe)
+ if ($object->add_to_abo() < 0)
+ {
+ if (! empty($object->error)) setEventMessage($langs->trans("ErrorFailedToAddToMailmanList").': '.$object->error, 'errors');
+ setEventMessage($object->errors, 'errors');
+ }
+ else
{
- // error
- $errmsgs[]= $langs->trans("FailedToAddToMailmanList").': '.$object->error."
\n";
- }
+ setEventMessage($object->mesgs, 'mesgs');
+ }
}
$rowid=$object->id;
diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang
index 3c7ecb50274..d66449ecf5d 100644
--- a/htdocs/langs/en_US/errors.lang
+++ b/htdocs/langs/en_US/errors.lang
@@ -114,7 +114,8 @@ ErrNoZipEngine=No engine to unzip %s file in this PHP
ErrorFileMustBeADolibarrPackage=The file %s must be a Dolibarr zip package
ErrorFileRequired=It takes a package Dolibarr file
ErrorPhpCurlNotInstalled=The PHP CURL is not installed, this is essential to talk with Paypal
-ErrorFailedToAddToMailmanList=Failed to add record to Mailman list or SPIP base
+ErrorFailedToAddToMailmanList=Failed to add record %s to Mailman list %s or SPIP base
+ErrorFailedToRemoveToMailmanList=Failed to remove record %s to Mailman list %s or SPIP base
ErrorNewValueCantMatchOldValue=New value can't be equal to old one
ErrorFailedToValidatePasswordReset=Failed to reinit password. May be the reinit was already done (this link can be used only one time). If not, try to restart the reinit process.
diff --git a/htdocs/langs/en_US/mailmanspip.lang b/htdocs/langs/en_US/mailmanspip.lang
index 18f1a684c7a..50887cc082e 100644
--- a/htdocs/langs/en_US/mailmanspip.lang
+++ b/htdocs/langs/en_US/mailmanspip.lang
@@ -23,4 +23,6 @@ AddIntoSpipError=Failed to add the user in SPIP
DeleteIntoSpip=Remove from SPIP
DeleteIntoSpipConfirmation=Are you sure you want to remove this member from SPIP?
DeleteIntoSpipError=Failed to suppress the user from SPIP
-SPIPConnectionFailed=Failed to connect to SPIP
\ No newline at end of file
+SPIPConnectionFailed=Failed to connect to SPIP
+SuccessToAddToMailmanList=Add of %s to mailman list %s or SPIP database done
+SuccessToRemoveToMailmanList=Removal of %s from mailman list %s or SPIP database done
\ No newline at end of file
diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang
index bcc141dfdc6..8110d224355 100644
--- a/htdocs/langs/fr_FR/errors.lang
+++ b/htdocs/langs/fr_FR/errors.lang
@@ -115,7 +115,8 @@ ErrNoZipEngine=Pas de moteur pour décompresser le fichier %s dans ce PHP
ErrorFileMustBeADolibarrPackage=Le fichier doit être un package Dolibarr
ErrorFileRequired=Il faut un fichier de package Dolibarr
ErrorPhpCurlNotInstalled=L'extension PHP CURL n'est pas installée, ceci est indispensable pour dialoguer avec Paypal.
-ErrorFailedToAddToMailmanList=Echec de l'ajout à une liste Mailman ou base SPIP
+ErrorFailedToAddToMailmanList=Echec de l'ajout de %s à la liste Mailman %s ou base SPIP
+ErrorFailedToRemoveToMailmanList=Echec de la suppression de %s de la liste Mailman %s ou base SPIP
ErrorNewValueCantMatchOldValue=La nouvelle valeur ne peut être égale à l'ancienne
ErrorFailedToValidatePasswordReset=Echec de la réinitialisation du mot de passe. Il est possible que ce lien ait déjà été utilisé (l'utilisation de ce lien ne fonctionne qu'une fois). Si ce n'est pas le cas, essayer de recommencer le processus de réinit de mot de passe depuis le début.
diff --git a/htdocs/langs/fr_FR/mailmanspip.lang b/htdocs/langs/fr_FR/mailmanspip.lang
index ac88688a3bd..3f27ae0d9c9 100644
--- a/htdocs/langs/fr_FR/mailmanspip.lang
+++ b/htdocs/langs/fr_FR/mailmanspip.lang
@@ -23,3 +23,6 @@ DeleteIntoSpip=Supprimer de spip
DeleteIntoSpipConfirmation=Êtes-vous sur de vouloir effacer cet adhérent de SPIP?
DeleteIntoSpipError=Échec de la suppression de l'utilisateur de SPIP
SPIPConnectionFailed=Échec de connexion à SPIP
+SuccessToAddToMailmanList=Ajout de %s à la liste Mailman %s ou base SPIP réalisé
+SuccessToRemoveToMailmanList=Suppression de %s de la liste Mailman %s ou base SPIP réalisé
+
diff --git a/htdocs/mailmanspip/class/mailmanspip.class.php b/htdocs/mailmanspip/class/mailmanspip.class.php
index 9e10c315dfa..5a015ba1c64 100644
--- a/htdocs/mailmanspip/class/mailmanspip.class.php
+++ b/htdocs/mailmanspip/class/mailmanspip.class.php
@@ -40,6 +40,11 @@ class MailmanSpip
var $db;
var $error;
+ var $mladded_ok;
+ var $mladded_ko;
+ var $mlremoved_ok;
+ var $mlremoved_ko;
+
/**
* Constructor
@@ -299,6 +304,9 @@ class MailmanSpip
dol_syslog(get_class($this)."::add_to_mailman");
+ $this->mladded_ok=array();
+ $this->mladded_ko=array();
+
if (! function_exists("curl_init"))
{
$langs->load("errors");
@@ -335,13 +343,15 @@ class MailmanSpip
if ($result === false)
{
+ $this->mladded_ko[$list]=$object->email;
return -2;
}
+ else $this->mladded_ok[$list]=$object->email;
}
return count($lists);
}
else
- {
+ {
$this->error="ADHERENT_MAILMAN_URL not defined";
return -1;
}
@@ -359,6 +369,18 @@ class MailmanSpip
{
global $conf,$langs,$user;
+ dol_syslog(get_class($this)."::del_to_mailman");
+
+ $this->mlremoved_ok=array();
+ $this->mlremoved_ko=array();
+
+ if (! function_exists("curl_init"))
+ {
+ $langs->load("errors");
+ $this->error=$langs->trans("ErrorFunctionNotAvailableInPHP","curl_init");
+ return -1;
+ }
+
if (! empty($conf->global->ADHERENT_MAILMAN_UNSUB_URL))
{
if ($listes=='' && ! empty($conf->global->ADHERENT_MAILMAN_LISTS))
@@ -388,8 +410,10 @@ class MailmanSpip
if ($result === false)
{
+ $this->mlremoved_ko[$list]=$object->email;
return -2;
}
+ else $this->mlremoved_ok[$list]=$object->email;
}
return count($lists);
}