* Copyright (C) 2005-2008 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. */ /** \file htdocs/comm/mailing/cibles.php \ingroup mailing \brief Page des cibles de mailing \version $Id$ */ require("./pre.inc.php"); $langs->load("mails"); if (! $user->rights->mailing->lire || $user->societe_id > 0) accessforbidden(); $dirmod=DOL_DOCUMENT_ROOT."/includes/modules/mailings"; if (defined('DOL_DOCUMENT_ROOT_BIS')) $dirmod2=DOL_DOCUMENT_ROOT_BIS."/includes/modules/mailings"; $mesg = ''; $page=$_GET["page"]; $sortorder=$_GET["sortorder"]; $sortfield=$_GET["sortfield"]; if ($page == -1) { $page = 0 ; } $offset = $conf->liste_limit * $_GET["page"] ; $pageprev = $_GET["page"] - 1; $pagenext = $_GET["page"] + 1; if (! $sortorder) $sortorder="ASC"; if (! $sortfield) $sortfield="nom"; $search_nom=isset($_GET["search_nom"])?$_GET["search_nom"]:$_POST["search_nom"]; $search_prenom=isset($_GET["search_prenom"])?$_GET["search_prenom"]:$_POST["search_prenom"]; $search_email=isset($_GET["search_email"])?$_GET["search_email"]:$_POST["search_email"]; /* * Actions */ if ($_GET["action"] == 'add') { $modulename=$_GET["module"]; // Chargement de la classe $file = $dirmod."/".$modulename.".modules.php"; $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"],$filtersarray); if ($result > 0) { Header("Location: cibles.php?id=".$_GET["rowid"]); exit; } if ($result == 0) { $mesg='
'.$langs->trans("WarningNoEMailsAdded").'
'; } if ($result < 0) { $mesg='
'.$obj->error.'
'; } $_REQUEST["id"]=$_GET["rowid"]; } if ($_GET["action"] == 'clear') { // Chargement de la classe $file = $dirmod."/modules_mailings.php"; $classname = "MailingTargets"; require_once($file); $obj = new $classname($db); $obj->clear_target($_GET["rowid"]); Header("Location: cibles.php?id=".$_GET["rowid"]); exit; } if ($_GET["action"] == 'delete') { // Ici, rowid indique le destinataire et id le mailing $sql="DELETE FROM ".MAIN_DB_PREFIX."mailing_cibles where rowid=".$_GET["rowid"]; $resql=$db->query($sql); if ($resql) { $file = $dirmod."/modules_mailings.php"; $classname = "MailingTargets"; require_once($file); $obj = new $classname($db); $obj->update_nb($_REQUEST["id"]); } else { dolibarr_print_error($db); } } if ($_POST["button_removefilter"]) { $search_nom=''; $search_prenom=''; $search_email=''; } /* * Liste des destinataires */ llxHeader("","",$langs->trans("MailCard")); $mil = new Mailing($db); $html = new Form($db); if ($mil->fetch($_REQUEST["id"]) >= 0) { $h=0; $head[$h][0] = DOL_URL_ROOT."/comm/mailing/fiche.php?id=".$mil->id; $head[$h][1] = $langs->trans("MailCard"); $h++; $head[$h][0] = DOL_URL_ROOT."/comm/mailing/cibles.php?id=".$mil->id; $head[$h][1] = $langs->trans("MailRecipients"); $hselected = $h; $h++; /* $head[$h][0] = DOL_URL_ROOT."/comm/mailing/info.php?id=".$mil->id; $head[$h][1] = $langs->trans("MailHistory"); $h++; */ dolibarr_fiche_head($head, $hselected, $langs->trans("Mailing").": ".substr($mil->titre,0,20)); print ''; print ''; print ''; print ''; print ''; print ''; print '
'.$langs->trans("Ref").''.$mil->id.'
'.$langs->trans("MailTitle").''.$mil->titre.'
'.$langs->trans("MailFrom").''.htmlentities($mil->email_from).'
'.$langs->trans("Status").''.$mil->getLibStatut(4).'
'.$langs->trans("TotalNbOfDistinctRecipients").''.($mil->nbemail?$mil->nbemail:'0').'
'; print ""; if ($mesg) print "$mesg
\n"; $var=!$var; // Affiche les listes de sélection if ($mil->statut == 0) { print_titre($langs->trans("ToAddRecipientsChooseHere")); print ''; print ''; print ''; print ''; print ''; print ''; print "\n"; clearstatcache(); $listdir=array(); $listdir[]=$dirmod; if (! empty($dirmod2)) $listdir[]=$dirmod2; $var=true; foreach ($listdir as $dir) { $handle=opendir($dir); while (($file = readdir($handle))!==false) { if (substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS') { if (eregi("(.*)\.modules\.php$",$file,$reg)) { $modulename=$reg[1]; if ($modulename == 'example') continue; // Chargement de la classe $file = $dir."/".$modulename.".modules.php"; $classname = "mailing_".$modulename; require_once($file); $obj = new $classname($db); $qualified=1; foreach ($obj->require_module as $key) { if (! $conf->$key->enabled || (! $user->admin && $obj->require_admin)) { $qualified=0; //print "Les prérequis d'activation du module mailing ne sont pas respectés. Il ne sera pas actif"; break; } } // Si le module mailing est qualifié if ($qualified) { $var = !$var; print ''; if ($mil->statut == 0) print ''; print ''; /* print '"; */ $nbofrecipient=$obj->getNbOfRecipients(); print ''; print ''; print ''; if ($mil->statut == 0) print ''; print "\n"; } } } } closedir($handle); } print '
'.$langs->trans("RecipientSelectionModules"); if ($user->admin) print ' '.info_admin($langs->trans("YouCanAddYourOwnPredefindedListHere"),1); print ''.$langs->trans("NbOfUniqueEMails").''.$langs->trans("Filter").' 
'; if (! $obj->picto) $obj->picto='generic'; print img_object('',$obj->picto).' '.$obj->getDesc(); print ''; print $modulename; print "'; if ($nbofrecipient >= 0) { print $nbofrecipient; } else { print $langs->trans("Error").' '.img_error($obj->error); } print ''; $filter=$obj->formFilter(); if ($filter) print $filter; else print $langs->trans("None"); print ''; if ($mil->statut == 0) { print ''; } else { //print $langs->trans("MailNoChangePossible"); print " "; } print '
'; print '
'; print '
'; print_titre($langs->trans("ToClearAllRecipientsClickHere")); print ''; print ''; print ''; print ''; print '
'; print '
'; print '
'; } // Liste des destinataires sélectionnés print "\n\n"; print '
'; print ''; print ''; print ''; $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 ($search_nom) $sql.= " AND mc.nom like '%".addslashes($search_nom)."%'"; if ($search_prenom) $sql.= " AND mc.prenom like '%".addslashes($search_prenom)."%'"; if ($search_email) $sql.= " AND mc.email like '%".addslashes($search_email)."%'"; if ($sortfield) { $sql .= " ORDER BY $sortfield $sortorder"; } $sql .= $db->plimit($conf->liste_limit+1, $offset); $resql=$db->query($sql); if ($resql) { $num = $db->num_rows($resql); $addu = "&id=".$mil->id; if ($search_nom) $addu.= "&search_nom=".urlencode($search_nom); if ($search_prenom) $addu.= "&search_prenom=".urlencode($search_prenom); if ($search_email) $addu.= "&search_email=".urlencode($search_email); print_barre_liste($langs->trans("MailSelectedRecipients"),$page,$_SERVER["PHP_SELF"],$addu,$sortfield,$sortorder,"",$num,$mil->nbemail); if ($page) $addu.= "&page=".$page; print ''; print ''; print_liste_field_titre($langs->trans("Lastname"),$_SERVER["PHP_SELF"],"mc.nom",$addu,"","",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Firstname"),$_SERVER["PHP_SELF"],"mc.prenom",$addu,"","",$sortfield,$sortorder); print_liste_field_titre($langs->trans("EMail"),$_SERVER["PHP_SELF"],"mc.email",$addu,"","",$sortfield,$sortorder); print ''; // Date if ($mil->statut < 2) { print ''; } else { print_liste_field_titre($langs->trans("Date"),$_SERVER["PHP_SELF"],"mc.date_envoi",$addu,'','align="center"',$sortfield,$sortorder); } // Statut print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"mc.statut",$addu,'','align="right"',$sortfield,$sortorder); print ''; // Ligne des champs de filtres print ''; print ''; print ''; print ''; print ''; print ''; $var = true; $i = 0; if ($num) { while ($i < min($num,$conf->liste_limit)) { $obj = $db->fetch_object($resql); $var=!$var; print ""; print ''; print ''; print ''; print ''; // Statut pour l'email destinataire (Attentioon != statut du mailing) if ($obj->statut == 0) { print ''; print ''; } else { print ''; print ''; } print ''; $i++; } } else { print ''; } print "
  
'; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print '  '; print '
'.$obj->nom.''.$obj->prenom.''.$obj->email.''.$obj->url.' '.$langs->trans("MailingStatusNotSent").' '.img_delete($langs->trans("RemoveRecipient")).''.$obj->date_envoi.''; if ($obj->statut==-1) print $langs->trans("MailingStatusError").' '.img_error(); if ($obj->statut==1) print $langs->trans("MailingStatusSent").' '.img_picto($langs->trans("MailingStatusSent"),'statut6'); print '
'.$langs->trans("NoTargetYet").'

"; $db->free($resql); } else { dolibarr_print_error($db); } print '
'; print "\n\n"; } $db->close(); llxFooter('$Date$ - $Revision$'); ?>