Changeset 90368 in spip-zone


Ignore:
Timestamp:
Jun 19, 2015, 5:13:10 PM (4 years ago)
Author:
cedric@…
Message:

comptage des onglets en un coup, on choisit l'onglet 'inscrits' par defaut quand il y en a

Location:
_plugins_/mailsubscribers/trunk
Files:
3 edited
1 copied

Legend:

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

    r86492 r90368  
    4545/**
    4646 * Compter les inscrits a une liste
    47  * @param $liste
     47 * @param string $liste
     48 * @param string $statut
    4849 * @return mixed
    4950 */
    50 function mailsubscribers_compte_inscrits($liste){
    51         $subscribers = charger_fonction("subscribers","newsletter");
    52         return $subscribers(array($liste),array('count'=>true));
     51function mailsubscribers_compte_inscrits($liste,$statut='valide'){
     52        static $count = null;
     53
     54        if (is_null($count)){
     55                $count_meta = array();
     56                $rows = sql_allfetsel("listes,statut,count(id_mailsubscriber) as n","spip_mailsubscribers",'',"listes,statut");
     57                foreach($rows as $row){
     58                        $ls = explode(",",$row["listes"]);
     59                        $ls = array_filter($ls);
     60                        $ls = array_unique($ls);
     61                        foreach($ls as $l){
     62                                if (!isset($count[$l][$row['statut']])) $count[$l][$row['statut']] = 0;
     63                                $count[$l][$row['statut']] += $row['n'];
     64                                if ($row['statut']=='valide'){
     65                                        $count_meta[$l] += $row['n'];
     66                                }
     67                        }
     68                        if (!isset($count[''][$row['statut']])) $count[''][$row['statut']] = 0;
     69                        $count[''][$row['statut']] += $row['n'];
     70                }
     71                // si beaucoup d'inscrits on met en cache
     72                if (array_sum($count_meta)>10000){
     73                        ecrire_meta("newsletter_subscribers_count",serialize($count_meta));
     74                }
     75        }
     76
     77        if ($statut=='all'){
     78                if (isset($count[$liste])){
     79                        return $count[$liste];
     80                }
     81                return array();
     82        }
     83        if (isset($count[$liste][$statut])){
     84                return $count[$liste][$statut];
     85        }
     86
     87        return 0;
    5388}
    5489
  • _plugins_/mailsubscribers/trunk/prive/squelettes/contenu/mailsubscribers.html

    r90367 r90368  
    33
    44#SET{self,#SELF|parametre_url{debut_mailsubscribers,''}}
    5 [(#SET{listes,[(#ENV{liste,''}|trim|?{[(^|,)(#ENV{liste})($|,)],'.*'})]})]
     5#SET{compte,#ENV{liste,''}|trim|mailsubscribers_compte_inscrits{all}}
     6#SET{defaut,#GET{compte}|table_valeur{valide}|?{valide,''}}
     7#SET{statut,#ENV{statut}|sinon{#GET{defaut}}|replace{all,''}}
    68
    79<div class='onglets_simple clearfix'>
    810<ul class="statut statut_mailsubscribers">
    9 <li>[(#GET{self}|parametre_url{statut,''}|lien_ou_expose{<:mailsubscriber:mailsubscribers_tous:>,#ENV{statut,''}|=={''},ajax})]</li>
    10 
    11         <BOUCLE_st(POUR){tableau #LISTE{valide,prepa,prop,refuse,poubelle}}>
    12         <BOUCLE_cpt_1(MAILSUBSCRIBERS){id_mailsubscriber?}{email?}{statut=#VALEUR}{statut<>poubelle}{listes==#GET{listes}}{recherche?} />
    13         [(#TOTAL_BOUCLE|oui) <li class='#VALEUR'>[(#GET{self}|parametre_url{statut,#VALEUR}|lien_ou_expose{#VAL{mailsubscriber:mailsubscribers_#VALEUR}|_T|concat{' (',#TOTAL_BOUCLE,')'},#ENV{statut,''}|=={#VALEUR},'ajax'})]</li>]<//B_cpt_1>
     11        <li>[(#GET{self}|parametre_url{statut,all}|lien_ou_expose{<:mailsubscriber:mailsubscribers_tous:>,#GET{statut}|=={''},ajax})]</li>
     12        <BOUCLE_st(POUR){tableau #LISTE{valide,prepa,prop,refuse}}>
     13        [(#GET{compte}|table_valeur{#VALEUR}|oui)
     14        <li class='#VALEUR'>[(#GET{self}|parametre_url{statut,#VALEUR}|lien_ou_expose{#VAL{mailsubscriber:mailsubscribers_#VALEUR}|_T|concat{' (',#GET{compte}|table_valeur{#VALEUR},')'},#GET{statut}|=={#VALEUR},'ajax'})]</li>
     15        ]
    1416        </BOUCLE_st>
    1517
     
    2022<div class="nettoyeur"></div>
    2123
    22 <INCLURE{fond=prive/objets/liste/mailsubscribers, par=email, env, ajax, sinon=<:mailsubscriber:info_aucun_mailsubscriber:>}>
     24<INCLURE{fond=prive/objets/liste/mailsubscribers, par=email, statut=#GET{statut}, env, ajax, sinon=<:mailsubscriber:info_aucun_mailsubscriber:>}>
    2325
    2426[(#AUTORISER{creer,mailsubscriber})
  • _plugins_/mailsubscribers/trunk/prive/squelettes/navigation/mailsubscribers.html

    r86539 r90368  
    33        [(#BOITE_OUVRIR{<h3><:mailsubscriber:titre_listes_de_diffusion:></h3>,simple})]
    44        <ul class="liste-items">
    5                 <li class="item[(#ENV{liste}|trim|non)on]">[(#SELF|parametre_url{liste,' '}|lien_ou_expose{<:mailsubscriber:label_toutes_les_listes:>,#ENV{liste}|trim|non})]</li>
     5                <li class="item[(#ENV{liste}|trim|non)on]">[(#SELF|parametre_url{liste,''}|lien_ou_expose{<:mailsubscriber:label_toutes_les_listes:>,#ENV{liste}|trim|non})]</li>
    66        <BOUCLE_listes(POUR){tableau #REM|mailsubscribers_listes}>
    77                <li class="item[(#ENV{liste}|=={#CLE}|oui)on]">[(#SELF|parametre_url{liste,#CLE}|lien_ou_expose{#VALEUR{titre},#ENV{liste}|=={#CLE}})]
Note: See TracChangeset for help on using the changeset viewer.