[10] | 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 | ?> |
---|