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