Changeset 61355 in spip-zone


Ignore:
Timestamp:
May 16, 2012, 10:43:56 AM (7 years ago)
Author:
marcimat@…
Message:

Réparer les criteres aveline_selecteur_archives_mois et aveline_selecteur_archives_annee

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _squelettes_/aveline/trunk/aveline_fonctions.php

    r61316 r61355  
    103103        } else {
    104104                // retrouver le champ date
    105                 $trouver_table = charger_fonction('trouver_table', 'base');
    106                 $desc = $trouver_table($boucle->type_requete);
    107                 // dans la description, sinon dans l'ancienne globale (deprecie)
    108                 $date = isset($desc['date']) ?
    109                         $desc['date'] :
    110                         (isset($GLOBALS['table_date'][$boucle->type_requete]) ?
    111                                 $GLOBALS['table_date'][$boucle->type_requete] :
    112                                 '');
    113 
     105                $date = aveline_retrouver_champ_date($boucle->type_requete);
    114106                if ($date) {
    115107                        $champ_date = "'" . $boucle->id_table ."." . $date . "'";
     
    582574}
    583575
     576
     577/**
     578 * Retourne le champ date d'une table
     579 *
     580 * @param string $type
     581 *              Nom de la boucle (ex: articles)
     582 *              Generalement $boucle->type_requete
     583 * @return string
     584 *              Champ date, sinon ''
     585**/
     586function aveline_retrouver_champ_date($type) {
     587        static $dates = array();
     588        if (isset($dates[$type])) {
     589                return $dates[$type];
     590        }
     591
     592        // retrouver le champ date
     593        $trouver_table = charger_fonction('trouver_table', 'base');
     594        $desc = $trouver_table($type);
     595        // dans la description, sinon dans l'ancienne globale (deprecie)
     596        $date = isset($desc['date']) ?
     597                $desc['date'] :
     598                (isset($GLOBALS['table_date'][$type]) ?
     599                        $GLOBALS['table_date'][$type] :
     600                        '');
     601
     602        return $dates[$type] = $date;
     603}
     604
    584605// Critère aveline_selecteurs_archives_mois et aveline_selecteurs_archives_annees
    585606// Utilisée pour les sélecteurs d'archives
     
    587608function critere_aveline_selecteur_archives_mois_dist($idb, &$boucles, $crit) {
    588609        $boucle = &$boucles[$idb];
    589         $champ_date = $boucle->id_table ."." . $GLOBALS['table_date'][$boucle->type_requete];
    590         $id_objet = $boucle->id_table ."." . $boucle->primary;
    591         $boucle->select[] = "COUNT($id_objet) AS nb_archives";
    592         $boucle->group[] = "YEAR($champ_date)";
    593         $boucle->group[] = "MONTH($champ_date)";
     610        if ($date = aveline_retrouver_champ_date($boucle->type_requete)) {
     611                $champ_date = $boucle->id_table ."." . $date;
     612                $id_objet = $boucle->id_table ."." . $boucle->primary;
     613                $boucle->select[] = "COUNT($id_objet) AS nb_archives";
     614                $boucle->group[] = "YEAR($champ_date)";
     615                $boucle->group[] = "MONTH($champ_date)";
     616        } else {
     617                // bug...
     618                return array('aveline:zbug_erreur_critere', array('critere' => 'aveline_selecteur_archives_mois'));
     619        }
    594620}
    595621
    596622function critere_aveline_selecteur_archives_annee_dist($idb, &$boucles, $crit) {
    597623        $boucle = &$boucles[$idb];
    598         $champ_date = $boucle->id_table ."." . $GLOBALS['table_date'][$boucle->type_requete];
    599         $id_objet = $boucle->id_table ."." . $boucle->primary;
    600         $boucle->select[] = "COUNT($id_objet) AS nb_archives";
    601         $boucle->group[] = "YEAR($champ_date)";
     624        if ($date = aveline_retrouver_champ_date($boucle->type_requete)) {
     625                $champ_date = $boucle->id_table ."." . $date;
     626                $id_objet = $boucle->id_table ."." . $boucle->primary;
     627                $boucle->select[] = "COUNT($id_objet) AS nb_archives";
     628                $boucle->group[] = "YEAR($champ_date)";
     629        } else {
     630                // bug...
     631                return array('aveline:zbug_erreur_critere', array('critere' => 'aveline_selecteur_archives_annee'));
     632        }
    602633}
    603634
Note: See TracChangeset for help on using the changeset viewer.