Changeset 109223 in spip-zone


Ignore:
Timestamp:
Mar 1, 2018, 4:56:23 PM (15 months ago)
Author:
cedric@…
Message:

Gestion des segments : il est possible d'utiliser des saisies multiples sur les criteres de filtre, auquel cas on stocke le tableau en liste texte separee par une virgule, et lors de la comparaison on fiat un OU (il faut que le subscriber ait au moins 1 valeur dans la liste donnee par le filtre)

Location:
_plugins_/mailsubscribers/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/mailsubscribers/trunk/formulaires/editer_mailsubscribinglist_segment.php

    r98983 r109223  
    4949                        if (intval($id_segment) and isset($segments[$id_segment]['filtre_'.$k])) {
    5050                                $valeurs['filtre_'.$k] = $segments[$id_segment]['filtre_'.$k];
     51                                if (isset($d['options']['multiple']) and $d['options']['multiple']) {
     52                                        $valeurs['filtre_'.$k] = explode(',', $valeurs['filtre_'.$k]);
     53                                }
    5154                        }
    5255
     
    103106        foreach ($declaration as $k=>$d) {
    104107                if (isset($d['saisie']) and !isset($segment['filtre_'.$k])) {
    105                         $segment['filtre_'.$k] = trim(_request('filtre_'.$k));
     108                        $v = _request('filtre_'.$k);
     109                        if (is_array($v)) {
     110                                $v = array_map('trim', $v);
     111                                $v = array_filter($v);
     112                                $v = implode(',', $v);
     113                        }
     114                        $segment['filtre_'.$k] = trim($v);
    106115                }
    107116        }
  • _plugins_/mailsubscribers/trunk/inc/mailsubscribinglists.php

    r98983 r109223  
    138138                                return false;
    139139                        }
    140                         if (is_array($infos[$filtre_k])){
    141                                 if (!in_array($v,$infos[$filtre_k])){
    142                                         return false;
     140                        // si le filtre contient plusieurs valeurs, il suffit qu'on en ait une pour etre dans le segment (c'est un OU)
     141                        if (strpos($v,',') !== false){
     142                                $v = explode(',', $v);
     143                                if (is_array($infos[$filtre_k])){
     144                                        if (!array_intersect($v,$infos[$filtre_k])){
     145                                                return false;
     146                                        }
     147                                }
     148                                else {
     149                                        if (!in_array($infos[$filtre_k],$v)){
     150                                                return false;
     151                                        }
    143152                                }
    144153                        }
     154                        // si le filtre contient 1 valeur, il faut qu'elle soit dans les infos du subscriber
    145155                        else {
    146                                 if ($infos[$filtre_k]!=$v){
    147                                         return false;
     156                                if (is_array($infos[$filtre_k])){
     157                                        if (!in_array($v,$infos[$filtre_k])){
     158                                                return false;
     159                                        }
     160                                }
     161                                else {
     162                                        if ($infos[$filtre_k]!=$v){
     163                                                return false;
     164                                        }
    148165                                }
    149166                        }
  • _plugins_/mailsubscribers/trunk/mailsubscribers_fonctions.php

    r109182 r109223  
    228228                $titre = typo(supprimer_numero($declaration[$k]['titre']));
    229229        }
     230        if (strpos($v,',') !== false){
     231                $v = explode(',', $v);
     232        }
    230233        if (test_plugin_actif('saisies')) {
    231234                if (isset($declaration[$k]['saisie'])){
  • _plugins_/mailsubscribers/trunk/paquet.xml

    r109182 r109223  
    22        prefix="mailsubscribers"
    33        categorie="communication"
    4         version="2.6.11"
     4        version="2.7.0"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.