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 '';
-
- $var=True;
-
- $email=new Mailing($db);
-
- while ($i < min($num,$conf->liste_limit))
- {
- $obj = $db->fetch_object($result);
-
- $var=!$var;
-
- print "";
- print '| ';
- print img_object($langs->trans("ShowEMail"),"email").' '.stripslashes($obj->rowid).' | ';
- print ''.$obj->titre.' | ';
- print ''.dol_print_date($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 ' | ';
- print ''.$email->LibStatut($obj->statut,5).' | ';
- print "
\n";
- $i++;
- }
- print "
";
- $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 '';
+
+ $var=True;
+
+ $email=new Mailing($db);
+
+ while ($i < min($num,$conf->liste_limit))
+ {
+ $obj = $db->fetch_object($result);
+
+ $var=!$var;
+
+ print "";
+ print '| ';
+ print img_object($langs->trans("ShowEMail"),"email").' '.stripslashes($obj->rowid).' | ';
+ print ''.$obj->titre.' | ';
+ // Date creation
+ print '';
+ print dol_print_date($db->jdate($obj->datec),'day');
+ print ' | ';
+ // Nb of email
+ if (! $filteremail)
+ {
+ 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 ' | ';
+ }
+ // Last send
+ print ''.dol_print_date($db->jdate($obj->date_envoi),'day').' | ';
+ print '';
+ // Status
+ print '';
+ 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 ' | ';
+ print "
\n";
+ $i++;
+ }
+ 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;
}
-
-
?>