source: trunk/spip/esqueleto-redcta/plugins/agenda/1_9_0/public/criteres_agenda.php @ 30

Last change on this file since 30 was 30, checked in by sebas, 17 years ago

nueva importacion del codigo del esqueleto de redcta con los plugins

File size: 3.7 KB
Line 
1<?php
2
3// {branche ?}
4// http://www.spip.net/@branche
5function critere_branche($idb, &$boucles, $crit) {
6        $not = $crit->not;
7        $boucle = &$boucles[$idb];
8  $type = $boucle->type_requete;
9  $nom = $table_des_tables[$type];
10  if ($boucle->id_table!='evenements' && $boucle->id_table!='pim_agenda')
11        critere_branche_dist($idb, &$boucles, $crit);
12  else{
13                $arg = calculer_argument_precedent($idb, 'id_rubrique', $boucles);
14                $champ = 'id_rubrique';
15
16    $type = $boucle->type_requete;
17    $nom = $table_des_tables[$type];
18    list($nom, $desc) = trouver_def_table($nom ? $nom : $type, $boucle);
19
20    $cle = trouver_champ_exterieur($champ, $boucle->jointures, $boucle);
21    if ($cle) 
22      $cle = calculer_jointure($boucle, array($boucle->id_table, $desc), $cle, false);
23    if ($cle) $t = "L$cle";
24                // faire la jointure sur id_rubrique
25               
26                $c = "calcul_mysql_in('" .
27                  $t .
28                  ".id_rubrique', calcul_branche($arg), '')";
29                if ($crit->cond) $c = "($arg ? $c : 1)";
30                               
31                if ($not)
32                        $boucle->where[]= array("'NOT'", $c);
33                else
34                        $boucle->where[]= $c;
35  }
36}
37
38function critere_agendafull_dist($idb, &$boucles, $crit)
39{
40        $params = $crit->param;
41
42        if (count($params) < 1)
43              erreur_squelette(_T('zbug_info_erreur_squelette'),
44                               "{agenda ?} BOUCLE$idb");
45
46        $parent = $boucles[$idb]->id_parent;
47
48        // les valeurs $date et $type doivent etre connus a la compilation
49        // autrement dit ne pas etre des champs
50
51        $date_deb = array_shift($params);
52        $date_deb = $date_deb[0]->texte;
53
54        $date_fin = array_shift($params);
55        $date_fin = $date_fin[0]->texte;
56
57        $type = array_shift($params);
58        $type = $type[0]->texte;
59
60        $annee = $params ? array_shift($params) : "";
61        $annee = "\n" . 'sprintf("%04d", ($x = ' .
62                calculer_liste($annee, array(), $boucles, $parent) .
63                ') ? $x : date("Y"))';
64
65        $mois =  $params ? array_shift($params) : "";
66        $mois = "\n" . 'sprintf("%02d", ($x = ' .
67                calculer_liste($mois, array(), $boucles, $parent) .
68                ') ? $x : date("m"))';
69
70        $jour =  $params ? array_shift($params) : "";
71        $jour = "\n" . 'sprintf("%02d", ($x = ' .
72                calculer_liste($jour, array(), $boucles, $parent) .
73                ') ? $x : date("d"))';
74
75        $annee2 = $params ? array_shift($params) : "";
76        $annee2 = "\n" . 'sprintf("%04d", ($x = ' .
77                calculer_liste($annee2, array(), $boucles, $parent) .
78                ') ? $x : date("Y"))';
79
80        $mois2 =  $params ? array_shift($params) : "";
81        $mois2 = "\n" . 'sprintf("%02d", ($x = ' .
82                calculer_liste($mois2, array(), $boucles, $parent) .
83                ') ? $x : date("m"))';
84
85        $jour2 =  $params ? array_shift($params) : "";
86        $jour2 = "\n" .  'sprintf("%02d", ($x = ' .
87                calculer_liste($jour2, array(), $boucles, $parent) .
88                ') ? $x : date("d"))';
89
90        $boucle = &$boucles[$idb];
91        $date = $boucle->id_table . ".$date";
92
93        if ($type == 'jour')
94                $boucle->where[]= array("'AND'", 
95                                        array("'<='", "'DATE_FORMAT($date_deb, \'%Y%m%d\')'",("$annee . $mois . $jour")),
96                                        array("'>='", "'DATE_FORMAT($date_fin, \'%Y%m%d\')'",("$annee . $mois . $jour")));
97        elseif ($type == 'mois')
98                $boucle->where[]= array("'AND'", 
99                                        array("'<='", "'DATE_FORMAT($date_deb, \'%Y%m\')'",("$annee . $mois")),
100                                        array("'>='", "'DATE_FORMAT($date_fin, \'%Y%m\')'",("$annee . $mois")));
101        elseif ($type == 'semaine')
102                $boucle->where[]= array("'AND'", 
103                                        array("'>='",
104                                             "'DATE_FORMAT($date_fin, \'%Y%m%d\')'", 
105                                              ("date_debut_semaine($annee, $mois, $jour)")),
106                                        array("'<='",
107                                              "'DATE_FORMAT($date_deb, \'%Y%m%d\')'",
108                                              ("date_fin_semaine($annee, $mois, $jour)")));
109        elseif (count($crit->param) > 3)
110                $boucle->where[]= array("'AND'",
111                                        array("'>='",
112                                              "'DATE_FORMAT($date_fin, \'%Y%m%d\')'",
113                                              ("$annee . $mois . $jour")),
114                                        array("'<='", "'DATE_FORMAT($date_deb, \'%Y%m%d\')'", ("$annee2 . $mois2 . $jour2")));
115        // sinon on prend tout
116}
117?>
Note: See TracBrowser for help on using the repository browser.