source: spip-zone/_plugins_/dates_outils/trunk/criteres/inc_agenda_filtres.php @ 114034

Last change on this file since 114034 was 114034, checked in by abelass@…, 7 months ago

des filtres critères et chaines de langues, des outils pour la gestion de dates

File size: 4.0 KB
Line 
1<?php
2/**
3 * Critères pour la gestion de dates empruntées du plugin agenda
4 * Tirées de agenda/inc/agenda_filtres.php.
5 * Déclares deprecies/obsoletes par le plugin
6 *
7 * @plugin     Dates outils
8 * @copyright  2018 - 2019
9 * @author     Rainer Müller
10 * @licence    GNU/GPL v3
11 * @package    SPIP\Dates_outils\Criteres
12 */
13
14/**
15 * {agendafull ..} variante etendue du critêre agenda du core
16 * qui accepte une date de debut et une date de fin
17 *
18 * {agendafull date_debut, date_fin, jour, #ENV{annee}, #ENV{mois}, #ENV{jour}}
19 * {agendafull date_debut, date_fin, semaine, #ENV{annee}, #ENV{mois}, #ENV{jour}}
20 * {agendafull date_debut, date_fin, mois, #ENV{annee}, #ENV{mois}}
21 * {agendafull date_debut, date_fin, periode, #ENV{annee}, #ENV{mois}, #ENV{jour},
22 *                                            #ENV{annee_fin}, #ENV{mois_fin}, #ENV{jour_fin}}
23 *
24 * @param string $idb
25 * @param object $boucles
26 * @param object $crit
27 */
28
29if (!function_exists('critere_agendafull_dist')) {
30        function critere_agendafull_dist($idb, &$boucles, $crit) {
31                $params = $crit->param;
32
33                if (count($params) < 1) {
34                        erreur_squelette(_T('zbug_info_erreur_squelette'), "{agenda ?} BOUCLE$idb");
35                }
36
37                $parent = $boucles[$idb]->id_parent;
38
39                // les valeurs $date et $type doivent etre connus a la compilation
40                // autrement dit ne pas etre des champs
41
42                $date_deb = array_shift($params);
43                $date_deb = $date_deb[0]->texte;
44
45                $date_fin = array_shift($params);
46                $date_fin = $date_fin[0]->texte;
47
48                $type = array_shift($params);
49                $type = $type[0]->texte;
50
51                $annee = $params ? array_shift($params) : '';
52                $annee = "\n" . 'sprintf("%04d", ($x = ' .
53                        calculer_liste($annee, array(), $boucles, $parent) .
54                        ') ? $x : date("Y"))';
55
56                        $mois =  $params ? array_shift($params) : '';
57                        $mois = "\n" . 'sprintf("%02d", ($x = ' .
58                                calculer_liste($mois, array(), $boucles, $parent) .
59                                ') ? $x : date("m"))';
60
61                                $jour =  $params ? array_shift($params) : '';
62                                $jour = "\n" . 'sprintf("%02d", ($x = ' .
63                                        calculer_liste($jour, array(), $boucles, $parent) .
64                                        ') ? $x : date("d"))';
65
66                                        $annee2 = $params ? array_shift($params) : '';
67                                        $annee2 = "\n" . 'sprintf("%04d", ($x = ' .
68                                                calculer_liste($annee2, array(), $boucles, $parent) .
69                                                ') ? $x : date("Y"))';
70
71                                                $mois2 =  $params ? array_shift($params) : '';
72                                                $mois2 = "\n" . 'sprintf("%02d", ($x = ' .
73                                                        calculer_liste($mois2, array(), $boucles, $parent) .
74                                                        ') ? $x : date("m"))';
75
76                                                        $jour2 =  $params ? array_shift($params) : '';
77                                                        $jour2 = "\n" .  'sprintf("%02d", ($x = ' .
78                                                                calculer_liste($jour2, array(), $boucles, $parent) .
79                                                                ') ? $x : date("d"))';
80
81                                                                $boucle = &$boucles[$idb];
82
83                                                                $quote_end = ",'".$boucle->sql_serveur."','text'";
84
85                                                                if ($type == 'jour') {
86                                                                        $boucle->where[]= array("'AND'",
87                                                                                array("'<='", "'DATE_FORMAT($date_deb, \'%Y%m%d\')'",("sql_quote($annee . $mois . $jour$quote_end)")),
88                                                                                array("'>='", "'DATE_FORMAT($date_fin, \'%Y%m%d\')'",("sql_quote($annee . $mois . $jour$quote_end)")));
89                                                                } elseif ($type == 'mois') {
90                                                                        $boucle->where[]= array("'AND'",
91                                                                                array("'<='", "'DATE_FORMAT($date_deb, \'%Y%m\')'",("sql_quote($annee . $mois$quote_end)")),
92                                                                                array("'>='", "'DATE_FORMAT($date_fin, \'%Y%m\')'",("sql_quote($annee . $mois$quote_end)")));
93                                                                } elseif ($type == 'semaine') {
94                                                                        $boucle->where[]= array("'AND'",
95                                                                                array("'>='",
96                                                                                        "'DATE_FORMAT($date_fin, \'%Y%m%d\')'",
97                                                                                        ("date_debut_semaine($annee, $mois, $jour)")),
98                                                                                array("'<='",
99                                                                                        "'DATE_FORMAT($date_deb, \'%Y%m%d\')'",
100                                                                                        ("date_fin_semaine($annee, $mois, $jour)")));
101                                                                } elseif (count($crit->param) > 3) {
102                                                                        $boucle->where[]= array("'AND'",
103                                                                                array("'>='",
104                                                                                        "'DATE_FORMAT($date_fin, \'%Y%m%d\')'",
105                                                                                        ("sql_quote($annee . $mois . $jour$quote_end)")),
106                                                                                array("'<='", "'DATE_FORMAT($date_deb, \'%Y%m%d\')'", ("sql_quote($annee2 . $mois2 . $jour2$quote_end)")));
107                                                                        // sinon on prend tout
108                                                                }
109        }
110}
Note: See TracBrowser for help on using the repository browser.