From 9ff2a4c3777fea61938ac195f8f2ce3a3e82e964 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 15 Sep 2005 22:44:29 +0000 Subject: [PATCH] =?UTF-8?q?Am=E9lioration=20de=20la=20gestion=20des=20dest?= =?UTF-8?q?inataires=20de=20mailing.=20Les=20modules=20qui=20proposent=20d?= =?UTF-8?q?es=20cibles=20peuvent=20offrir=20des=20variantes.=20Ajout=20d'u?= =?UTF-8?q?n=20lien=20sur=20la=20fiche=20du=20destinataire.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/comm/mailing/cibles.php | 34 ++++-- htdocs/comm/mailing/fiche.php | 38 +++++-- htdocs/comm/mailing/index.php | 6 +- .../modules/mailings/cerise.modules.php | 107 ------------------ .../modules/mailings/fraise.modules.php | 62 ++++++++-- .../modules/mailings/modules_mailings.php | 32 ++++-- .../modules/mailings/poire.modules.php | 59 ++++++++-- .../modules/mailings/pomme.modules.php | 25 +++- htdocs/langs/en_US/mails.lang | 11 +- htdocs/langs/en_US/members.lang | 5 +- htdocs/langs/fr_FR/mails.lang | 13 +-- htdocs/langs/fr_FR/members.lang | 5 +- mysql/migration/1.1.0-2.0.0.sql | 2 + mysql/tables/llx_mailing_cibles.sql | 1 + 14 files changed, 224 insertions(+), 176 deletions(-) delete mode 100644 htdocs/includes/modules/mailings/cerise.modules.php diff --git a/htdocs/comm/mailing/cibles.php b/htdocs/comm/mailing/cibles.php index 55a5a2f18f5..104152b5de0 100644 --- a/htdocs/comm/mailing/cibles.php +++ b/htdocs/comm/mailing/cibles.php @@ -68,12 +68,16 @@ if ($_GET["action"] == 'add') $classname = "mailing_".$modulename; require_once($file); + $filtersarray=array(); + if (isset($_POST["filter"])) $filtersarray[0]=$_POST["filter"]; + $obj = new $classname($db); - $result=$obj->add_to_target($_GET["rowid"]); - + $result=$obj->add_to_target($_GET["rowid"],$filtersarray); + if ($result > 0) { Header("Location: cibles.php?id=".$_GET["rowid"]); + exit; } if ($result == 0) { @@ -164,11 +168,13 @@ if ($mil->fetch($_GET["id"]) == 0) if ($mesg) print "$mesg
\n"; // Affiche les listes de sélection - if ($mil->statut == 0) { + if ($mil->statut == 0) + { print ''; print ''; print ''; print ''; + print ''; print ''; - + + if ($mil->statut == 0) print ''; + print ''; @@ -221,12 +229,16 @@ if ($mil->fetch($_GET["id"]) == 0) print $modulename; print ""; */ - print ''; + print ''; + + print ''; print ''; + if ($mil->statut == 0) print ''; + print "\n"; } } @@ -244,7 +258,7 @@ if ($mil->fetch($_GET["id"]) == 0) $var=!$var; print ''; - print ''; + print ''; print ''; print '
'.$langs->trans("RecipientSelectionModules").''.$langs->trans("NbOfUniqueEMails").''.$langs->trans("Parameters").''; if ($mil->statut == 0) { print $langs->trans("Actions"); @@ -211,7 +217,9 @@ if ($mil->fetch($_GET["id"]) == 0) { $var = !$var; print '
'; print img_object('',$obj->picto).' '.$obj->getDesc(); print ''.$obj->getNbOfRecipients().''.($obj->getNbOfRecipients()).''; + print $obj->formFilter(); + print ''; if ($mil->statut == 0) { - print ''; + print ''; } else { @@ -235,6 +247,8 @@ if ($mil->fetch($_GET["id"]) == 0) } print '
  
   

