From c66971004ae5aa19e36c2bd14e1d1a58ef851f3d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 Apr 2005 23:23:48 +0000 Subject: [PATCH] Qual: Meilleure gestion erreur gestion des destinataires d'un mailing Fix: Quelques erreurs sur le comptage des emails uniques. --- .../modules/mailings/cerise.modules.php | 16 ++++++++------ .../modules/mailings/fraise.modules.php | 6 ++--- .../modules/mailings/modules_mailings.php | 14 ++++++++---- .../modules/mailings/poire.modules.php | 22 ++++++++++--------- .../modules/mailings/pomme.modules.php | 14 +++++++----- 5 files changed, 42 insertions(+), 30 deletions(-) diff --git a/htdocs/includes/modules/mailings/cerise.modules.php b/htdocs/includes/modules/mailings/cerise.modules.php index 294a7b330fa..4de25a8b58f 100644 --- a/htdocs/includes/modules/mailings/cerise.modules.php +++ b/htdocs/includes/modules/mailings/cerise.modules.php @@ -36,7 +36,8 @@ * */ -/** \file htdocs/includes/modules/mailings/cerise.modules.php +/** + \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$ @@ -45,14 +46,15 @@ include_once DOL_DOCUMENT_ROOT.'/includes/modules/mailings/modules_mailings.php'; -/** \class mailing_cerise +/** + \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 de toutes les sociétés prospects'; // Libellé utilisé si aucune traduction pour MailingModuleDescXXX ou XXX=name trouvée + 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'; @@ -69,14 +71,14 @@ class mailing_cerise extends MailingTargets $this->db=$DB; // Liste des tableaux des stats espace mailing - $this->statssql[0]="SELECT '".$langs->trans("Prospects")."' label, count(*) nb FROM ".MAIN_DB_PREFIX."societe WHERE client = 2"; - $this->statssql[1]="SELECT '".$langs->trans("NbOfProspectsContacts")."' label, count(distinct(c.email)) 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"; + $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)) 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"; @@ -89,7 +91,7 @@ class mailing_cerise extends MailingTargets function add_to_target($mailing_id) { // La requete doit retourner: email, fk_contact, name, firstname - $sql = "SELECT c.email email, c.idp fk_contact, c.name name, c.firstname 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"; diff --git a/htdocs/includes/modules/mailings/fraise.modules.php b/htdocs/includes/modules/mailings/fraise.modules.php index a4df77a40d2..71ae3518a51 100644 --- a/htdocs/includes/modules/mailings/fraise.modules.php +++ b/htdocs/includes/modules/mailings/fraise.modules.php @@ -70,13 +70,13 @@ class mailing_fraise extends MailingTargets $this->db=$DB; // Liste des tableaux des stats espace mailing - $this->statssql[0]="SELECT '".$langs->trans("MembersStatusValidated")."' label, count(*) nb FROM ".MAIN_DB_PREFIX."adherent where statut = 1"; + $this->statssql[0]="SELECT '".$langs->trans("MembersStatusValidated")."' as label, count(*) as nb FROM ".MAIN_DB_PREFIX."adherent where statut = 1"; } function getNbOfRecipients() { // La requete doit retourner: nb - $sql = "SELECT count(distinct(a.email)) nb"; + $sql = "SELECT count(distinct(a.email)) as nb"; $sql .= " FROM ".MAIN_DB_PREFIX."adherent as a"; $sql .= " WHERE a.email IS NOT NULL and statut=1"; @@ -86,7 +86,7 @@ class mailing_fraise extends MailingTargets function add_to_target($mailing_id) { // La requete doit retourner: email, fk_contact, name, firstname - $sql = "SELECT a.email email, null fk_contact, a.nom name, a.prenom 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"; diff --git a/htdocs/includes/modules/mailings/modules_mailings.php b/htdocs/includes/modules/mailings/modules_mailings.php index 4f83d1186bb..392a7ce5ce1 100644 --- a/htdocs/includes/modules/mailings/modules_mailings.php +++ b/htdocs/includes/modules/mailings/modules_mailings.php @@ -23,14 +23,16 @@ * */ -/** \file htdocs/includes/modules/mailings/modules_mailings.php +/** + \file htdocs/includes/modules/mailings/modules_mailings.php \ingroup mailing \brief Fichier contenant la classe mère des classes de liste de destinataires mailing \version $Revision$ */ -/** \class MailingTargets +/** + \class MailingTargets \brief Classe mère des classes de liste de destinataires mailing */ @@ -67,7 +69,7 @@ class MailingTargets /** * \brief Retourne nombre de destinataires * \param sql Requete sql de comptage - * \return int Nb de destinataires + * \return int Nb de destinataires si ok, < 0 si erreur */ function getNbOfRecipients($sql) { @@ -77,7 +79,9 @@ class MailingTargets $obj = $this->db->fetch_object($result); return $obj->nb; } - return 0; + else { + return -1; + } } /** @@ -101,6 +105,7 @@ class MailingTargets if (!$this->db->query($sql)) { dolibarr_syslog($this->db->error()); + $this->error=$this->db->error(); return -1; } } @@ -147,6 +152,7 @@ class MailingTargets else { dolibarr_syslog($this->db->error()); + $this->error=$this->db->error(); return -1; } diff --git a/htdocs/includes/modules/mailings/poire.modules.php b/htdocs/includes/modules/mailings/poire.modules.php index 9449d99c984..7cce67b4092 100644 --- a/htdocs/includes/modules/mailings/poire.modules.php +++ b/htdocs/includes/modules/mailings/poire.modules.php @@ -36,7 +36,8 @@ * */ -/** \file htdocs/includes/modules/mailings/poire.modules.php +/** + \file htdocs/includes/modules/mailings/poire.modules.php \ingroup mailing \brief Fichier de la classe permettant de générer la liste de destinataires Poire \version $Revision$ @@ -45,14 +46,15 @@ include_once DOL_DOCUMENT_ROOT.'/includes/modules/mailings/modules_mailings.php'; -/** \class mailing_poire +/** + \class mailing_poire \brief Classe permettant de générer la liste des destinataires Poire */ class mailing_poire extends MailingTargets { var $name='ContactCustomers'; // Identifiant du module mailing - var $desc='Tous les contacts de toutes les sociétés clientes'; // Libellé utilisé si aucune traduction pour MailingModuleDescXXX ou XXX=name trouvée + 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 $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'; @@ -69,19 +71,19 @@ class mailing_poire extends MailingTargets $this->db=$DB; // Liste des tableaux des stats espace mailing - $this->statssql[0]="SELECT '".$langs->trans("Customers")."' label, count(*) nb FROM ".MAIN_DB_PREFIX."societe WHERE client = 1"; - $this->statssql[1]="SELECT '".$langs->trans("NbOfCustomersContacts")."' label, count(distinct(c.email)) 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 IS NOT NULL"; + $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 != ''"; } function getNbOfRecipients() { // La requete doit retourner: nb - $sql = "SELECT count(distinct(c.email)) 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 = 1"; - $sql .= " AND c.email IS NOT NULL"; + $sql .= " AND c.email != ''"; return parent::getNbOfRecipients($sql); } @@ -89,14 +91,14 @@ class mailing_poire extends MailingTargets function add_to_target($mailing_id) { // La requete doit retourner: email, fk_contact, name, firstname - $sql = "SELECT c.email email, c.idp fk_contact, c.name name, c.firstname 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 = 1"; - $sql .= " AND c.email IS NOT NULL"; + $sql .= " AND c.email != ''"; $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 30e248ee673..4c936786c1a 100644 --- a/htdocs/includes/modules/mailings/pomme.modules.php +++ b/htdocs/includes/modules/mailings/pomme.modules.php @@ -35,7 +35,8 @@ * */ -/** \file htdocs/includes/modules/mailings/pomme.modules.php +/** + \file htdocs/includes/modules/mailings/pomme.modules.php \ingroup mailing \brief Fichier de la classe permettant de générer la liste de destinataires Pomme \version $Revision$ @@ -44,14 +45,15 @@ include_once DOL_DOCUMENT_ROOT.'/includes/modules/mailings/modules_mailings.php'; -/** \class mailing_pomme +/** + \class mailing_pomme \brief Classe permettant de générer la liste des destinataires Pomme */ class mailing_pomme extends MailingTargets { var $name='DolibarrUsers'; // Identifiant du module mailing - var $desc='Tous les utilisateurs de Dolibarr'; // Libellé utilisé si aucune traduction pour MailingModuleDescXXX ou XXX=name trouvée + var $desc='Tous les utilisateurs avec emails de Dolibarr'; // 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'; @@ -68,13 +70,13 @@ class mailing_pomme extends MailingTargets $this->db=$DB; // Liste des tableaux des stats espace mailing - $this->statssql[0]="SELECT '".$langs->trans("DolibarrUsers")."' label, count(*) nb FROM ".MAIN_DB_PREFIX."user"; + $this->statssql[0]="SELECT '".$langs->trans("DolibarrUsers")."' as label, count(*) as nb FROM ".MAIN_DB_PREFIX."user"; } function getNbOfRecipients() { // La requete doit retourner: nb - $sql = "SELECT count(distinct(u.email)) nb"; + $sql = "SELECT count(distinct(u.email)) as nb"; $sql .= " FROM ".MAIN_DB_PREFIX."user as u"; $sql .= " WHERE u.email IS NOT NULL"; @@ -84,7 +86,7 @@ class mailing_pomme extends MailingTargets function add_to_target($mailing_id) { // La requete doit retourner: email, fk_contact, name, firstname - $sql = "SELECT u.email email, null fk_contact, u.name name, u.firstname firstname"; + $sql = "SELECT 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 IS NOT NULL"; $sql .= " ORDER BY u.email";