/** * Critère pour avoir l'équivalent du critère `age` en minutes ou autre * * 4 paramètres : le champ de date à utiliser, l'opérateur, la valeur comparée et l'unité (en anglais). * L'unité parmi : MICROSECOND (microseconds), SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or YEAR (toujours au singulier) * * @syntaxe * - `{ages champ_date,opérateur,valeur,unité}` * - exemple : `{ages date,<,1000,minute}` * * @param string $idb Identifiant de la boucle * @param array $boucles AST du squelette * @param Critere $crit Paramètres du critère dans cette boucle **/ function critere_ages_dist($idb, &$boucles, $crit) { $boucle = &$boucles[$idb]; $id_table = $boucle->id_table; // articles $primary = $boucle->primary; // id_article $objet = objet_type($id_table); // article if ( // y ait 4 paramètres obligatoirement count($crit->param) == 4 ){ $champ_date = calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent); $operateur = calculer_liste($crit->param[1], array(), $boucles, $boucles[$idb]->id_parent); $valeur = calculer_liste($crit->param[2], array(), $boucles, $boucles[$idb]->id_parent); $unite = calculer_liste($crit->param[3], array(), $boucles, $boucles[$idb]->id_parent); #$boucle->where[] = array($operateur, "\"TIMESTAMPDIFF(\" . $unite . \", \" . $champ_date . \", NOW())\"", $valeur); $boucle->having[] = array($operateur, "'ages'", $valeur); $boucle->select[] = "TIMESTAMPDIFF(\" . $unite . \", \" . $champ_date . \", NOW()) AS ages"; } else { return (array('zbug_critere_inconnu', array('critere' => $crit->op))); } } /** * Balise #AGES issue du critère {ages ...} * * @param unknown_type $p */ function balise_ages_dist($p) { return rindex_pile($p, 'ages', 'ages'); }