Changeset 39340 in spip-zone


Ignore:
Timestamp:
Jul 18, 2010, 1:19:33 PM (9 years ago)
Author:
cedric@…
Message:

comptage des articles filtres par statut. Il faut finalement utiliser un critere dedie pour faire la jointure en LEFT join avec la condition sur le statut et un IS NULL

Location:
_plugins_/afficher_objets
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/afficher_objets/afficher_objets_fonctions.php

    r39321 r39340  
    3333}
    3434
     35/**
     36 * Compter les articles publies lies a un auteur, dans une boucle auteurs
     37 * pour la vue prive/liste/auteurs.html
     38 *
     39 * @param <type> $idb
     40 * @param <type> $boucles
     41 * @param <type> $crit
     42 * @param <type> $left
     43 */
     44function critere_compteur_articles_filtres_dist($idb, &$boucles, $crit, $left=false){
     45        $boucle = &$boucles[$idb];
     46
     47        $_statut = calculer_liste($crit->param[0], array(), $boucles, $boucle->id_parent);
     48
     49        $not="";
     50        if ($crit->not)
     51                $not=", 'NOT'";
     52        $boucle->from['auteurs_articles'] = 'spip_auteurs_articles';
     53        $boucle->from_type['auteurs_articles'] = 'left';
     54        $boucle->join['auteurs_articles'] = array("'auteurs'","'id_auteur'");
     55
     56        $boucle->from['articles'] = 'spip_articles';
     57        $boucle->from_type['articles'] = 'left';
     58        $boucle->join['articles'] = array("'auteurs_articles'","'id_article'","'id_article'","'(articles.statut IS NULL OR '.sql_in('articles.statut',$_statut$not).')'");
     59
     60        $boucle->select[]= "COUNT(articles.id_article) AS compteur_articles";
     61        $boucle->group[] = 'auteurs.id_auteur';
     62}
     63/**
     64 * Compter les articles publies lies a un auteur, dans une boucle auteurs
     65 * pour la vue prive/liste/auteurs.html
     66 *
     67 * @param <type> $p
     68 * @return <type>
     69 */
     70function balise_COMPTEUR_ARTICLES_dist($p) {
     71        return rindex_pile($p, 'compteur_articles', 'compteur_articles_filtres');
     72}
     73
     74
     75/**
     76 * Calculer l'initiale d'un nom
     77 *
     78 * @param <type> $nom
     79 * @return <type>
     80 */
     81function initiale($nom){
     82        return spip_substr(trim(strtoupper($nom)),0,1);
     83}
     84
     85/**
     86 * Afficher l'initiale pour la navigation par lettres
     87 *
     88 * @staticvar string $memo
     89 * @param <type> $url
     90 * @param <type> $initiale
     91 * @param <type> $compteur
     92 * @param <type> $debut
     93 * @param <type> $pas
     94 * @return <type>
     95 */
     96function afficher_initiale($url,$initiale,$compteur,$debut,$pas){
     97        static $memo = null;
     98        $res = '';
     99        if (!$memo
     100                OR (!$initiale AND !$url)
     101                OR ($initiale!==$memo['initiale'])
     102                ){
     103                $newcompt = intval(floor(($compteur-1)/$pas)*$pas);
     104                #var_dump("$initiale:$newcompt");
     105                if ($memo){
     106                        $on = (($memo['compteur']<=$debut)
     107                                AND (
     108                                                $newcompt>$debut OR ($newcompt==$debut AND $newcompt==$memo['compteur'])
     109                                                ));
     110                        $res = lien_ou_expose($memo['url'],$memo['initiale'],$on,'lien_pagination');
     111                }
     112                if ($initiale)
     113                        $memo = array('initiale'=>$initiale,'url'=>$url,'compteur'=>$newcompt);
     114        }
     115        return $res;
     116}
     117
    35118?>
  • _plugins_/afficher_objets/exec/auteurs.php

    r39332 r39340  
    9494                        $contexte['statut'] = array_map('reset',$statut);
    9595                }
     96
     97                if ($GLOBALS['visiteur_session']['statut']=='0minirezo'){
     98                        // n'exclure que les articles a la poubelle des compteurs
     99                        $contexte['filtre_statut_articles'] = array('poubelle');
     100                }
     101                else {
     102                        // exclure les articles a la poubelle, en redac ou refuse des compteurs
     103                        $contexte['filtre_statut_articles'] = array('prepa','poubelle','refuse');
     104                }
     105
    96106                $lister_objets = charger_fonction('lister_objets','inc');
    97107                echo $lister_objets('auteurs',$contexte);
  • _plugins_/afficher_objets/plugin.xml

    r39332 r39340  
    11<plugin>
    22        <nom>Afficher Objets</nom>
    3         <version>1.1.0</version>
     3        <version>1.1.1</version>
    44        <prefix>afficher_objets</prefix>
    55
  • _plugins_/afficher_objets/prive/liste/auteurs.html

    r39332 r39340  
    1515        <thead>
    1616                <B_lettre><tr><td colspan="4"><p class='pagination'><BOUCLE_lettre(AUTEURS){tout}{id_auteur?}{where?}{statut?}{recherche?}{par multi nom}{id_auteur==#GET{afficher_lettres}|?{'.*','A'}}>[
    17                 [(#REM)
    18                
    19                
    20                 Afficher l'initiale precedente si celle-ci est nouvelle
    21                
    22                 ](#NOM|strtoupper|trim|spip_substr{0,1}|unique|oui)
    23                 [(#REM)
    24 
    25                 Calculer le debut de la page correspondant a l'item courant
    26 
    27                 ]#SET{newcompt,#COMPTEUR_BOUCLE|moins{1}|div{#ENV{nb,10}}|floor|mult{#ENV{nb,10}}|intval}
    28                 [(#REM)
    29 
    30                 Si une initiale avait deja ete memorisee, l'afficher
    31 
    32                 ][(#GET{initiale}|oui)
    33                         [(#GET{url}|lien_ou_expose{#GET{initiale},
    34                         #GET{compteur}|<={#GET{debut}}|et{#GET{newcompt}|>{#GET{debut}}|ou{#GET{newcompt}|=={#GET{debut}}|et{#GET{newcompt}|=={#GET{compteur}}}}},
    35                         lien_pagination})]
    36                 ]
    37                 [(#REM)
    38 
    39                 Stocker les infos pour le prochain affichage
    40 
    41                 ]
    42                 #SET{url,#SELF|parametre_url{debutaut,@#ID_AUTEUR}|ancre_url{paginationaut}}
    43                 #SET{initiale,#NOM|strtoupper|trim|spip_substr{0,1}}
    44                 #SET{compteur,#GET{newcompt}}
    45                 ]</BOUCLE_lettre>[(#GET{initiale}|oui)
    46                         #SET{newcompt,#TOTAL_BOUCLE|moins{1}|div{#ENV{nb,10}}|round|mult{#ENV{nb,10}}|intval}
    47                         [(#GET{url}|lien_ou_expose{#GET{initiale},
    48                         #GET{compteur}|<={#GET{debut}}|et{#GET{newcompt}|>{#GET{debut}}|ou{#GET{newcompt}|=={#GET{debut}}|et{#GET{newcompt}|=={#GET{compteur}}}}},
    49                         lien_pagination})]
     17                (#NOM|initiale|unique|oui)
     18                [(#SELF|parametre_url{debutaut,@#ID_AUTEUR}|ancre_url{paginationaut}|afficher_initiale{[(#NOM|initiale)],#COMPTEUR_BOUCLE,#GET{debut},#ENV{nb,10}})]
     19                ]</BOUCLE_lettre>[
     20                (#REM|afficher_initiale{#REM,#TOTAL_BOUCLE,#GET{debut},#ENV{nb,10}})
    5021                ]</p></td></tr></B_lettre>
    5122                [<tr><td colspan="4"><p class='pagination'>(#PAGINATION{prive})</p></td></tr>]
     
    5829        </thead>
    5930        <tbody>
    60         <BOUCLE_liste_aut(AUTEURS){tout}{id_auteur?}{where?}{statut?}{recherche?}{tri #ENV{order,multi nom},#GET{defaut_tri}}{pagination #ENV{nb,10} aut}{compteur_left articles}>
     31        <BOUCLE_liste_aut(AUTEURS){tout}{id_auteur?}{where?}{statut?}{recherche?}{tri #ENV{order,multi nom},#GET{defaut_tri}}{pagination #ENV{nb,10} aut}{!compteur_articles_filtres #ENV{filtre_statut_articles,poubelle}}>
    6132                <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
    6233                        <td class='statut'>[(#ID_AUTEUR|puce_changement_statut{#STATUT,0,auteur})]</td>
    6334                        <td class='nom[ (#NOM|non)vide]'><a href="[(#ID_AUTEUR|generer_url_entite{auteur})]"[ title="(#BIO*|couper{200}|attribut_html)"]>[(#RANG). ][(#NOM|sinon{<:texte_vide:>})]</a></td>
    6435                        <td class='site'>[<a href='(#URL_SITE|traiter_lien_explicite)'>[(#NOM_SITE|sinon{#URL_SITE|traiter_lien_explicite|couper{30}})]</a>]</td>
    65                         <td class='nombre'>[(#COMPTEUR{articles}|affiche_un_ou_plusieurs{info_1_article,afficher_objets:nb_articles})]</td>
     36                        <td class='nombre'>[(#COMPTEUR_ARTICLES|affiche_un_ou_plusieurs{info_1_article,afficher_objets:nb_articles})]</td>
    6637                </tr>
    6738        </BOUCLE_liste_aut>
Note: See TracChangeset for help on using the changeset viewer.