diff --git a/ChangeLog b/ChangeLog index a319b574780..533a0ac8134 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,9 @@ English Dolibarr ChangeLog For users: - New: When sending supplier orders by mail, a text is predefined. - New: Upgrade process works with Postgresql. +- New: Task #10538: Add filter on expiration date of subscription for + foundation module email selector. +- Fix: Better Postgresql compatibility. For developer: - Qual: Renamed some fields into database to be more internationnal. @@ -20,7 +23,7 @@ For users: - New: Can reopen a refused/canceled supplier order. - New: Add Gant diagramm on project module. - New: Add a new mode for automatic stock increase: Can be increased - on dispatching of products from a supplier order receipt. + on dispatching of products from a supplier order receipt. - New: Can set a past delay to limit calendar export. - New: Can attach files on emailing campaigns. - New: Add statistics on trips and expenses module. diff --git a/htdocs/comm/mailing/cibles.php b/htdocs/comm/mailing/cibles.php index 9472cc32de5..30cb894d4be 100644 --- a/htdocs/comm/mailing/cibles.php +++ b/htdocs/comm/mailing/cibles.php @@ -83,9 +83,12 @@ if ($_GET["action"] == 'add') { require_once($file); + // We fill $filtersarray. Using this variable is now deprecated. + // Kept for backward compatibility. $filtersarray=array(); if (isset($_POST["filter"])) $filtersarray[0]=$_POST["filter"]; + // Add targets into database $obj = new $classname($db); $result=$obj->add_to_target($_GET["rowid"],$filtersarray); } diff --git a/htdocs/includes/modules/mailings/dolibarr_services_expired.modules.php b/htdocs/includes/modules/mailings/dolibarr_services_expired.modules.php index 6cf2da256c3..6c1f45fbf14 100644 --- a/htdocs/includes/modules/mailings/dolibarr_services_expired.modules.php +++ b/htdocs/includes/modules/mailings/dolibarr_services_expired.modules.php @@ -196,10 +196,12 @@ class mailing_dolibarr_services_expired extends MailingTargets */ function formFilter() { + global $langs; $s=''; $s.=''; + $s.=''; $s.=''; $s.=''; $s.=''; $s.=''; $s.=''; + $s.='
'; + $s.=$langs->trans("DateEndSubscription").': '; + $s.=$langs->trans("After").' > '.$form->select_date(-1,'subscriptionafter',0,0,1,'fraise',1,0,1,0); + $s.='   '; + $s.=$langs->trans("Before").' < '.$form->select_date(-1,'subscriptionbefore',0,0,1,'fraise',1,0,1,0); + return $s; } @@ -120,16 +131,20 @@ class mailing_fraise extends MailingTargets /** * \brief Ajoute destinataires dans table des cibles - * \param mailing_id Id du mailing concern� - * \param filterarray Requete sql de selection des destinataires + * \param mailing_id Id du mailing concerne + * \param filterarray Param to filter sql request. Deprecated. Should use $_POST instead. * \return int < 0 si erreur, nb ajout si ok */ function add_to_target($mailing_id,$filtersarray=array()) { - global $langs; + global $langs,$_POST; $langs->load("members"); $cibles = array(); + $now=dol_now(); + + $dateendsubscriptionafter=dol_mktime($_POST['subscriptionafterhour'],$_POST['subscriptionaftermin'],$_POST['subscriptionaftersec'],$_POST['subscriptionaftermonth'],$_POST['subscriptionafterday'],$_POST['subscriptionafteryear']); + $dateendsubscriptionbefore=dol_mktime($_POST['subscriptionbeforehour'],$_POST['subscriptionbeforemin'],$_POST['subscriptionbeforesec'],$_POST['subscriptionbeforemonth'],$_POST['subscriptionbeforeday'],$_POST['subscriptionbeforeyear']); // La requete doit retourner: id, email, fk_contact, name, firstname $sql = "SELECT a.rowid as id, a.email as email, null as fk_contact, "; @@ -137,16 +152,17 @@ class mailing_fraise extends MailingTargets $sql.= " a.datefin"; // Other fields $sql.= " FROM ".MAIN_DB_PREFIX."adherent as a"; $sql.= " WHERE a.email IS NOT NULL"; - foreach($filtersarray as $key) - { - if ($key == '-1') $sql.= " AND a.statut=-1"; - if ($key == '1a') $sql.= " AND a.statut=1 AND datefin >= ".$this->db->idate(mktime()); - if ($key == '1b') $sql.= " AND a.statut=1 AND datefin < ".$this->db->idate(mktime()); - if ($key == '0') $sql.= " AND a.statut=0"; - } + if (isset($_POST["filter"]) && $_POST["filter"] == '-1') $sql.= " AND a.statut=-1"; + if (isset($_POST["filter"]) && $_POST["filter"] == '1a') $sql.= " AND a.statut=1 AND datefin >= '".$this->db->idate($now)."'"; + if (isset($_POST["filter"]) && $_POST["filter"] == '1b') $sql.= " AND a.statut=1 AND datefin < '".$this->db->idate($now)."'"; + if (isset($_POST["filter"]) && $_POST["filter"] == '0') $sql.= " AND a.statut=0"; + if ($dateendsubscriptionafter > 0) $sql.=" AND datefin > '".$this->db->idate($dateendsubscriptionafter)."'"; + if ($dateendsubscriptionbefore > 0) $sql.=" AND datefin < '".$this->db->idate($dateendsubscriptionbefore)."'"; $sql.= " ORDER BY a.email"; + //print $sql; - // Stocke destinataires dans cibles + // Add targets into table + dol_syslog("fraise.modules.php sql=".$sql); $result=$this->db->query($sql); if ($result) { diff --git a/htdocs/includes/modules/mailings/framboise.modules.php b/htdocs/includes/modules/mailings/framboise.modules.php index d237917b07d..55b89780136 100644 --- a/htdocs/includes/modules/mailings/framboise.modules.php +++ b/htdocs/includes/modules/mailings/framboise.modules.php @@ -162,7 +162,6 @@ class mailing_framboise extends MailingTargets $s=''; $s.=''; - $s.=''; # Show categories $sql = "SELECT rowid, label, type, visible"; @@ -177,6 +176,10 @@ class mailing_kiwi extends MailingTargets if ($resql) { $num = $this->db->num_rows($resql); + + if ($num) $s.=''; + else $s.=''; + $i = 0; while ($i < $num) { diff --git a/htdocs/includes/modules/mailings/modules_mailings.php b/htdocs/includes/modules/mailings/modules_mailings.php index 5e280d109b2..f2f3b006f46 100644 --- a/htdocs/includes/modules/mailings/modules_mailings.php +++ b/htdocs/includes/modules/mailings/modules_mailings.php @@ -144,12 +144,11 @@ class MailingTargets $sql .= " nom, prenom, email, other, url)"; $sql .= " VALUES (".$mailing_id.","; $sql .= (empty($cibles[$i]['fk_contact']) ? '0' : "'".$cibles[$i]['fk_contact']."'") .","; - $sql .= "'".addslashes($cibles[$i]['name'])."',"; - $sql .= "'".addslashes($cibles[$i]['firstname'])."',"; - $sql .= "'".addslashes($cibles[$i]['email'])."',"; - $sql .= "'".addslashes($cibles[$i]['other'])."',"; - $sql .= "'".addslashes($cibles[$i]['url'])."')"; - + $sql .= "'".$this->db->escape($cibles[$i]['name'])."',"; + $sql .= "'".$this->db->escape($cibles[$i]['firstname'])."',"; + $sql .= "'".$this->db->escape($cibles[$i]['email'])."',"; + $sql .= "'".$this->db->escape($cibles[$i]['other'])."',"; + $sql .= "'".$this->db->escape($cibles[$i]['url'])."')"; $result=$this->db->query($sql); if ($result) { diff --git a/htdocs/includes/modules/mailings/poire.modules.php b/htdocs/includes/modules/mailings/poire.modules.php index 5bb34f86dea..6e349b8b617 100644 --- a/htdocs/includes/modules/mailings/poire.modules.php +++ b/htdocs/includes/modules/mailings/poire.modules.php @@ -109,8 +109,6 @@ class mailing_poire extends MailingTargets $s=''; $s.='