Changeset 67857 in spip-zone


Ignore:
Timestamp:
Nov 22, 2012, 9:37:39 AM (7 years ago)
Author:
cedric@…
Message:

Gestion des listes : le prefixage newsletter:: s'applique a la liste par defaut (qui devient donc newsletter::newsletter). Par ailleurs, c'est une sauce interne au plugin, et on filtre donc les listes en sortie de l'API (seules les listes newsleter:: sont renvoyées, et sans le prefixe)

Location:
_plugins_/mailsubscribers/trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/mailsubscribers/trunk/inc/mailsubscribers.php

    r67853 r67857  
    2020
    2121        if (!$liste)
    22                 return $category;
     22                return "$category::$category"; // valeur fixe en cas de reantrance
    2323
    2424        if (strpos($liste,"::")!==false){
     
    3131        return $liste;
    3232}
     33
     34
     35/**
     36 * Informer un subscriber : ici juste l'url unsubscribe a calculer
     37 * @param array $infos
     38 * @return array mixed
     39 */
     40function mailsubscribers_informe_subscriber($infos){
     41        $infos['listes'] = explode(',',$infos['listes']);
     42        $infos['listes'] = array_map('mailsuscribers_filtre_liste',$infos['listes']);
     43        $infos['listes'] = array_filter($infos['listes']);
     44
     45        $infos['url_unsubscribe'] = mailsubscriber_url_unsubscribe($infos['email'],$infos['jeton']);
     46        unset($infos['jeton']);
     47        return $infos;
     48}
     49
     50function mailsuscribers_filtre_liste($liste,$category="newsletter"){
     51        if (strncmp($liste,"$category::",$l=strlen("$category::"))==0){
     52                return substr($liste,$l);
     53        }
     54        return '';
     55}
  • _plugins_/mailsubscribers/trunk/newsletter/subscribe.php

    r67853 r67857  
    9696        }
    9797        else {
    98                 if (!$row['listes'] AND !isset($set['listes']))
    99                         $set['listes'] = mailsubscribers_normaliser_nom_liste();
     98                $row['listes'] = explode(',',$row['listes']);
     99                if (!isset($set['listes'])){
     100                        // filtrer les listes de newsletter pour voir si l'abonne est abonne a quelque chose
     101                        $listes = array_map('mailsuscribers_filtre_liste',$row['listes']);
     102                        $listes = array_filter($listes);
     103                        // sinon l'abonner a la liste par defaut
     104                        if (!count($listes))
     105                                $set['listes'] = mailsubscribers_normaliser_nom_liste();
     106                }
    100107                // si c'est un inscrit existant faire les mises a jour des listes si besoins
    101108                if (isset($set['listes'])){
    102                         $set['listes'] = array_merge(explode(',',$row['listes']),explode(',',$set['listes']));
     109                        $set['listes'] = array_merge($row['listes'],explode(',',$set['listes']));
    103110                        $set['listes'] = array_map('trim',$set['listes']);
    104111                        $set['listes'] = array_unique($set['listes']);
  • _plugins_/mailsubscribers/trunk/newsletter/subscriber.php

    r67853 r67857  
    99if (!defined('_ECRIRE_INC_VERSION')) return;
    1010
     11include_spip('inc/mailsubscribers');
    1112include_spip('mailsubscribers_fonctions');
    1213
     
    3233        $infos = sql_fetsel('email,nom,listes,lang,statut,jeton','spip_mailsubscribers','email='.sql_quote($email));
    3334        if ($infos){
    34                 $infos['listes'] = explode(",",$infos['listes']);
    3535                if ($infos['statut']=='valide')
    3636                        $infos['status']=='on';
     
    4343                unset($infos['statut']);
    4444
    45                 $infos['url_unsubscribe'] = mailsubscriber_url_unsubscribe($infos['email'],$infos['jeton']);
    46                 unset($infos['jeton']);
     45                $infos = mailsubscribers_informe_subscriber($infos);
    4746
    4847                return $infos;
  • _plugins_/mailsubscribers/trunk/newsletter/subscribers.php

    r67853 r67857  
    2929        $where = array('statut='.sql_quote('valide'));
    3030        $limit = "";
    31         if ($listes AND is_array($listes)){
    32                 $sous_where = array();
    33                 foreach ($listes as $l){
    34                         $l = mailsubscribers_normaliser_nom_liste($l);
    35                         $sous_where[] = "listes REGEXP ".sql_quote('(,|^)'.$l.'(,|$)');
    36                 }
    37                 if (count($sous_where)){
    38                         $sous_where = "(".implode(" OR ",$sous_where).")";
    39                         $where[] = $sous_where;
    40                 }
     31
     32        // si pas de liste precisee : liste newsletter par defaut (newsletter::newsletter)
     33        if (!$listes OR !is_array($listes)){
     34                $listes = array(mailsubscribers_normaliser_nom_liste());
     35        }
     36
     37        $sous_where = array();
     38        foreach ($listes as $l){
     39                $l = mailsubscribers_normaliser_nom_liste($l);
     40                $sous_where[] = "listes REGEXP ".sql_quote('(,|^)'.$l.'(,|$)');
     41        }
     42        if (count($sous_where)){
     43                $sous_where = "(".implode(" OR ",$sous_where).")";
     44                $where[] = $sous_where;
    4145        }
    4246
     
    5660        return $rows;
    5761}
    58 
    59 /**
    60  * Informer un subscriber : ici juste l'url unsubscribe a calculer
    61  * @param array $infos
    62  * @return array mixed
    63  */
    64 function mailsubscribers_informe_subscriber($infos){
    65         $infos['listes'] = explode(',',$infos['listes']);
    66         $infos['url_unsubscribe'] = mailsubscriber_url_unsubscribe($infos['email'],$infos['jeton']);
    67         unset($infos['jeton']);
    68         return $infos;
    69 }
  • _plugins_/mailsubscribers/trunk/newsletter/unsubscribe.php

    r67853 r67857  
    5454                        $restantes = array();
    5555                        foreach ($listes as $l){
    56                                 if ($l!=="newsletter" AND strncmp($l,'newsletter::',12)!==0)
     56                                if (strncmp($l,'newsletter::',12)!==0)
    5757                                        $restantes[] = $l;
    5858                        }
  • _plugins_/mailsubscribers/trunk/paquet.xml

    r67853 r67857  
    22        prefix="mailsubscribers"
    33        categorie="communication"
    4         version="0.4.0"
     4        version="0.4.1"
    55        etat="dev"
    66        compatibilite="[3.0.0;3.0.*]"
Note: See TracChangeset for help on using the changeset viewer.