source: spip-zone/_plugins_/_dev_/dtarch/dtarch_fonctions.php @ 18084

Last change on this file since 18084 was 18084, checked in by james@…, 13 years ago

dtarch, ou bien "date & archives". Introduit une balise #DATE_EXPOSE, pour "exposer" des dates comme on expose des rubriques avec la balise #EXPOSE, ainsi qu'un critère {fusion_date_mois} pour grouper par date, au mois près.

  • Property svn:executable set to *
File size: 1.7 KB
Line 
1<?php
2
3function compare_date_expose($date, $date_compare, $precision = 'mois') {
4        static $precisions = array(
5                'annee'         => 'Y',
6                'mois'          => 'Y-m',
7                'jour'          => 'Y-m-d',
8                'heure'         => 'Y-m-d H',
9                'minutes'       => 'Y-m-d H:i',
10                'secondes'      => 'Y-m-d H:i:s'
11        );
12        if(!in_array($precision, $precisions)) $precision = 'mois';
13        $fmt = $precisions[$precision];
14        $date_compare = date($fmt, strtotime($date_compare));
15        $date = date($fmt, strtotime(normaliser_date($date)));
16        return ($date == $date_compare);
17}
18
19function calculer_balise_date_expose($p, $on, $off) {
20        $b = $p->nom_boucle ? $p->nom_boucle : $p->id_boucle;
21        $key = $p->boucles[$b]->primary; 
22        $type = $p->boucles[$b]->type_requete;
23        $date = $GLOBALS['table_date'][$type];
24
25        if (!$key) {
26                erreur_squelette(_T('zbug_champ_hors_boucle', array('champ' => '#DATE_EXPOSER')), $b);
27        }
28       
29        if (!$date) {
30                erreur_squelette(_T('dtarch:zbug_balise_interdite'), $b);
31        }
32
33        $da  = index_pile($p->id_boucle, $date, $p->boucles, $b);
34        $p->code = "(compare_date_expose($da, \$Pile[0]['date']) ? $on : $off)";
35
36        $p->interdire_scripts = false;
37        return $p;
38}
39
40function balise_DATE_EXPOSE_dist($p) {
41        $on = "'on'";
42        $off= "''";
43
44        if (($v = interprete_argument_balise(1,$p))!==NULL){
45                $on = $v;
46                if (($v = interprete_argument_balise(2,$p))!==NULL)
47                        $off = $v;
48       
49                // autres filtres
50                array_shift($p->param);
51        }
52        return calculer_balise_date_expose($p, $on, $off);
53}
54
55function critere_fusion_date_mois($idb, &$boucles, $crit) {
56        $boucle = &$boucles[$idb];
57        $type = $boucle->type_requete;
58        $date = $GLOBALS['table_date'][$type];
59        $champ_date = $boucle->id_table.'.'.$date;
60
61        $boucles[$idb]->group[]  = 'DATE_FORMAT('.$champ_date.', \'%Y-%m\')'; 
62        $boucles[$idb]->select[] = 'DATE_FORMAT('.$champ_date.', \'%Y-%m\') AS date';
63}
64
65?>
Note: See TracBrowser for help on using the repository browser.