New: Subscription/Unsubscription to mailman mailing-list can be done on validate/resiliate in foundation module.

This commit is contained in:
Laurent Destailleur 2011-06-22 14:56:11 +00:00
parent e80274aff2
commit e5d3de79ee
5 changed files with 270 additions and 251 deletions

View File

@ -69,6 +69,8 @@ For users:
- New: Can add a logo on third parties card. - New: Can add a logo on third parties card.
- New: task #11194 : Can delete uploaded photos - New: task #11194 : Can delete uploaded photos
- New: task #9744 : Add the barcode to select products on Point of Sale module - New: task #9744 : Add the barcode to select products on Point of Sale module
- New: Subscription/Unsubscription to mailman mailing-list can be done on
validate/resiliate in foundation module.
- Fix: Better Postgresql compatibility. - Fix: Better Postgresql compatibility.
- Fix: Numbering module for invoices use same number for invoice - Fix: Numbering module for invoices use same number for invoice
and credit note if mask is same. and credit note if mask is same.

View File

@ -1,7 +1,7 @@
<?php <?php
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org> * Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
* Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org> * Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org>
* Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be> * Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
* Copyright (C) 2005-2011 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2005-2011 Regis Houssin <regis@dolibarr.fr>
@ -188,33 +188,29 @@ print '<br>';
/* /*
* Mailman * Mailman
*/ */
if ($conf->global->MAIN_FEATURES_LEVEL >= 1)
{
$var=!$var; $var=!$var;
if ($conf->global->ADHERENT_USE_MAILMAN) if ($conf->global->ADHERENT_USE_MAILMAN)
{ {
$lien=img_tick().' '; $lien=img_tick().' ';
$lien.='<a href="adherent.php?action=unset&value=0&name=ADHERENT_USE_MAILMAN">'.$langs->trans("Disable").'</a>'; $lien.='<a href="'.$_SERVER["PHP_SELF"].'?action=unset&value=0&name=ADHERENT_USE_MAILMAN">'.$langs->trans("Disable").'</a>';
// Edition des varibales globales rattache au theme Mailman // Edition des varibales globales
$constantes=array('ADHERENT_MAILMAN_LISTS', $constantes=array('ADHERENT_MAILMAN_LISTS',
'ADHERENT_MAILMAN_LISTS_COTISANT',
'ADHERENT_MAILMAN_ADMINPW', 'ADHERENT_MAILMAN_ADMINPW',
'ADHERENT_MAILMAN_SERVER',
'ADHERENT_MAILMAN_URL', 'ADHERENT_MAILMAN_URL',
'ADHERENT_MAILMAN_UNSUB_URL' 'ADHERENT_MAILMAN_UNSUB_URL'
); );
print_fiche_titre("Mailman mailing list system",$lien,''); print_fiche_titre("Mailman mailing list system",$lien,'');
form_constantes($constantes); form_constantes($constantes);
print '<br>';
} }
else else
{ {
$lien='<a href="'.$_SERVER["PHP_SELF"].'?action=set&value=1&name=ADHERENT_USE_MAILMAN">'.$langs->trans("Activate").'</a>'; $lien='<a href="'.$_SERVER["PHP_SELF"].'?action=set&value=1&name=ADHERENT_USE_MAILMAN">'.$langs->trans("Activate").'</a>';
print_fiche_titre("Mailman mailing list system",$lien,''); print_fiche_titre("Mailman mailing list system",$lien,'');
}
print "<hr>\n"; print "<hr>\n";
} }
/* /*
* Spip * Spip
*/ */
@ -223,7 +219,7 @@ if ($conf->global->ADHERENT_USE_SPIP)
{ {
$lien=img_tick().' '; $lien=img_tick().' ';
$lien.='<a href="'.$_SERVER["PHP_SELF"].'?action=unset&value=0&name=ADHERENT_USE_SPIP">'.$langs->trans("Disable").'</a>'; $lien.='<a href="'.$_SERVER["PHP_SELF"].'?action=unset&value=0&name=ADHERENT_USE_SPIP">'.$langs->trans("Disable").'</a>';
// Edition des varibales globales rattache au theme Mailman // Edition des varibales globales
$constantes=array('ADHERENT_USE_SPIP_AUTO', $constantes=array('ADHERENT_USE_SPIP_AUTO',
'ADHERENT_SPIP_SERVEUR', 'ADHERENT_SPIP_SERVEUR',
'ADHERENT_SPIP_DB', 'ADHERENT_SPIP_DB',
@ -232,14 +228,15 @@ if ($conf->global->ADHERENT_USE_SPIP)
); );
print_fiche_titre("SPIP CMS",$lien,''); print_fiche_titre("SPIP CMS",$lien,'');
form_constantes($constantes); form_constantes($constantes);
print '<br>';
} }
else else
{ {
$lien='<a href="'.$_SERVER["PHP_SELF"].'?action=set&value=1&name=ADHERENT_USE_SPIP">'.$langs->trans("Activate").'</a>'; $lien='<a href="'.$_SERVER["PHP_SELF"].'?action=set&value=1&name=ADHERENT_USE_SPIP">'.$langs->trans("Activate").'</a>';
print_fiche_titre("SPIP - CMS",$lien,''); print_fiche_titre("SPIP - CMS",$lien,'');
print "<hr>\n";
} }
print "<hr>\n";
/* /*
* Edition info modele document * Edition info modele document
@ -363,6 +360,21 @@ function form_constantes($tableau)
print '<input type="hidden" name="constnote" value="'.nl2br($obj->note).'">'; print '<input type="hidden" name="constnote" value="'.nl2br($obj->note).'">';
print $langs->trans("Desc".$const) != ("Desc".$const) ? $langs->trans("Desc".$const) : ($obj->note?$obj->note:$const); print $langs->trans("Desc".$const) != ("Desc".$const) ? $langs->trans("Desc".$const) : ($obj->note?$obj->note:$const);
if ($const=='ADHERENT_MAILMAN_URL')
{
print '. '.$langs->trans("Example").':<br>';
//print 'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&subscribees=%EMAIL%&send_welcome_msg_to_this_batch=1';
print 'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members/add?subscribees_upload=%EMAIL%&adminpw=%MAILMAN_ADMINPW%&subscribe_or_invite=0&send_welcome_msg_to_this_batch=0&notification_to_list_owner=0';
}
if ($const=='ADHERENT_MAILMAN_UNSUB_URL')
{
print '. '.$langs->trans("Example").':<br>';
print 'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members/remove?unsubscribees_upload=%EMAIL%&adminpw=%MAILMAN_ADMINPW%&send_unsub_ack_to_this_batch=0&send_unsub_notifications_to_list_owner=0';
//print 'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members/remove?adminpw=%MAILMAN_ADMINPW%&unsubscribees=%EMAIL%';
}
print "</td>\n"; print "</td>\n";
if ($const == 'ADHERENT_CARD_TYPE' || $const == 'ADHERENT_ETIQUETTE_TYPE') if ($const == 'ADHERENT_CARD_TYPE' || $const == 'ADHERENT_ETIQUETTE_TYPE')
@ -409,7 +421,7 @@ function form_constantes($tableau)
} }
else else
{ {
print '<input type="text" class="flat" size="30" name="constvalue" value="'.$obj->value.'">'; print '<input type="text" class="flat" size="48" name="constvalue" value="'.$obj->value.'">';
print '</td><td>'; print '</td><td>';
print '<input type="hidden" name="consttype" value="chaine">'; print '<input type="hidden" name="consttype" value="chaine">';
} }

View File

@ -1142,12 +1142,6 @@ class Adherent extends CommonObject
$result=$this->update_end_date($user); $result=$this->update_end_date($user);
if ($result > 0) if ($result > 0)
{ {
// Rajout du nouveau cotisant dans les listes qui vont bien
if ($conf->global->ADHERENT_MAILMAN_LISTS_COTISANT && ! $this->datefin)
{
$result=$this->add_to_mailman($conf->global->ADHERENT_MAILMAN_LISTS_COTISANT);
}
// Change properties of object (used by triggers) // Change properties of object (used by triggers)
$this->last_subscription_date=$dateop; $this->last_subscription_date=$dateop;
$this->last_subscription_amount=$montant; $this->last_subscription_amount=$montant;
@ -1280,17 +1274,16 @@ class Adherent extends CommonObject
/** /**
* Fonction qui ajoute l'adherent au abonnements automatiques * Fonction qui ajoute l'adherent au abonnements automatiques
* mailing-list, spip, etc... * mailing-list, spip, etc...
* @param adht * @return int <0 if KO, >0 if OK
* @return int <0 si KO, >=0 si OK
*/ */
function add_to_abo($adht) function add_to_abo()
{ {
global $conf; global $conf;
$err=0; $err=0;
// mailman // mailman
if ($conf->global->ADHERENT_USE_MAILMAN) if (! empty($conf->global->ADHERENT_USE_MAILMAN))
{ {
$result=$this->add_to_mailman(); $result=$this->add_to_mailman();
if ($result < 0) if ($result < 0)
@ -1303,7 +1296,7 @@ class Adherent extends CommonObject
if ($conf->global->ADHERENT_USE_SPIP && $conf->global->ADHERENT_USE_SPIP_AUTO) if ($conf->global->ADHERENT_USE_SPIP && $conf->global->ADHERENT_USE_SPIP_AUTO)
{ {
$result=$this->add_to_spip(); $result=$this->add_to_spip();
if(!$result) if ($result < 0)
{ {
$err+=1; $err+=1;
} }
@ -1323,29 +1316,38 @@ class Adherent extends CommonObject
/** /**
* Fonction qui supprime l'adherent des abonnements automatiques * Fonction qui supprime l'adherent des abonnements automatiques
* mailing-list, spip, etc... * mailing-list, spip, etc...
* @param adht * @return int <0 if KO, >0 if OK
*/ */
function del_to_abo($adht) function del_to_abo()
{ {
global $conf;
$err=0; $err=0;
// mailman // mailman
if ($conf->global->ADHERENT_USE_MAILMAN) if (! empty($conf->global->ADHERENT_USE_MAILMAN))
{
$result=$this->del_to_mailman();
if ($result < 0)
{ {
if(!$this->del_to_mailman()){
$err+=1; $err+=1;
} }
} }
if ($conf->global->ADHERENT_USE_SPIP && $conf->global->ADHERENT_USE_SPIP_AUTO) if ($conf->global->ADHERENT_USE_SPIP && $conf->global->ADHERENT_USE_SPIP_AUTO)
{ {
if(!$this->del_to_spip()){ $result=$this->del_to_spip();
if ($result < 0)
{
$err+=1; $err+=1;
} }
} }
if ($err>0){ if ($err)
{
// error // error
return 0; return -$err;
}else{ }
else
{
return 1; return 1;
} }
} }
@ -1464,12 +1466,13 @@ class Adherent extends CommonObject
} }
/** /**
* Fonction qui rajoute l'utilisateur dans mailman * Subscribe an email to all mailing-lists
* @return int <0 si KO, >0 si OK * @param listes To force mailing-list (string separated with ,)
* @return int <=0 if KO, >0 if OK
*/ */
function add_to_mailman($listes='') function add_to_mailman($listes='')
{ {
global $conf,$langs; global $conf,$langs,$user;
dol_syslog(get_class($this)."::add_to_mailman"); dol_syslog(get_class($this)."::add_to_mailman");
@ -1480,11 +1483,11 @@ class Adherent extends CommonObject
return -1; return -1;
} }
if (defined("ADHERENT_MAILMAN_URL") && ADHERENT_MAILMAN_URL != '' && defined("ADHERENT_MAILMAN_LISTS") && ADHERENT_MAILMAN_LISTS != '') if (! empty($conf->global->ADHERENT_MAILMAN_URL))
{ {
if ($listes =='') if ($listes == '' && ! empty($conf->global->ADHERENT_MAILMAN_LISTS))
{ {
$lists=explode(',',ADHERENT_MAILMAN_LISTS); $lists=explode(',',$conf->global->ADHERENT_MAILMAN_LISTS);
} }
else else
{ {
@ -1508,6 +1511,7 @@ class Adherent extends CommonObject
); );
$curl_url = preg_replace ($patterns, $replace, $conf->global->ADHERENT_MAILMAN_URL); $curl_url = preg_replace ($patterns, $replace, $conf->global->ADHERENT_MAILMAN_URL);
dol_syslog("Call URL to subscribe : ".$curl_url);
$ch = curl_init(); $ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"$curl_url"); curl_setopt($ch, CURLOPT_URL,"$curl_url");
//curl_setopt($ch, CURLOPT_URL,"http://www.j1b.org/"); //curl_setopt($ch, CURLOPT_URL,"http://www.j1b.org/");
@ -1526,7 +1530,7 @@ class Adherent extends CommonObject
if (curl_error($ch) > 0) if (curl_error($ch) > 0)
{ {
// error // error
return 0; return -2;
} }
curl_close ($ch); curl_close ($ch);
@ -1535,27 +1539,29 @@ class Adherent extends CommonObject
} }
else else
{ {
$this->error="Constantes de connexion non definies"; $this->error="ADHERENT_MAILMAN_URL not defined";
return -1; return -1;
} }
} }
/** /**
* Fonction qui desinscrit l'utilisateur de toutes les mailing list mailman * Unsubscribe an email from all mailing-lists
* Utilise lors de la resiliation d'adhesion * Used when a user is resiliated
* @param listes To force mailing-list (string separated with ,)
* @return int <=0 if KO, >0 if OK
*/ */
function del_to_mailman($listes='') function del_to_mailman($listes='')
{ {
global $conf; global $conf,$langs,$user;
if (defined("ADHERENT_MAILMAN_UNSUB_URL") && ADHERENT_MAILMAN_UNSUB_URL != '' && defined("ADHERENT_MAILMAN_LISTS") && ADHERENT_MAILMAN_LISTS != '') if (! empty($conf->global->ADHERENT_MAILMAN_UNSUB_URL))
{ {
if ($listes==''){ if ($listes=='' && ! empty($conf->global->ADHERENT_MAILMAN_LISTS))
$lists=explode(',',ADHERENT_MAILMAN_LISTS); {
if (defined("ADHERENT_MAILMAN_LISTS_COTISANT") && ADHERENT_MAILMAN_LISTS_COTISANT !=''){ $lists=explode(',',$conf->global->ADHERENT_MAILMAN_LISTS);
$lists=array_merge ($lists,explode(',',ADHERENT_MAILMAN_LISTS_COTISANT));
} }
}else{ else
{
$lists=explode(',',$listes); $lists=explode(',',$listes);
} }
foreach ($lists as $list) foreach ($lists as $list)
@ -1569,13 +1575,14 @@ class Adherent extends CommonObject
'/%MAILMAN_ADMINPW%/' '/%MAILMAN_ADMINPW%/'
); );
$replace = array ( $replace = array (
$list, trim($list),
$this->email, $this->email,
$this->pass, $this->pass,
$conf->global->ADHERENT_MAILMAN_ADMINPW $conf->global->ADHERENT_MAILMAN_ADMINPW
); );
$curl_url = preg_replace ($patterns, $replace, $conf->global->ADHERENT_MAILMAN_UNSUB_URL); $curl_url = preg_replace ($patterns, $replace, $conf->global->ADHERENT_MAILMAN_UNSUB_URL);
dol_syslog("Call URL to unsubscribe : ".$curl_url);
$ch = curl_init(); $ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"$curl_url"); curl_setopt($ch, CURLOPT_URL,"$curl_url");
//curl_setopt($ch, CURLOPT_URL,"http://www.j1b.org/"); //curl_setopt($ch, CURLOPT_URL,"http://www.j1b.org/");
@ -1594,9 +1601,9 @@ class Adherent extends CommonObject
$rescode=curl_error($ch); $rescode=curl_error($ch);
if ($rescode > 0) if ($rescode > 0)
{ {
dol_syslog("Error using CURL : ".$rescode); dol_syslog("Error using CURL : ".$rescode, LOG_ERR);
// error // error
return 0; return -2;
} }
curl_close ($ch); curl_close ($ch);
@ -1605,8 +1612,8 @@ class Adherent extends CommonObject
} }
else else
{ {
$this->error="Constantes de connexion non definies"; $this->error="ADHERENT_MAILMAN_UNSUB_URL not defined";
return 0; return -1;
} }
} }

