From 3b00caf734fe7c10d70f71e775e952ea881dc5a1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 21 Feb 2010 21:21:12 +0000 Subject: [PATCH] New: task #10113 : Show list of emailing on clicking on "number of mass emailing received" --- ChangeLog | 1 + htdocs/comm/mailing/liste.php | 205 +++++++++++++++++++++------------- htdocs/contact.class.php | 6 +- htdocs/contact/fiche.php | 2 +- htdocs/langs/en_US/mails.lang | 2 + htdocs/langs/fr_FR/mails.lang | 2 + htdocs/user.class.php | 35 +++++- 7 files changed, 167 insertions(+), 86 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0fcbf856d1d..87eca13ebe4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,7 @@ English Dolibarr ChangeLog For users: - New: Add "payment due before" field in invoice exports - New: Add feature to resize or crop image files (for products photos) +- New: task #10113 : Show list of emailing on clicking on "number of mass emailing received" For developers: - More comments in code diff --git a/htdocs/comm/mailing/liste.php b/htdocs/comm/mailing/liste.php index 3321c994d78..5303ca2298d 100644 --- a/htdocs/comm/mailing/liste.php +++ b/htdocs/comm/mailing/liste.php @@ -31,8 +31,8 @@ if (!$user->rights->mailing->lire) accessforbidden(); // Securite acces client if ($user->societe_id > 0) { - $action = ''; - $socid = $user->societe_id; + $action = ''; + $socid = $user->societe_id; } $page=$_GET["page"]; @@ -49,6 +49,9 @@ if (! $sortfield) $sortfield="m.date_creat"; $sall=isset($_GET["sall"])?$_GET["sall"]:$_POST["sall"]; $sref=isset($_GET["sref"])?$_GET["sref"]:$_POST["sref"]; +$filteremail=$_REQUEST["filteremail"]?$_REQUEST["filteremail"]:''; + + /* * View @@ -58,85 +61,133 @@ llxHeader('',$langs->trans("Mailing"),'EN:Module_EMailing|FR:Module_Mailing|ES:M $html = new Form($db); -$sql = "SELECT m.rowid, m.titre, m.nbemail, m.statut, m.date_creat as datec"; -$sql.= " FROM ".MAIN_DB_PREFIX."mailing as m"; -$sql.= " WHERE m.entity = ".$conf->entity; -if ($sref) $sql.= " AND m.rowid = '".$sref."'"; -if ($sall) $sql.= " AND (m.titre like '%".$sall."%' OR m.sujet like '%".$sall."%' OR m.body like '%".$sall."%')"; -if (! $sortorder) $sortorder="ASC"; -if (! $sortfield) $sortfield="m.rowid"; -$sql .= " ORDER BY $sortfield $sortorder " . $db->plimit($conf->liste_limit +1, $offset); - -$result = $db->query($sql); -if ($result) +if ($filteremail) { - $num = $db->num_rows($result); - - print_barre_liste($langs->trans("ListOfEMailings"), $page, "liste.php","",$sortfield,$sortorder,"",$num); - - $i = 0; - - $addu = "&sall=".$sall; - print ''; - print ''; - print_liste_field_titre($langs->trans("Ref"),"liste.php","m.rowid",$addu,"","",$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Title"),"liste.php","m.titre",$addu,"","",$sortfield,$sortorder); - print_liste_field_titre($langs->trans("DateCreation"),"liste.php","m.date_creat",$addu,"",'align="center"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("NbOfEMails"),"liste.php","m.nbemail",$addu,"",'align="center"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Status"),"liste.php","m.statut",$addu,"",'align="right"',$sortfield,$sortorder); - print "\n"; - - print ''; - print ''; - print ''; - print ''; - print ''; - print '"; - print "\n"; - print ''; - - $var=True; - - $email=new Mailing($db); - - while ($i < min($num,$conf->liste_limit)) - { - $obj = $db->fetch_object($result); - - $var=!$var; - - print ""; - print ''; - print ''; - print ''; - print ''; - print ''; - print "\n"; - $i++; - } - print "
'; - print ''; - print ''; - print ''; - print '  '; - print "
'; - print img_object($langs->trans("ShowEMail"),"email").' '.stripslashes($obj->rowid).''.$obj->titre.''.dol_print_date($obj->datec,'day').''; - $nbemail = $obj->nbemail; - if (!empty($conf->global->MAILING_LIMIT_SENDBYWEB) && $conf->global->MAILING_LIMIT_SENDBYWEB < $nbemail) - { - $text=$langs->trans('LimitSendingEmailing',$conf->global->MAILING_LIMIT_SENDBYWEB); - print $html->textwithpicto($nbemail,$text,1,'warning'); - } - else - { - print $nbemail; - } - print ''.$email->LibStatut($obj->statut,5).'
"; - $db->free($result); + $sql = "SELECT m.rowid, m.titre, m.nbemail, m.statut, m.date_creat as datec, m.date_envoi as date_envoi,"; + $sql.= " mc.statut as sendstatut"; + $sql.= " FROM ".MAIN_DB_PREFIX."mailing as m, ".MAIN_DB_PREFIX."mailing_cibles as mc"; + $sql.= " WHERE m.rowid = mc.fk_mailing AND m.entity = ".$conf->entity; + $sql.= " AND mc.email = '".addslashes($filteremail)."'"; + if ($sref) $sql.= " AND m.rowid = '".$sref."'"; + if ($sall) $sql.= " AND (m.titre like '%".$sall."%' OR m.sujet like '%".$sall."%' OR m.body like '%".$sall."%')"; + if (! $sortorder) $sortorder="ASC"; + if (! $sortfield) $sortfield="m.rowid"; + $sql .= " ORDER BY $sortfield $sortorder " . $db->plimit($conf->liste_limit +1, $offset); } else { - dol_print_error($db); + $sql = "SELECT m.rowid, m.titre, m.nbemail, m.statut, m.date_creat as datec, m.date_envoi as date_envoi"; + $sql.= " FROM ".MAIN_DB_PREFIX."mailing as m"; + $sql.= " WHERE m.entity = ".$conf->entity; + if ($sref) $sql.= " AND m.rowid = '".$sref."'"; + if ($sall) $sql.= " AND (m.titre like '%".$sall."%' OR m.sujet like '%".$sall."%' OR m.body like '%".$sall."%')"; + if (! $sortorder) $sortorder="ASC"; + if (! $sortfield) $sortfield="m.rowid"; + $sql .= " ORDER BY $sortfield $sortorder " . $db->plimit($conf->liste_limit +1, $offset); +} + +dol_syslog("sql=".$sql); +//print $sql; +$result = $db->query($sql); +if ($result) +{ + $num = $db->num_rows($result); + + $title=$langs->trans("ListOfEMailings"); + if ($filteremail) $title.=' ('.$langs->trans("SentTo",$filteremail).')'; + print_barre_liste($title, $page, "liste.php","",$sortfield,$sortorder,"",$num); + + $i = 0; + + $param = "&sall=".$sall; + if ($filteremail) $param.='&filteremail='.urlencode($filteremail); + + print ''; + print ''; + print_liste_field_titre($langs->trans("Ref"),"liste.php","m.rowid",$param,"","",$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Title"),"liste.php","m.titre",$param,"","",$sortfield,$sortorder); + print_liste_field_titre($langs->trans("DateCreation"),"liste.php","m.date_creat",$param,"",'align="center"',$sortfield,$sortorder); + if (! $filteremail) print_liste_field_titre($langs->trans("NbOfEMails"),"liste.php","m.nbemail",$param,"",'align="center"',$sortfield,$sortorder); + if (! $filteremail) print_liste_field_titre($langs->trans("DateLastSend"),"liste.php","m.date_envoi",$param,"",'align="center"',$sortfield,$sortorder); + else print_liste_field_titre($langs->trans("DateSending"),"liste.php","mc.date_envoi",$param,"",'align="center"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Status"),"liste.php",($filteremail?"mc.statut":"m.statut"),$param,"",'align="right"',$sortfield,$sortorder); + print "\n"; + + print ''; + print ''; + print ''; + // Title + print ''; + print ''; + if (! $filteremail) print ''; + print ''; + print '"; + print "\n"; + print ''; + + $var=True; + + $email=new Mailing($db); + + while ($i < min($num,$conf->liste_limit)) + { + $obj = $db->fetch_object($result); + + $var=!$var; + + print ""; + print ''; + print ''; + // Date creation + print ''; + // Nb of email + if (! $filteremail) + { + print ''; + } + // Last send + print ''; + print ''; + // Status + print ''; + print "\n"; + $i++; + } + print "
'; + print ''; + print ''; + print ''; + print '   '; + print "
'; + print img_object($langs->trans("ShowEMail"),"email").' '.stripslashes($obj->rowid).''.$obj->titre.''; + print dol_print_date($db->jdate($obj->datec),'day'); + print ''; + $nbemail = $obj->nbemail; + if (!empty($conf->global->MAILING_LIMIT_SENDBYWEB) && $conf->global->MAILING_LIMIT_SENDBYWEB < $nbemail) + { + $text=$langs->trans('LimitSendingEmailing',$conf->global->MAILING_LIMIT_SENDBYWEB); + print $html->textwithpicto($nbemail,$text,1,'warning'); + } + else + { + print $nbemail; + } + print ''.dol_print_date($db->jdate($obj->date_envoi),'day').''; + if ($filteremail) + { + if ($obj->sendstatut==-1) print $langs->trans("MailingStatusError").' '.img_error(); + if ($obj->sendstatut==1) print $langs->trans("MailingStatusSent").' '.img_picto($langs->trans("MailingStatusSent"),'statut6'); + } + else + { + print $email->LibStatut($obj->statut,5); + } + print '
"; + $db->free($result); +} +else +{ + dol_print_error($db); } $db->close(); diff --git a/htdocs/contact.class.php b/htdocs/contact.class.php index 00609254238..19697c6bf37 100644 --- a/htdocs/contact.class.php +++ b/htdocs/contact.class.php @@ -695,9 +695,9 @@ class Contact extends CommonObject } } - /* - * \brief Renvoi nombre d'emailings recu par le contact avec son email - * \return int Nombre d'emailings + /** + * \brief Return number of mass Emailing received by this contacts with its email + * \return int Number of EMailings */ function getNbOfEMailings() { diff --git a/htdocs/contact/fiche.php b/htdocs/contact/fiche.php index 9d003b50775..c154fc30c30 100644 --- a/htdocs/contact/fiche.php +++ b/htdocs/contact/fiche.php @@ -564,7 +564,7 @@ if ($_GET["id"] && $_GET["action"] != 'edit') { $langs->load("mails"); print ''.$langs->trans("NbOfEMailingsReceived").''; - print ''.$contact->getNbOfEMailings().''; + print ''.$contact->getNbOfEMailings().''; } else { diff --git a/htdocs/langs/en_US/mails.lang b/htdocs/langs/en_US/mails.lang index 57124e15868..d4f9b2dfbc7 100644 --- a/htdocs/langs/en_US/mails.lang +++ b/htdocs/langs/en_US/mails.lang @@ -67,6 +67,8 @@ ConfirmCloneEMailing=Are you sure you want to clone this emailing ? CloneContent=Clone message CloneReceivers=Cloner recipients DateLastSend=Date of last sending +DateSending=Date sending +SentTo=Sent to %s # Libelle des modules de liste de destinataires mailing MailingModuleDescContactCompanies=Contacts of all third parties (customer, prospect, supplier, ...) diff --git a/htdocs/langs/fr_FR/mails.lang b/htdocs/langs/fr_FR/mails.lang index d3d755f5bab..d4ac38032f2 100644 --- a/htdocs/langs/fr_FR/mails.lang +++ b/htdocs/langs/fr_FR/mails.lang @@ -67,6 +67,8 @@ ConfirmCloneEMailing=Etes-vous sur de vouloir cloner cet emailing ? CloneContent=Cloner message CloneReceivers=Cloner destinataires DateLastSend=Date du dernier envoi +DateSending=Date envoi +SentTo=Envoyés à %s # Libelle des modules de liste de destinataires mailing MailingModuleDescContactCompanies=Contacts des tiers (prospects, clients, fournisseurs...) diff --git a/htdocs/user.class.php b/htdocs/user.class.php index d36545c54d5..bedb2e89cc1 100644 --- a/htdocs/user.class.php +++ b/htdocs/user.class.php @@ -1,7 +1,7 @@ * Copyright (c) 2002-2003 Jean-Louis Bergamo - * Copyright (c) 2004-2008 Laurent Destailleur + * Copyright (c) 2004-2010 Laurent Destailleur * Copyright (C) 2004 Sebastien Di Cintio * Copyright (C) 2004 Benoit Mortier * Copyright (C) 2005-2009 Regis Houssin @@ -1369,8 +1369,8 @@ class User extends CommonObject } /** - * \brief Renvoie la derniere erreur fonctionnelle de manipulation de l'objet - * \return string chaine erreur + * \brief Renvoie la derniere erreur fonctionnelle de manipulation de l'objet + * \return string chaine erreur */ function error() { @@ -1798,6 +1798,33 @@ class User extends CommonObject } } + + /** + * \brief Return number of mass Emailing received by this contacts with its email + * \return int Number of EMailings + */ + function getNbOfEMailings() + { + $sql = "SELECT count(mc.email) as nb"; + $sql.= " FROM ".MAIN_DB_PREFIX."mailing_cibles as mc"; + $sql.= " WHERE mc.email = '".addslashes($this->email)."'"; + $sql.= " AND mc.statut=1"; // -1 erreur, 0 non envoye, 1 envoye avec succes + $resql=$this->db->query($sql); + if ($resql) + { + $obj = $this->db->fetch_object($resql); + $nb=$obj->nb; + + $this->db->free($resql); + return $nb; + } + else + { + $this->error=$this->db->error(); + return -1; + } + } + } @@ -1848,6 +1875,4 @@ function creer_pass_aleatoire_2($sel = "") return $pass; } - - ?>