mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2026-02-08 00:52:01 +01:00
New: Gros avancements sur l'outil de mailing. Il est possible maintenant de crer un mailing, le supprimer, editer, valider et de choisir les destinataires parmi des listes prdfinis dans des modules.
Qual: Les modules poire et cerise de slection de destinataire ont t revue pour respoecter la norme objet.
This commit is contained in:
@@ -53,6 +53,19 @@ if ($_GET["action"] == 'add')
|
||||
Header("Location: cibles.php?id=".$_GET["rowid"]);
|
||||
}
|
||||
|
||||
if ($_GET["action"] == 'clear')
|
||||
{
|
||||
// Chargement de la classe
|
||||
$file = $dir."/modules_mailings.php";
|
||||
$classname = "MailingTargets";
|
||||
require_once($file);
|
||||
|
||||
$obj = new $classname($db);
|
||||
$obj->clear_target($_GET["rowid"]);
|
||||
|
||||
Header("Location: cibles.php?id=".$_GET["rowid"]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
@@ -90,15 +103,22 @@ if ($mil->fetch($_GET["id"]) == 0)
|
||||
print '<tr><td width="25%">'.$langs->trans("MailTitle").'</td><td colspan="3">'.$mil->titre.'</td></tr>';
|
||||
print '<tr><td width="25%">'.$langs->trans("MailFrom").'</td><td colspan="3">'.htmlentities($mil->email_from).'</td></tr>';
|
||||
print '<tr><td width="25%">'.$langs->trans("TotalNbOfDistinctRecipients").'</td><td colspan="3">'.($mil->nbemail?$mil->nbemail:'<font class="error">'.$langs->trans("NoTargetYet").'</font>').'</td></tr>';
|
||||
print '<tr><td width="25%">'.$langs->trans("Status").'</td><td colspan="3">'.$mil->statuts[$mil->statut].'</td></tr>';
|
||||
print '</table><br>';
|
||||
|
||||
// Ajout d'une liste de s<>lection
|
||||
print "</div>";
|
||||
|
||||
|
||||
// Affiche les listes de s<>lection
|
||||
print '<table class="noborder" width=\"100%\">';
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td>'.$langs->trans("RecipientSelectionModules").'</td>';
|
||||
//print '<td>'.$langs->trans("Name").'</td>';
|
||||
print '<td align="center">'.$langs->trans("NbOfRecipients").'</td>';
|
||||
print '<td width="80"> </td>';
|
||||
print '<td align="center" width="120">';
|
||||
if ($mil->statut == 0) {
|
||||
print $langs->trans("Actions");
|
||||
}
|
||||
print '</td>';
|
||||
print "</tr>\n";
|
||||
|
||||
clearstatcache();
|
||||
@@ -110,8 +130,8 @@ if ($mil->fetch($_GET["id"]) == 0)
|
||||
{
|
||||
if (substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS')
|
||||
{
|
||||
$var = !$var;
|
||||
if (eregi("(.*)\.(.*)\.(.*)",$file,$reg)) {
|
||||
$var = !$var;
|
||||
$modulename=$reg[1];
|
||||
|
||||
// Chargement de la classe
|
||||
@@ -132,18 +152,32 @@ if ($mil->fetch($_GET["id"]) == 0)
|
||||
print "</td>";
|
||||
*/
|
||||
print '<td align="center">'.$obj->getNbOfRecipients().'</td>';
|
||||
print '<td><a href="cibles.php?action=add&rowid='.$mil->id.'&module='.$modulename.'">'.img_edit_add($langs->trans("AddRecipients")).'</a></td>';
|
||||
|
||||
print '<td align="center">';
|
||||
if ($mil->statut == 0) {
|
||||
print '<form action="cibles.php?action=add&rowid='.$mil->id.'&module='.$modulename.'" method="POST"><input type="submit" value="'.$langs->trans("Add").'"></form>';
|
||||
}
|
||||
else {
|
||||
//print $langs->trans("MailNoChangePossible");
|
||||
print " ";
|
||||
}
|
||||
print '</td>';
|
||||
}
|
||||
print "</tr>\n";
|
||||
}
|
||||
}
|
||||
closedir($handle);
|
||||
|
||||
if ($mil->statut == 0) {
|
||||
print '<tr>';
|
||||
print '<td> </td><td> </td><td align="center"><form action="cibles.php?action=clear&rowid='.$mil->id.'" method="POST"><input type="submit" value="'.$langs->trans("Clear").'"></form></td>';
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
print '</table><br>';
|
||||
|
||||
|
||||
print "</div>";
|
||||
|
||||
|
||||
|
||||
// Liste des destinataires <20>lectionn<6E>s
|
||||
$NBMAX=100;
|
||||
|
||||
$sql = "SELECT mc.nom, mc.prenom, mc.email";
|
||||
|
||||
@@ -44,60 +44,76 @@ llxHeader('','Mailing');
|
||||
*/
|
||||
|
||||
print_titre($langs->trans("MailingArea"));
|
||||
print '<br>';
|
||||
|
||||
print '<table border="0" width="100%">';
|
||||
print '<table class="noborder" width="100%">';
|
||||
|
||||
print '<tr><td valign="top" width="30%">';
|
||||
|
||||
/*
|
||||
* Derni<6E>res actions commerciales effectu<74>es
|
||||
*
|
||||
*/
|
||||
// Affiche stats de tous les modules de destinataires mailings
|
||||
print '<table class="noborder" width="100%">';
|
||||
print '<tr class="liste_titre"><td colspan="3">'.$langs->trans("TargetsStatistics").'</td></tr>';
|
||||
|
||||
$sql = "SELECT count(*), client";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."societe";
|
||||
$sql .= " WHERE client in (1,2)";
|
||||
$sql .= " GROUP BY client";
|
||||
$dir=DOL_DOCUMENT_ROOT."/includes/modules/mailings";
|
||||
$handle=opendir($dir);
|
||||
|
||||
|
||||
|
||||
if ( $db->query($sql) )
|
||||
$var=True;
|
||||
while (($file = readdir($handle))!==false)
|
||||
{
|
||||
$num = $db->num_rows();
|
||||
|
||||
print '<table class="noborder" width="100%">';
|
||||
print '<tr class="liste_titre"><td colspan="4">'.$langs->trans("Statistics").'</td></tr>';
|
||||
$i = 0;
|
||||
|
||||
while ($i < $num )
|
||||
if (substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS')
|
||||
{
|
||||
$row = $db->fetch_row();
|
||||
|
||||
$st[$row[1]] = $row[0];
|
||||
if (eregi("(.*)\.(.*)\.(.*)",$file,$reg)) {
|
||||
$var = !$var;
|
||||
|
||||
$i++;
|
||||
$modulename=$reg[1];
|
||||
|
||||
// Chargement de la classe
|
||||
$file = $dir."/".$modulename.".modules.php";
|
||||
$classname = "mailing_".$modulename;
|
||||
require_once($file);
|
||||
$obj = new $classname($db);
|
||||
|
||||
foreach ($obj->statssql as $sql)
|
||||
{
|
||||
print '<tr '.$bc[$var].'>';
|
||||
|
||||
$result=$db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
$num = $db->num_rows($result);
|
||||
|
||||
$i = 0;
|
||||
|
||||
while ($i < $num )
|
||||
{
|
||||
$obj = $db->fetch_object($result);
|
||||
print '<td>'.$obj->label.'</td><td>'.$obj->nb.'<td>';
|
||||
$i++;
|
||||
}
|
||||
|
||||
$db->free();
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_print_error($db);
|
||||
}
|
||||
}
|
||||
|
||||
print '</tr>';
|
||||
}
|
||||
}
|
||||
|
||||
$var = true;
|
||||
print "<tr $bc[$var]>".'<td>'.$langs->trans("Customers").'</td><td align="center">'.($st[1]?$st[1]:"0")."</td></tr>";
|
||||
$var=!$var;
|
||||
print "<tr $bc[$var]>".'<td>'.$langs->trans("Prospects").'</td><td align="center">'.($st[2]?$st[2]:"0")."</td></tr>";
|
||||
|
||||
print "</table><br>";
|
||||
|
||||
$db->free();
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_print_error($db);
|
||||
}
|
||||
closedir($handle);
|
||||
|
||||
|
||||
|
||||
print "</table><br>";
|
||||
|
||||
print '</td><td valign="top" width="70%">';
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
*
|
||||
* Liste des derniers mailings
|
||||
*/
|
||||
|
||||
$sql = "SELECT m.rowid, m.titre, m.nbemail, m.statut";
|
||||
|
||||
@@ -258,7 +258,7 @@ class Mailing
|
||||
$this->db->query($sql);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
*
|
||||
* 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
|
||||
@@ -50,17 +51,29 @@ include_once DOL_DOCUMENT_ROOT.'/includes/modules/mailings/modules_mailings.php'
|
||||
|
||||
class mailing_cerise extends MailingTargets
|
||||
{
|
||||
var $name="ContactProspects";
|
||||
var $desc='Tous les contacts associ<63>s aux prospects';
|
||||
var $require_module=array("prospet");
|
||||
|
||||
var $name="ContactProspects"; // Identifiant du module mailing
|
||||
var $desc='Tous les contacts associ<63>s aux prospects'; // Libell<6C> utilis<69> si aucune traduction pour MailingModuleDescXXX ou XXX=name trouv<75>e
|
||||
var $require_module=array("commercial"); // Module mailing actif si modules require_module actifs
|
||||
|
||||
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")."' 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";
|
||||
}
|
||||
|
||||
function getNbOfRecipients()
|
||||
{
|
||||
// La requete doit retourner: nb
|
||||
$sql = "SELECT count(distinct(c.email)) nb";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."socpeople as c";
|
||||
$sql .= ", ".MAIN_DB_PREFIX."societe as s";
|
||||
@@ -68,94 +81,21 @@ class mailing_cerise extends MailingTargets
|
||||
$sql .= " AND s.client = 2";
|
||||
$sql .= " AND c.email IS NOT NULL";
|
||||
|
||||
if ( $this->db->query($sql) )
|
||||
{
|
||||
$obj = $this->db->fetch_object();
|
||||
return $obj->nb;
|
||||
}
|
||||
return 0;
|
||||
return parent::getNbOfRecipients($sql);
|
||||
}
|
||||
|
||||
function add_to_target($mailing_id)
|
||||
{
|
||||
$cibles = array();
|
||||
|
||||
$sql = "SELECT distinct(c.email), c.idp, c.name, c.firstname, s.nom ";
|
||||
// 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 .= " 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 ASC";
|
||||
|
||||
if ( $this->db->query($sql) )
|
||||
{
|
||||
$num = $this->db->num_rows();
|
||||
$i = 0;
|
||||
$j = 0;
|
||||
|
||||
dolibarr_syslog("mailing-prepare: mailing $num cibles trouv<75>es");
|
||||
|
||||
$olde = '';
|
||||
|
||||
while ($i < $num)
|
||||
{
|
||||
$row = $this->db->fetch_row();
|
||||
|
||||
if ($olde <> $row[0])
|
||||
{
|
||||
$cibles[$j] = $row;
|
||||
$olde = $row[0];
|
||||
$j++;
|
||||
}
|
||||
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_syslog($this->db->error());
|
||||
}
|
||||
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."mailing_cibles";
|
||||
$sql .= " WHERE fk_mailing = ".$mailing_id;
|
||||
|
||||
if (!$this->db->query($sql))
|
||||
{
|
||||
dolibarr_syslog($this->db->error());
|
||||
}
|
||||
|
||||
$num = sizeof($cibles);
|
||||
|
||||
for ($i = 0 ; $i < $num ; $i++)
|
||||
{
|
||||
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."mailing_cibles";
|
||||
$sql .= " (fk_mailing, fk_contact, nom, prenom, email)";
|
||||
$sql .= " VALUES (".$mailing_id.",";
|
||||
$sql .= $cibles[$i][1] .",";
|
||||
$sql .= "'".$cibles[$i][2] ."',";
|
||||
$sql .= "'".$cibles[$i][3] ."',";
|
||||
$sql .= "'".$cibles[$i][0] ."')";
|
||||
|
||||
if (!$this->db->query($sql))
|
||||
{
|
||||
dolibarr_syslog($this->db->error());
|
||||
}
|
||||
}
|
||||
|
||||
dolibarr_syslog("mailing-prepare: mailing $i cibles ajout<75>es");
|
||||
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."mailing";
|
||||
$sql .= " SET nbemail = ".$i." WHERE rowid = ".$mailing_id;
|
||||
|
||||
if (!$this->db->query($sql))
|
||||
{
|
||||
dolibarr_syslog($this->db->error());
|
||||
}
|
||||
|
||||
return 0;
|
||||
$sql .= " ORDER BY c.email";
|
||||
|
||||
return parent::add_to_target($mailing_id, $sql);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2003-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@@ -36,8 +36,14 @@
|
||||
|
||||
class MailingTargets
|
||||
{
|
||||
var $db='';
|
||||
var $error='';
|
||||
|
||||
function MailingTargets($DB)
|
||||
{
|
||||
$this->db=$DB;
|
||||
}
|
||||
|
||||
/** \brief Renvoi un exemple de num<75>rotation
|
||||
* \return string Retourne la traduction de la cl<63> MailingModuleDescXXX ou XXX nom du module, ou $this->desc si non trouv<75>
|
||||
*/
|
||||
@@ -57,6 +63,137 @@ class MailingTargets
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Retourne nombre de destinataires
|
||||
* \param sql Requete sql de comptage
|
||||
* \return int Nb de destinataires
|
||||
*/
|
||||
function getNbOfRecipients($sql)
|
||||
{
|
||||
$result=$this->db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
$obj = $this->db->fetch_object($result);
|
||||
return $obj->nb;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Met a jour nombre de destinataires
|
||||
* \param mailing_id Id du mailing concern<72>
|
||||
* \return int < 0 si erreur, nb destinataires si ok
|
||||
*/
|
||||
function update_nb($mailing_id)
|
||||
{
|
||||
// Mise a jour nombre de destinataire dans table des mailings
|
||||
$sql = "SELECT COUNT(*) nb FROM ".MAIN_DB_PREFIX."mailing_cibles";
|
||||
$sql .= " WHERE fk_mailing = ".$mailing_id;
|
||||
$result=$this->db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
$obj=$this->db->fetch_object($result);
|
||||
$nb=$obj->nb;
|
||||
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."mailing";
|
||||
$sql .= " SET nbemail = ".$nb." WHERE rowid = ".$mailing_id;
|
||||
if (!$this->db->query($sql))
|
||||
{
|
||||
dolibarr_syslog($this->db->error());
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
return -1;
|
||||
}
|
||||
return $nb;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Ajoute destinataires dans table des cibles
|
||||
* \param mailing_id Id du mailing concern<72>
|
||||
* \param sql Requete sql de selection des destinataires
|
||||
* \return int < 0 si erreur, nb ajout si ok
|
||||
*/
|
||||
function add_to_target($mailing_id, $sql)
|
||||
{
|
||||
$cibles = array();
|
||||
|
||||
// Stocke destinataires dans cibles
|
||||
$result=$this->db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
$num = $this->db->num_rows($result);
|
||||
$i = 0;
|
||||
$j = 0;
|
||||
|
||||
dolibarr_syslog("mailing-prepare: mailing $num cibles trouv<75>es");
|
||||
|
||||
$old = '';
|
||||
while ($i < $num)
|
||||
{
|
||||
$obj = $this->db->fetch_object($result);
|
||||
if ($old <> $obj->email)
|
||||
{
|
||||
$cibles[$j] = array($obj->email,$obj->fk_contact,$obj->name,$obj->firstname);
|
||||
$old = $obj->email;
|
||||
$j++;
|
||||
}
|
||||
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_syslog($this->db->error());
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Ins<6E>re destinataires de cibles dans table
|
||||
$num = sizeof($cibles);
|
||||
for ($i = 0 ; $i < $num ; $i++)
|
||||
{
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."mailing_cibles";
|
||||
$sql .= " (fk_mailing, ";
|
||||
if ($cibles[$i][1]) $sql .= "fk_contact, ";
|
||||
$sql .= "nom, prenom, email)";
|
||||
$sql .= " VALUES (".$mailing_id.",";
|
||||
if ($cibles[$i][1]) $sql .= $cibles[$i][1] .",";
|
||||
$sql .= "'".$cibles[$i][2] ."',";
|
||||
$sql .= "'".$cibles[$i][3] ."',";
|
||||
$sql .= "'".$cibles[$i][0] ."')";
|
||||
if (!$this->db->query($sql))
|
||||
{
|
||||
dolibarr_syslog($this->db->error());
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
dolibarr_syslog("mailing-prepare: mailing $num cibles ajout<75>es");
|
||||
|
||||
$this->update_nb($mailing_id);
|
||||
|
||||
return $num;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Supprime tous les destinataires de la table des cibles
|
||||
* \param mailing_id Id du mailing concern<72>
|
||||
*/
|
||||
function clear_target($mailing_id)
|
||||
{
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."mailing_cibles";
|
||||
$sql .= " WHERE fk_mailing = ".$mailing_id;
|
||||
|
||||
if (! $this->db->query($sql))
|
||||
{
|
||||
dolibarr_syslog($this->db->error());
|
||||
}
|
||||
|
||||
$this->update_nb($mailing_id);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -50,19 +50,29 @@ include_once DOL_DOCUMENT_ROOT.'/includes/modules/mailings/modules_mailings.php'
|
||||
|
||||
class mailing_poire extends MailingTargets
|
||||
{
|
||||
var $name='ContactCustomers';
|
||||
var $desc='Tous les contacts associ<63>s aux clients';
|
||||
var $require_module=array("customer");
|
||||
var $name='ContactCustomers'; // Identifiant du module mailing
|
||||
var $desc='Tous les contacts associ<63>s aux clients'; // Libell<6C> utilis<69> si aucune traduction pour MailingModuleDescXXX ou XXX=name trouv<75>e
|
||||
var $require_module=array("commercial"); // Module mailing actif si modules require_module actifs
|
||||
|
||||
var $db;
|
||||
var $statssql=array();
|
||||
|
||||
|
||||
function mailing_poire($DB)
|
||||
{
|
||||
global $langs;
|
||||
$langs->load("commercial");
|
||||
|
||||
$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";
|
||||
}
|
||||
|
||||
function getNbOfRecipients()
|
||||
{
|
||||
// La requete doit retourner: nb
|
||||
$sql = "SELECT count(distinct(c.email)) nb";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."socpeople as c";
|
||||
$sql .= ", ".MAIN_DB_PREFIX."societe as s";
|
||||
@@ -70,94 +80,21 @@ class mailing_poire extends MailingTargets
|
||||
$sql .= " AND s.client = 1";
|
||||
$sql .= " AND c.email IS NOT NULL";
|
||||
|
||||
if ( $this->db->query($sql) )
|
||||
{
|
||||
$obj = $this->db->fetch_object();
|
||||
return $obj->nb;
|
||||
}
|
||||
return 0;
|
||||
return parent::getNbOfRecipients($sql);
|
||||
}
|
||||
|
||||
function add_to_target($mailing_id)
|
||||
{
|
||||
$cibles = array();
|
||||
|
||||
$sql = "SELECT distinct(c.email), c.idp, c.name, c.firstname, s.nom ";
|
||||
// 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 .= " 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 .= " ORDER BY c.email ASC";
|
||||
|
||||
if ( $this->db->query($sql) )
|
||||
{
|
||||
$num = $this->db->num_rows();
|
||||
$i = 0;
|
||||
$j = 0;
|
||||
|
||||
dolibarr_syslog("mailing-prepare: mailing $num cibles trouv<75>es");
|
||||
|
||||
$olde = '';
|
||||
|
||||
while ($i < $num)
|
||||
{
|
||||
$row = $this->db->fetch_row();
|
||||
|
||||
if ($olde <> $row[0])
|
||||
{
|
||||
$cibles[$j] = $row;
|
||||
$olde = $row[0];
|
||||
$j++;
|
||||
}
|
||||
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_syslog($this->db->error());
|
||||
}
|
||||
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."mailing_cibles";
|
||||
$sql .= " WHERE fk_mailing = ".$mailing_id;
|
||||
|
||||
if (!$this->db->query($sql))
|
||||
{
|
||||
dolibarr_syslog($this->db->error());
|
||||
}
|
||||
|
||||
$num = sizeof($cibles);
|
||||
|
||||
for ($i = 0 ; $i < $num ; $i++)
|
||||
{
|
||||
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."mailing_cibles";
|
||||
$sql .= " (fk_mailing, fk_contact, nom, prenom, email)";
|
||||
$sql .= " VALUES (".$mailing_id.",";
|
||||
$sql .= $cibles[$i][1] .",";
|
||||
$sql .= "'".$cibles[$i][2] ."',";
|
||||
$sql .= "'".$cibles[$i][3] ."',";
|
||||
$sql .= "'".$cibles[$i][0] ."')";
|
||||
|
||||
if (!$this->db->query($sql))
|
||||
{
|
||||
dolibarr_syslog($this->db->error());
|
||||
}
|
||||
}
|
||||
|
||||
dolibarr_syslog("mailing-prepare: mailing $i cibles ajout<75>es");
|
||||
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."mailing";
|
||||
$sql .= " SET nbemail = ".$i." WHERE rowid = ".$mailing_id;
|
||||
|
||||
if (!$this->db->query($sql))
|
||||
{
|
||||
dolibarr_syslog($this->db->error());
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
$sql .= " ORDER BY c.email";
|
||||
|
||||
return parent::add_to_target($mailing_id, $sql);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user