View File

@ -522,10 +522,10 @@ if ($user->rights->adherent->creer && $_POST["action"] == 'confirm_valid' && $_P
} }
// Rajoute l'utilisateur dans les divers abonnements (mailman, spip, etc...) // Rajoute l'utilisateur dans les divers abonnements (mailman, spip, etc...)
if ($adh->add_to_abo($adht) < 0) if ($adh->add_to_abo() < 0)
{ {
// error // error
$errmsg.="Echec du rajout de l'utilisateur aux abonnements mailman: ".$adh->error."<BR>\n"; $errmsg.= $langs->trans("FaildToAddToMailmanList").': '.$adh->error."<br>\n";
} }
} }
else else
@ -538,11 +538,11 @@ if ($user->rights->adherent->creer && $_POST["action"] == 'confirm_valid' && $_P
if ($user->rights->adherent->supprimer && $_POST["action"] == 'confirm_resign' && $_POST["confirm"] == 'yes') if ($user->rights->adherent->supprimer && $_POST["action"] == 'confirm_resign' && $_POST["confirm"] == 'yes')
{ {
$result=$adh->resiliate($user);
$adht = new AdherentType($db); $adht = new AdherentType($db);
$adht->fetch($adh->typeid); $adht->fetch($adh->typeid);
$result=$adh->resiliate($user);
if ($result >= 0 && ! sizeof($adh->errors)) if ($result >= 0 && ! sizeof($adh->errors))
{ {
if ($adh->email && $_POST["send_mail"]) if ($adh->email && $_POST["send_mail"])
@ -555,10 +555,10 @@ if ($user->rights->adherent->supprimer && $_POST["action"] == 'confirm_resign' &
} }
// supprime l'utilisateur des divers abonnements .. // supprime l'utilisateur des divers abonnements ..
if (! $adh->del_to_abo($adht)) if ($adh->del_to_abo() < 0)
{ {
// error // error
$errmsg.="Echec de la suppression de l'utilisateur aux abonnements mailman: ".$adh->error."<BR>\n"; $errmsg.=$langs->trans("FaildToRemoveFromMailmanList").': '.$adh->error."<br>\n";
} }
} }
else else

View File

@ -82,7 +82,7 @@ class modAdherent extends DolibarrModules
$this->const[6] = array("ADHERENT_MAIL_RESIL_SUBJECT","chaine","Résiliation de votre adhésion","Sujet du mail de résiliation"); $this->const[6] = array("ADHERENT_MAIL_RESIL_SUBJECT","chaine","Résiliation de votre adhésion","Sujet du mail de résiliation");
$this->const[10] = array("ADHERENT_MAILMAN_UNSUB_URL","chaine","http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&user=%EMAIL%","Url de désinscription aux listes mailman"); $this->const[10] = array("ADHERENT_MAILMAN_UNSUB_URL","chaine","http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&user=%EMAIL%","Url de désinscription aux listes mailman");
$this->const[11] = array("ADHERENT_MAILMAN_URL","chaine","http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&send_welcome_msg_to_this_batch=1&subscribees=%EMAIL%","Url pour les inscriptions mailman"); $this->const[11] = array("ADHERENT_MAILMAN_URL","chaine","http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&send_welcome_msg_to_this_batch=1&subscribees=%EMAIL%","Url pour les inscriptions mailman");
$this->const[12] = array("ADHERENT_MAILMAN_LISTS","chaine","","Listes auxquelles les nouveaux adhérents sont inscrits"); $this->const[12] = array("ADHERENT_MAILMAN_LISTS","chaine","","Mailing-list to subscribe new members to");
$this->const[16] = array("ADHERENT_USE_SPIP_AUTO","yesno","","Utilisation de SPIP automatiquement"); $this->const[16] = array("ADHERENT_USE_SPIP_AUTO","yesno","","Utilisation de SPIP automatiquement");
$this->const[17] = array("ADHERENT_SPIP_USER","chaine","","Utilisateur de connexion à la base spip"); $this->const[17] = array("ADHERENT_SPIP_USER","chaine","","Utilisateur de connexion à la base spip");
$this->const[18] = array("ADHERENT_SPIP_PASS","chaine","","Mot de passe de connexion à la base spip"); $this->const[18] = array("ADHERENT_SPIP_PASS","chaine","","Mot de passe de connexion à la base spip");
@ -95,8 +95,6 @@ class modAdherent extends DolibarrModules
$this->const[26] = array("ADHERENT_CARD_FOOTER_TEXT","chaine","Association AZERTY","Texte imprimé sur le bas de la carte adhérent"); $this->const[26] = array("ADHERENT_CARD_FOOTER_TEXT","chaine","Association AZERTY","Texte imprimé sur le bas de la carte adhérent");
$this->const[27] = array("ADHERENT_CARD_TEXT","texte","%PRENOM% %NOM%\r\nMembre ne %ID%\r\n%EMAIL%\r\n%ADRESSE%\r\n%CP% %VILLE%\r\n%PAYS%","Texte imprimé sur la carte adhérent"); $this->const[27] = array("ADHERENT_CARD_TEXT","texte","%PRENOM% %NOM%\r\nMembre ne %ID%\r\n%EMAIL%\r\n%ADRESSE%\r\n%CP% %VILLE%\r\n%PAYS%","Texte imprimé sur la carte adhérent");
$this->const[28] = array("ADHERENT_MAILMAN_ADMINPW","chaine","","Mot de passe Admin des liste mailman"); $this->const[28] = array("ADHERENT_MAILMAN_ADMINPW","chaine","","Mot de passe Admin des liste mailman");
$this->const[29] = array("ADHERENT_MAILMAN_SERVER","chaine","","Serveur hébergeant les interfaces d'Admin des listes mailman");
$this->const[30] = array("ADHERENT_MAILMAN_LISTS_COTISANT","chaine","","Liste(s) auxquelles les nouveaux cotisants sont inscrits automatiquement");
$this->const[31] = array("ADHERENT_BANK_USE_AUTO","yesno","","Insertion automatique des cotisations dans le compte banquaire"); $this->const[31] = array("ADHERENT_BANK_USE_AUTO","yesno","","Insertion automatique des cotisations dans le compte banquaire");
$this->const[32] = array("ADHERENT_BANK_ACCOUNT","chaine","","ID du Compte banquaire utilise"); $this->const[32] = array("ADHERENT_BANK_ACCOUNT","chaine","","ID du Compte banquaire utilise");
$this->const[33] = array("ADHERENT_BANK_CATEGORIE","chaine","","ID de la catégorie banquaire des cotisations"); $this->const[33] = array("ADHERENT_BANK_CATEGORIE","chaine","","ID de la catégorie banquaire des cotisations");