'; @@ -252,7 +266,7 @@ if ($mil->fetch($_GET["id"]) == 0) // Liste des destinataires sélectionnés - $sql = "SELECT mc.rowid, mc.nom, mc.prenom, mc.email, mc.statut, mc.date_envoi"; + $sql = "SELECT mc.rowid, mc.nom, mc.prenom, mc.email, mc.statut, mc.date_envoi, mc.url"; $sql .= " FROM ".MAIN_DB_PREFIX."mailing_cibles as mc"; $sql .= " WHERE mc.fk_mailing=".$mil->id; if ($sortfield) { $sql .= " ORDER BY $sortfield $sortorder"; } @@ -271,6 +285,7 @@ if ($mil->fetch($_GET["id"]) == 0) print_liste_field_titre($langs->trans("Lastname"),"cibles.php","mc.nom",$addu,"","",$sortfield); print_liste_field_titre($langs->trans("Firstname"),"cibles.php","mc.prenom",$addu,"","",$sortfield); print_liste_field_titre($langs->trans("EMail"),"cibles.php","mc.email",$addu,"","",$sortfield); + print ' '; print ''.$langs->trans("Status").''; if ($mil->statut == 0) { @@ -284,7 +299,7 @@ if ($mil->fetch($_GET["id"]) == 0) $var = true; $i = 0; - while ($i < $num ) + while ($i < $num) { $obj = $db->fetch_object($resql); $var=!$var; @@ -293,6 +308,7 @@ if ($mil->fetch($_GET["id"]) == 0) print ''.stripslashes($obj->nom).''; print ''.stripslashes($obj->prenom).''; print ''.$obj->email.''; + print ''.$obj->url.''; if ($mil->statut == 0) { print ''.$langs->trans("MailingStatusNotSent").''; diff --git a/htdocs/comm/mailing/fiche.php b/htdocs/comm/mailing/fiche.php index 63489259be7..9f33588d684 100644 --- a/htdocs/comm/mailing/fiche.php +++ b/htdocs/comm/mailing/fiche.php @@ -99,22 +99,30 @@ if ($_POST["action"] == 'send') // Action ajout mailing if ($_POST["action"] == 'add') { - $mil = new Mailing($db); + $message=''; + + $mil = new Mailing($db); - $mil->email_from = $_POST["from"]; - $mil->titre = $_POST["titre"]; - $mil->sujet = $_POST["sujet"]; - $mil->body = $_POST["body"]; + $mil->email_from = trim($_POST["from"]); + $mil->titre = trim($_POST["titre"]); + $mil->sujet = trim($_POST["sujet"]); + $mil->body = trim($_POST["body"]); - if ($mil->create($user) >= 0) + if (! $mil->titre) $message.=($message?'
':'').$langs->trans("ErrorFieldRequired",$langs->trans("MailTitle")); + if (! $mil->sujet) $message.=($message?'
':'').$langs->trans("ErrorFieldRequired",$langs->trans("MailTopic")); + + if (! $message) { - Header("Location: fiche.php?id=".$mil->id); + if ($mil->create($user) >= 0) + { + Header("Location: fiche.php?id=".$mil->id); + exit; + } + $message=$mil->error; } - else - { - $message='
'.$mil->error.'
'; + + $message='
'.$message.'
'; $_GET["action"]="create"; - } } // Action mise a jour mailing @@ -229,7 +237,13 @@ if ($_GET["action"] == 'create') print ''.$langs->trans("MailFrom").''; print ''.$langs->trans("MailTitle").''; print ''.$langs->trans("MailTopic").''; - print ''.$langs->trans("MailMessage").''; + print ''.$langs->trans("MailMessage").'
'; + print '
'.$langs->trans("CommonSubstitutions").':
'; + print '__EMAIL__ = '.$langs->trans("EMail").'
'; + print '__LASTNAME__ = '.$langs->trans("Lastname").'
'; + print '__FIRSTNAME__ = '.$langs->trans("Firstname").'
'; + print ''; + print ''; print ''; print ''; print ''; diff --git a/htdocs/comm/mailing/index.php b/htdocs/comm/mailing/index.php index e159720c5f8..6bba2fea1c5 100644 --- a/htdocs/comm/mailing/index.php +++ b/htdocs/comm/mailing/index.php @@ -118,7 +118,7 @@ while (($file = readdir($handle))!==false) while ($i < $num ) { $obj = $db->fetch_object($result); - print ''.img_object('',$mailmodule->picto).' '.$obj->label.''.$obj->nb.''; + print ''.img_object('',$mailmodule->picto).' '.$obj->label.''.$obj->nb.''; $i++; } @@ -156,7 +156,7 @@ if ($result) print ''; print ''; print ''; - print ''; + print ''; print ''; $num = $db->num_rows($result); @@ -173,7 +173,7 @@ if ($result) print ""; print ''; print ''; - print ''; + print ''; $mail=new Mailing($db); print ''; print ''; diff --git a/htdocs/includes/modules/mailings/cerise.modules.php b/htdocs/includes/modules/mailings/cerise.modules.php deleted file mode 100644 index 4de25a8b58f..00000000000 --- a/htdocs/includes/modules/mailings/cerise.modules.php +++ /dev/null @@ -1,107 +0,0 @@ - - * Copyright (C) 2005 Laurent Destailleur - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * or see http://www.gnu.org/ - * - * $Id$ - * $Source$ - * - * - * L'utilisation d'adresses de courriers électroniques dans les opérations - * de prospection commerciale est subordonnée au recueil du consentement - * préalable des personnes concernées. - * - * Le dispositif juridique applicable a été introduit par l'article 22 de - * la loi du 21 juin 2004 pour la confiance dans l'économie numérique. - * - * Les dispositions applicables sont définies par les articles L. 34-5 du - * code des postes et des télécommunications et L. 121-20-5 du code de la - * consommation. L'application du principe du consentement préalable en - * droit français résulte de la transposition de l'article 13 de la Directive - * européenne du 12 juillet 2002 « Vie privée et communications électroniques ». - * - */ - -/** - \file htdocs/includes/modules/mailings/cerise.modules.php - \ingroup mailing - \brief Fichier de la classe permettant de générer la liste de destinataires Cerise - \version $Revision$ -*/ - -include_once DOL_DOCUMENT_ROOT.'/includes/modules/mailings/modules_mailings.php'; - - -/** - \class mailing_cerise - \brief Classe permettant de générer la liste des destinataires Cerise -*/ - -class mailing_cerise extends MailingTargets -{ - var $name="ContactProspects"; // Identifiant du module mailing - var $desc='Tous les contacts emails uniques de toutes les sociétés prospects'; // Libellé utilisé si aucune traduction pour MailingModuleDescXXX ou XXX=name trouvée - var $require_module=array("commercial"); // Module mailing actif si modules require_module actifs - var $require_admin=0; // Module mailing actif pour user admin ou non - var $picto='contact'; - - var $db; - var $statssql=array(); - - - function mailing_cerise($DB) - { - global $langs; - $langs->load("commercial"); - - $this->db=$DB; - - // Liste des tableaux des stats espace mailing - $this->statssql[0]="SELECT '".$langs->trans("Prospects")."' as label, count(*) as nb FROM ".MAIN_DB_PREFIX."societe WHERE client = 2"; - $this->statssql[1]="SELECT '".$langs->trans("NbOfProspectsContacts")."' as label, count(distinct(c.email)) as nb FROM ".MAIN_DB_PREFIX."socpeople as c, ".MAIN_DB_PREFIX."societe as s WHERE s.idp = c.fk_soc AND s.client = 2 AND c.email IS NOT NULL"; - } - - function getNbOfRecipients() - { - // La requete doit retourner: nb - $sql = "SELECT count(distinct(c.email)) as nb"; - $sql .= " FROM ".MAIN_DB_PREFIX."socpeople as c"; - $sql .= ", ".MAIN_DB_PREFIX."societe as s"; - $sql .= " WHERE s.idp = c.fk_soc"; - $sql .= " AND s.client = 2"; - $sql .= " AND c.email IS NOT NULL"; - - return parent::getNbOfRecipients($sql); - } - - function add_to_target($mailing_id) - { - // La requete doit retourner: email, fk_contact, name, firstname - $sql = "SELECT c.email as email, c.idp as fk_contact, c.name as name, c.firstname as firstname"; - $sql .= " FROM ".MAIN_DB_PREFIX."socpeople as c"; - $sql .= ", ".MAIN_DB_PREFIX."societe as s"; - $sql .= " WHERE s.idp = c.fk_soc"; - $sql .= " AND s.client = 2"; - $sql .= " AND c.email IS NOT NULL"; - $sql .= " ORDER BY c.email"; - - return parent::add_to_target($mailing_id, $sql); - } - -} - -?> diff --git a/htdocs/includes/modules/mailings/fraise.modules.php b/htdocs/includes/modules/mailings/fraise.modules.php index 71ae3518a51..f9e8f9b5eb7 100644 --- a/htdocs/includes/modules/mailings/fraise.modules.php +++ b/htdocs/includes/modules/mailings/fraise.modules.php @@ -52,10 +52,10 @@ include_once DOL_DOCUMENT_ROOT.'/includes/modules/mailings/modules_mailings.php' class mailing_fraise extends MailingTargets { - var $name='MembersValidated'; // Identifiant du module mailing - var $desc='Tous les membres à jour'; // Libellé utilisé si aucune traduction pour MailingModuleDescXXX ou XXX=name trouvée - var $require_module=array('adherent'); // Module mailing actif si modules require_module actifs - var $require_admin=0; // Module mailing actif pour user admin ou non + var $name='FundationMembers'; // Identifiant du module mailing + var $desc='Membres de l\'association'; // Libellé utilisé si aucune traduction pour MailingModuleDescXXX ou XXX=name trouvée + var $require_module=array('adherent'); // Module mailing actif si modules require_module actifs + var $require_admin=0; // Module mailing actif pour user admin ou non var $picto='user'; var $db; @@ -70,7 +70,7 @@ class mailing_fraise extends MailingTargets $this->db=$DB; // Liste des tableaux des stats espace mailing - $this->statssql[0]="SELECT '".$langs->trans("MembersStatusValidated")."' as label, count(*) as nb FROM ".MAIN_DB_PREFIX."adherent where statut = 1"; + $this->statssql[0]="SELECT '".$langs->trans("FundationMembers")."' as label, count(*) as nb FROM ".MAIN_DB_PREFIX."adherent where statut = 1"; } function getNbOfRecipients() @@ -83,13 +83,53 @@ class mailing_fraise extends MailingTargets return parent::getNbOfRecipients($sql); } - function add_to_target($mailing_id) + /** + * \brief Affiche formulaire de filtre qui apparait dans page de selection + * des destinataires de mailings + * \return string Retourne zone select + */ + function formFilter() { - // La requete doit retourner: email, fk_contact, name, firstname - $sql = "SELECT a.email as email, null as fk_contact, a.nom as name, a.prenom as firstname"; - $sql .= " FROM ".MAIN_DB_PREFIX."adherent as a"; - $sql .= " WHERE a.email IS NOT NULL AND a.statut=1"; - $sql .= " ORDER BY a.email"; + global $langs; + $s=''; + $s.=''; + return $s; + } + + + /** + * \brief Renvoie url lien vers fiche de la source du destinataire du mailing + * \return string Url lien + */ + function url($id) + { + return ''.img_object('',"user").''; + } + + + /** + * \brief Ajoute destinataires dans table des cibles + * \param mailing_id Id du mailing concerné + * \param filterarray Requete sql de selection des destinataires + * \return int < 0 si erreur, nb ajout si ok + */ + function add_to_target($mailing_id,$filtersarray=array()) + { + // La requete doit retourner: id, email, fk_contact, name, firstname + $sql = "SELECT a.rowid as id, a.email as email, null as fk_contact, a.nom as name, a.prenom as firstname"; + $sql.= " FROM ".MAIN_DB_PREFIX."adherent as a"; + $sql.= " WHERE a.email IS NOT NULL"; + foreach($filtersarray as $key) + { + if ($key == -1) $sql.= " AND a.statut=-1"; + if ($key == 0) $sql.= " AND a.statut=0"; + if ($key == 1) $sql.= " AND a.statut=1"; + } + $sql.= " ORDER BY a.email"; return parent::add_to_target($mailing_id, $sql); } diff --git a/htdocs/includes/modules/mailings/modules_mailings.php b/htdocs/includes/modules/mailings/modules_mailings.php index 392a7ce5ce1..f968852ab70 100644 --- a/htdocs/includes/modules/mailings/modules_mailings.php +++ b/htdocs/includes/modules/mailings/modules_mailings.php @@ -79,11 +79,22 @@ class MailingTargets $obj = $this->db->fetch_object($result); return $obj->nb; } - else { + else + { return -1; } } + /** + * \brief Affiche formulaire de filtre qui apparait dans page de selection + * des destinataires de mailings + * \return string Retourne zone select + */ + function formFilter() + { + return ' '; + } + /** * \brief Met a jour nombre de destinataires * \param mailing_id Id du mailing concerné @@ -141,7 +152,7 @@ class MailingTargets $obj = $this->db->fetch_object($result); if ($old <> $obj->email) { - $cibles[$j] = array($obj->email,$obj->fk_contact,$obj->name,$obj->firstname); + $cibles[$j] = array($obj->email,$obj->fk_contact,$obj->name,$obj->firstname,$this->url($obj->id)); $old = $obj->email; $j++; } @@ -156,6 +167,8 @@ class MailingTargets return -1; } + $this->db->begin(); + // Insère destinataires de cibles dans table $j = 0; $num = sizeof($cibles); @@ -164,12 +177,14 @@ class MailingTargets $sql = "INSERT INTO ".MAIN_DB_PREFIX."mailing_cibles"; $sql .= " (fk_mailing, "; if ($cibles[$i][1]) $sql .= "fk_contact, "; - $sql .= "nom, prenom, email)"; + $sql .= "nom, prenom, email, url)"; $sql .= " VALUES (".$mailing_id.","; if ($cibles[$i][1]) $sql .= $cibles[$i][1] .","; - $sql .= "'".$cibles[$i][2] ."',"; - $sql .= "'".$cibles[$i][3] ."',"; - $sql .= "'".$cibles[$i][0] ."')"; + $sql .= "'".addslashes($cibles[$i][2])."',"; + $sql .= "'".addslashes($cibles[$i][3])."',"; + $sql .= "'".addslashes($cibles[$i][0])."',"; + $sql .= "'".addslashes($cibles[$i][4])."')"; + $result=$this->db->query($sql); if ($result) { @@ -177,10 +192,12 @@ class MailingTargets } else { - if ($this->db->errno() != DB_ERROR_RECORD_ALREADY_EXISTS) + if ($this->db->errno() != 'DB_ERROR_RECORD_ALREADY_EXISTS') { // Si erreur autre que doublon dolibarr_syslog($this->db->error()); + $this->error=$this->db->error(); + $this->db->rollback(); return -1; } } @@ -190,6 +207,7 @@ class MailingTargets $this->update_nb($mailing_id); + $this->db->commit(); return $j; } diff --git a/htdocs/includes/modules/mailings/poire.modules.php b/htdocs/includes/modules/mailings/poire.modules.php index 7cce67b4092..0ffbb8075cd 100644 --- a/htdocs/includes/modules/mailings/poire.modules.php +++ b/htdocs/includes/modules/mailings/poire.modules.php @@ -53,8 +53,8 @@ include_once DOL_DOCUMENT_ROOT.'/includes/modules/mailings/modules_mailings.php' class mailing_poire extends MailingTargets { - var $name='ContactCustomers'; // Identifiant du module mailing - var $desc='Tous les contacts uniques de toutes les sociétés clientes'; // Libellé utilisé si aucune traduction pour MailingModuleDescXXX ou XXX=name trouvée + var $name='ContactCompanies'; // Identifiant du module mailing + var $desc='Contacts des sociétés'; // Libellé utilisé si aucune traduction pour MailingModuleDescXXX ou XXX=name trouvée var $require_module=array("commercial"); // Module mailing actif si modules require_module actifs var $require_admin=0; // Module mailing actif pour user admin ou non var $picto='contact'; @@ -71,8 +71,8 @@ class mailing_poire extends MailingTargets $this->db=$DB; // Liste des tableaux des stats espace mailing - $this->statssql[0]="SELECT '".$langs->trans("Customers")."' as label, count(*) as nb FROM ".MAIN_DB_PREFIX."societe WHERE client = 1"; - $this->statssql[1]="SELECT '".$langs->trans("NbOfCustomersContacts")."' as label, count(distinct(c.email)) as nb FROM ".MAIN_DB_PREFIX."socpeople as c, ".MAIN_DB_PREFIX."societe as s WHERE s.idp = c.fk_soc AND s.client = 1 AND c.email != ''"; + //$this->statssql[0]="SELECT '".$langs->trans("Customers")."' as label, count(*) as nb FROM ".MAIN_DB_PREFIX."societe WHERE client = 1"; + $this->statssql[0]="SELECT '".$langs->trans("NbOfCompaniesContacts")."' as label, count(distinct(c.email)) as nb FROM ".MAIN_DB_PREFIX."socpeople as c, ".MAIN_DB_PREFIX."societe as s WHERE s.idp = c.fk_soc AND s.client = 1 AND c.email != ''"; } function getNbOfRecipients() @@ -88,15 +88,58 @@ class mailing_poire extends MailingTargets return parent::getNbOfRecipients($sql); } - function add_to_target($mailing_id) + /** + * \brief Affiche formulaire de filtre qui apparait dans page de selection + * des destinataires de mailings + * \return string Retourne zone select + */ + function formFilter() { - // La requete doit retourner: email, fk_contact, name, firstname - $sql = "SELECT c.email as email, c.idp as fk_contact, c.name as name, c.firstname as firstname"; + global $langs; + $langs->load("commercial"); + $langs->load("suppliers"); + + $s=''; + $s.=''; + return $s; + } + + + /** + * \brief Renvoie url lien vers fiche de la source du destinataire du mailing + * \return string Url lien + */ + function url($id) + { + return ''.img_object('',"contact").''; + } + + + /** + * \brief Ajoute destinataires dans table des cibles + * \param mailing_id Id du mailing concerné + * \param filterarray Requete sql de selection des destinataires + * \return int < 0 si erreur, nb ajout si ok + */ + function add_to_target($mailing_id,$filtersarray=array()) + { + // La requete doit retourner: id, email, fk_contact, name, firstname + $sql = "SELECT s.idp as id, c.email as email, c.idp as fk_contact, c.name as name, c.firstname as firstname"; $sql .= " FROM ".MAIN_DB_PREFIX."socpeople as c"; $sql .= ", ".MAIN_DB_PREFIX."societe as s"; $sql .= " WHERE s.idp = c.fk_soc"; - $sql .= " AND s.client = 1"; $sql .= " AND c.email != ''"; + foreach($filtersarray as $key) + { + if ($key == 'prospects') $sql.= " AND s.client=2"; + if ($key == 'customers') $sql.= " AND s.client=1"; + if ($key == 'suppliers') $sql.= " AND s.fournisseur=1"; + } $sql .= " ORDER BY c.email"; return parent::add_to_target($mailing_id, $sql); diff --git a/htdocs/includes/modules/mailings/pomme.modules.php b/htdocs/includes/modules/mailings/pomme.modules.php index 245550207b9..1f6dc38e4d1 100644 --- a/htdocs/includes/modules/mailings/pomme.modules.php +++ b/htdocs/includes/modules/mailings/pomme.modules.php @@ -53,7 +53,7 @@ include_once DOL_DOCUMENT_ROOT.'/includes/modules/mailings/modules_mailings.php' class mailing_pomme extends MailingTargets { var $name='DolibarrUsers'; // Identifiant du module mailing - var $desc='Tous les utilisateurs avec emails de Dolibarr'; // Libellé utilisé si aucune traduction pour MailingModuleDescXXX ou XXX=name trouvée + var $desc='Utilisateurs de Dolibarr avec emails'; // Libellé utilisé si aucune traduction pour MailingModuleDescXXX ou XXX=name trouvée var $require_module=array(); // Module mailing actif si modules require_module actifs var $require_admin=1; // Module mailing actif pour user admin ou non var $picto='user'; @@ -85,11 +85,28 @@ class mailing_pomme extends MailingTargets return parent::getNbOfRecipients($sql); } + - function add_to_target($mailing_id) + /** + * \brief Renvoie url lien vers fiche de la source du destinataire du mailing + * \return string Url lien + */ + function url($id) { - // La requete doit retourner: email, fk_contact, name, firstname - $sql = "SELECT u.email as email, null as fk_contact, u.name as name, u.firstname as firstname"; + return ''.img_object('',"user").''; + } + + + /** + * \brief Ajoute destinataires dans table des cibles + * \param mailing_id Id du mailing concerné + * \param filterarray Requete sql de selection des destinataires + * \return int < 0 si erreur, nb ajout si ok + */ + function add_to_target($mailing_id,$filtersarray=array()) + { + // La requete doit retourner: id, email, fk_contact, name, firstname + $sql = "SELECT u.rowid as id, u.email as email, null as fk_contact, u.name as name, u.firstname as firstname"; $sql .= " FROM ".MAIN_DB_PREFIX."user as u"; $sql .= " WHERE u.email != ''"; // u.email IS NOT NULL est implicite dans ce test $sql .= " ORDER BY u.email"; diff --git a/htdocs/langs/en_US/mails.lang b/htdocs/langs/en_US/mails.lang index fcfeb1eab52..23192a07f5d 100644 --- a/htdocs/langs/en_US/mails.lang +++ b/htdocs/langs/en_US/mails.lang @@ -14,7 +14,7 @@ MailCC=Copy to MailTopic=EMail topic MailText=Message MailFile=Attach a file -MailMessage=Message +MailMessage=EMail body ListOfEMailings=Liste of emailings NewMailing=New emailing EditMailing=Edit emailing @@ -48,18 +48,17 @@ TotalNbOfDistinctRecipients=Number of distinct recipients NoTargetYet=No recipients defined yet AddRecipients=Add recipients RemoveRecipient=Remove recipient +CommonSubstitutions=Common substitutions # Libelle des modules de liste de destinataires mailing -MailingModuleDescContactProspects=All unique contact emails for all prospect companies -MailingModuleDescContactCustomers=All unique contact emails for all customer companies +MailingModuleDescContactCompanies=Unique contacts with emails in all companies MailingModuleDescDolibarrUsers=All Dolibarr users with emails -MailingModuleDescMembersValidated=All validated members +MailingModuleDescFundationMembers=Fundation members RecipientSelectionModules=EMailing modules for recipients' selection MailSelectedRecipients=Selected recipients MailingArea=EMailings area LastMailings=Last %s emailings TargetsStatistics=Targets statistics -NbOfProspectsContacts=Unique contacts for all prospects -NbOfCustomersContacts=Unique contacts for all customers +NbOfCompaniesContacts=Unique contacts of companies MailNoChangePossible=Recipients for validated emailing can't be changed SearchAMailing=Search mailing SendMailing=Send emailing diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang index 914e796edab..8f866767bfc 100644 --- a/htdocs/langs/en_US/members.lang +++ b/htdocs/langs/en_US/members.lang @@ -2,6 +2,7 @@ MemberCard=Member card Member=Member Members=Members +FundationMembers=Fundation members Attributs=Attributes Person=Person ErrorMemberTypeNotDefined=Member type not defined @@ -60,4 +61,6 @@ ResiliateMember=Resiliate a member ConfirmResiliateMember=Are you sure you want to resiliate this member ? DeleteMember=Delete a member ConfirmDeleteMember=Are you sure you want to delete this member (Deleting a memeber will delete all his subscription) ? -Filehtpasswd=htpasswd file \ No newline at end of file +Filehtpasswd=htpasswd file +ValidateMember=Validate a member +ConfirmValidateMember=Are you sure you want to validate this member ? \ No newline at end of file diff --git a/htdocs/langs/fr_FR/mails.lang b/htdocs/langs/fr_FR/mails.lang index 51b406f6c6e..1a135fb3340 100644 --- a/htdocs/langs/fr_FR/mails.lang +++ b/htdocs/langs/fr_FR/mails.lang @@ -14,7 +14,7 @@ MailCC=Copie MailTopic=Sujet du mail MailText=Message MailFile=Joindre un fichier -MailMessage=Message +MailMessage=Message du mail ListOfEMailings=Liste des mailings NewMailing=Nouveau mailing EditMailing=Éditer mailing @@ -48,18 +48,17 @@ TotalNbOfDistinctRecipients=Nombre de destinataires uniques NoTargetYet=Aucun destinataire défini AddRecipients=Ajout de destinataires RemoveRecipient=Supprime destinataire +CommonSubstitutions=Substitutions communes # Libelle des modules de liste de destinataires mailing -MailingModuleDescContactProspects=Tous les contacts de toutes les sociétés en prospection -MailingModuleDescContactCustomers=Tous les contacts de toutes les sociétés clientes -MailingModuleDescDolibarrUsers=Tous les utilisateurs de Dolibarr ayant un e-mail -MailingModuleDescMembersValidated=Tous les adhérents validés +MailingModuleDescContactCompanies=Contacts avec e-mail des sociétés (prospects, clients, fournisseurs...) +MailingModuleDescDolibarrUsers=Utilisateurs de Dolibarr ayant un e-mail +MailingModuleDescFundationMembers=Adhérents ayant e-mail RecipientSelectionModules=Modules de sélection des destinataires MailSelectedRecipients=Destinataires sélectionnés MailingArea=Espace mailings LastMailings=Les %s derniers mailings TargetsStatistics=Statistiques destinataires -NbOfProspectsContacts=Contacts uniques tous prospects -NbOfCustomersContacts=Contacts uniques tous clients +NbOfCompaniesContacts=Contacts uniques des sociétés MailNoChangePossible=Destinataires d'un mailing validé non modifiables SearchAMailing=Rechercher un mailing SendMailing=Envoi mailing diff --git a/htdocs/langs/fr_FR/members.lang b/htdocs/langs/fr_FR/members.lang index e0b12b93179..098b944ab6a 100644 --- a/htdocs/langs/fr_FR/members.lang +++ b/htdocs/langs/fr_FR/members.lang @@ -2,6 +2,7 @@ MemberCard=Fiche adhérent Member=Adhérent Members=Adhérents +FundationMembers=Membres de l'association Attributs=Attributs Person=Personne ErrorMemberTypeNotDefined=Le type d'adhérent n'est pas choisi @@ -60,4 +61,6 @@ ResiliateMember=R ConfirmResiliateMember=Etes-vous sûr de vouloir résilier cet adhérent ? DeleteMember=Effacer un membre ConfirmDeleteMember=Etes-vous sûr de vouloir effacer ce membre (Effacer un membre efface aussi toutes ses cotisations) ? -Filehtpasswd=Fichier htpasswd \ No newline at end of file +Filehtpasswd=Fichier htpasswd +ValidateMember=Valider un adhérent +ConfirmValidateMember=Etes-vous sûr de vouloir valider cet adhérent ? diff --git a/mysql/migration/1.1.0-2.0.0.sql b/mysql/migration/1.1.0-2.0.0.sql index eda75c503ad..b63862cd1d5 100644 --- a/mysql/migration/1.1.0-2.0.0.sql +++ b/mysql/migration/1.1.0-2.0.0.sql @@ -620,6 +620,8 @@ create table llx_mailing_cibles )type=innodb; +alter table llx_mailing_cibles ADD url varchar(160); + alter table llx_mailing_cibles ADD UNIQUE uk_mailing_cibles (fk_mailing, email); -- diff --git a/mysql/tables/llx_mailing_cibles.sql b/mysql/tables/llx_mailing_cibles.sql index 2f7d7817aa9..4f466c2cdaa 100644 --- a/mysql/tables/llx_mailing_cibles.sql +++ b/mysql/tables/llx_mailing_cibles.sql @@ -31,6 +31,7 @@ create table llx_mailing_cibles prenom varchar(160), email varchar(160) NOT NULL, statut smallint NOT NULL DEFAULT 0, + url varchar(160), date_envoi datetime )type=innodb;
'.$langs->trans("LastMailings",10).''.$langs->trans("NbOfEMails").''.$langs->trans("NbOfEMails").''.$langs->trans("Status").'
'.img_object($langs->trans("ShowEMail"),"email").' '.$obj->rowid.''.$obj->titre.''.($obj->nbemail?$obj->nbemail:"0").''.($obj->nbemail?$obj->nbemail:"0").''.$mail->statuts[$obj->statut].'