source: trunk/spip/esqueleto-redcta/plugins/agenda/1_9_2/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  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
39function 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?>
Note: See TracBrowser for help on using the repository browser.