From 696976d0810f8badd9f479c944f02bdf0effd89d Mon Sep 17 00:00:00 2001 From: Antoine Pitrou <pitrou@free.fr> Date: Mon, 28 Apr 2003 13:27:34 +0000 Subject: [PATCH] corrections dates --- ecrire/inc_filtres.php3 | 16 +++++++ ecrire/inc_version.php3 | 17 ------- inc-calcul-squel.php3 | 104 +++++++++++++++++++++------------------- inc-calcul.php3 | 4 +- spip_image.php3 | 6 +-- 5 files changed, 76 insertions(+), 71 deletions(-) diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3 index e256a6b5e8..cb5dbc811a 100644 --- a/ecrire/inc_filtres.php3 +++ b/ecrire/inc_filtres.php3 @@ -165,6 +165,22 @@ function antispam($texte) { // Date, heure, saisons // +function normaliser_date($date) { + if ($date) { + if (ereg("^[0-9]{8,10}$", $date)) + $date = date("Y-m-d H:i:s", $date); + if (ereg("^([12][0-9]{3})([-/]00)?( [-0-9:]+)?$", $date, $regs)) + $date = $regs[1]."-01-01".$regs[3]; + else if (ereg("^([12][0-9]{3}[-/][01]?[0-9])([-/]00)?( [-0-9:]+)?$", $date, $regs)) + $date = ereg_replace("/","-",$regs[1])."-01".$regs[3]; + else if ($GLOBALS['flag_strtotime']) { + $date = date("Y-m-d H:i:s", strtotime($date)); + } + else $date = ereg_replace('[^-0-9/: ]', '', $date); + } + return $date; +} + function vider_date($letexte) { if (ereg("^0000-00-00", $letexte)) return ''; return $letexte; diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3 index f43265681b..b13ab32baf 100644 --- a/ecrire/inc_version.php3 +++ b/ecrire/inc_version.php3 @@ -739,23 +739,6 @@ function email_valide($adresse) { } -// normaliser la date -function normaliser_date($date) { - if ($date) { - if (ereg("^([12][0-9]{3})(-00)?( .*)?$", $date, $regs)) - $date = $regs[1]."-01-01".$regs[2]; - else if (ereg("^([12][0-9]{3}[/-][01]?[0-9])(-00)?( .*)?$", $date, $regs)) - $date = ereg_replace("/","-",$regs[1])."-01".$regs[3]; - else if ($GLOBALS['flag_strtotime']) { - if ($date_str = strtotime($date)) - $date = date("Y-m-d H:i:s", $date_str); - } - } - return $date; -} - -$date = normaliser_date($date); - // // Traduction des textes de SPIP // diff --git a/inc-calcul-squel.php3 b/inc-calcul-squel.php3 index 264ac430cd..1bf10cda2f 100644 --- a/inc-calcul-squel.php3 +++ b/inc-calcul-squel.php3 @@ -241,7 +241,7 @@ function parser_boucle($texte, $id_parent) { if (ereg('\#(PS)', $milieu)) { $s .= ",$table.ps"; } - + $req_select[] = $s; } else $req_select[] = "$table.*"; @@ -304,7 +304,7 @@ function parser_boucle($texte, $id_parent) { if ($param == 'inverse') { if ($req_order) $req_order .= ' DESC'; } - + // Special rubriques else if ($param == 'meme_parent') { $req_where[] = "$table.id_parent=\$id_parent"; @@ -319,7 +319,7 @@ function parser_boucle($texte, $id_parent) { else if ($param == 'branche') { $req_where[] = "$table.id_rubrique IN (\".calcul_branche(\$id_rubrique).\")"; } - + // Restriction de valeurs (implicite ou explicite) else if (ereg('^([a-zA-Z_]+) *((!?)(<=?|>=?|==?) *"?([^<>=!"]*))?"?$', $param, $match)) { // Variable comparee @@ -390,45 +390,48 @@ function parser_boucle($texte, $id_parent) { else if (($type == 'breves' OR $type == 'forums') AND $col == 'id_secteur') $col = 'id_rubrique'; - // Cas particulier : expressions de date redac - $datecompare='date'; - if (ereg("^(date|mois|annee|age|age_relatif|jour_relatif|annee_relatif)_redac(_redac)?$", $col, $regs)) { - $col_date = 'date_redac'; - $col = $regs[1]; - if ($regs[2]) - $datecompare='date_redac'; - } - // Cas particulier : expressions de date - if ($col == 'date') - $col = $table.$col_date; - else if ($col == 'mois') { - $col = "MONTH($table.$col_date)"; - $col_table = ''; - } - else if ($col == 'annee') { - $col = "YEAR($table.$col_date)"; - $col_table = ''; - } - else if ($col == 'age') { - $col = "(LEAST((UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP($table.$col_date))/86400, TO_DAYS(now())-TO_DAYS($table.$col_date), DAYOFMONTH(now())-DAYOFMONTH($table.$col_date)+30.4368*(MONTH(now())-MONTH($table.$col_date))+365.2422*(YEAR(now())-YEAR($table.$col_date))))"; - $col_table = ''; - } - else if ($col == 'age_relatif') { - $col = "LEAST((UNIX_TIMESTAMP('(\$$datecompare)')-UNIX_TIMESTAMP($table.$col_date))/86400, TO_DAYS('(\$$datecompare)')-TO_DAYS($table.$col_date), DAYOFMONTH('(\$$datecompare)')-DAYOFMONTH($table.$col_date)+30.4368*(MONTH('(\$$datecompare)')-MONTH($table.$col_date))+365.2422*(YEAR('(\$$datecompare)')-YEAR($table.$col_date)))"; - $col_table = ''; - } - else if ($col == 'jour_relatif') { - $col = "LEAST(TO_DAYS('(\$$datecompare)')-TO_DAYS($table.$col_date), DAYOFMONTH('(\$$datecompare)')-DAYOFMONTH($table.$col_date)+30.4368*(MONTH('(\$$datecompare)')-MONTH($table.$col_date))+365.2422*(YEAR('(\$$datecompare)')-YEAR($table.$col_date)))"; - $col_table = ''; - } - else if ($col == 'mois_relatif') { - $col = "(MONTH('(\$$datecompare)')-MONTH($table.$col_date)+12*(YEAR('(\$$datecompare)')-YEAR($table.$col_date)))"; - $col_table = ''; - } - else if ($col == 'annee_relatif') { - $col = "YEAR('(\$$datecompare)')-YEAR($table.$col_date)"; - $col_table = ''; + if (ereg("^(date|mois|annee|age|age_relatif|jour_relatif|mois_relatif|annee_relatif)(_redac)?$", $col, $regs)) { + $col = $regs[1]; + if ($regs[2]) { + $date_orig = "$table.date_redac"; + $date_compare = 'date_redac'; + } + else { + $date_orig = "$table.$col_date"; + $date_compare = 'date'; + } + + if ($col == 'date') + $col = $date_orig; + else if ($col == 'mois') { + $col = "MONTH($date_orig)"; + $col_table = ''; + } + else if ($col == 'annee') { + $col = "YEAR($date_orig)"; + $col_table = ''; + } + else if ($col == 'age') { + $col = "(LEAST((UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP($date_orig))/86400, TO_DAYS(now())-TO_DAYS($date_orig), DAYOFMONTH(now())-DAYOFMONTH($date_orig)+30.4368*(MONTH(now())-MONTH($date_orig))+365.2422*(YEAR(now())-YEAR($date_orig))))"; + $col_table = ''; + } + else if ($col == 'age_relatif') { + $col = "LEAST((UNIX_TIMESTAMP('\$$date_compare')-UNIX_TIMESTAMP($date_orig))/86400, TO_DAYS('\$$date_compare')-TO_DAYS($date_orig), DAYOFMONTH('\$$date_compare')-DAYOFMONTH($date_orig)+30.4368*(MONTH('\$$date_compare')-MONTH($date_orig))+365.2422*(YEAR('\$$date_compare')-YEAR($date_orig)))"; + $col_table = ''; + } + else if ($col == 'jour_relatif') { + $col = "LEAST(TO_DAYS('\$$date_compare')-TO_DAYS($date_orig), DAYOFMONTH('\$$date_compare')-DAYOFMONTH($date_orig)+30.4368*(MONTH('\$$date_compare')-MONTH($date_orig))+365.2422*(YEAR('\$$date_compare')-YEAR($date_orig)))"; + $col_table = ''; + } + else if ($col == 'mois_relatif') { + $col = "(MONTH('\$$date_compare')-MONTH($date_orig)+12*(YEAR('\$$date_compare')-YEAR($date_orig)))"; + $col_table = ''; + } + else if ($col == 'annee_relatif') { + $col = "YEAR('\$$date_compare')-YEAR($date_orig)"; + $col_table = ''; + } } if ($type == 'forums' AND ($col == 'id_parent' OR $col == 'id_forum')) @@ -448,7 +451,7 @@ function parser_boucle($texte, $id_parent) { if ($match[3] == '!') $where = "NOT ($where)"; $req_where[] = $where; } - + // Selection du classement else if (ereg('^par[[:space:]]+([^}]*)$', $param, $match)) { $tri = trim($match[1]); @@ -523,7 +526,7 @@ function parser_boucle($texte, $id_parent) { $req_where[] = "$table.statut='publie'"; $req_group = " GROUP BY $table.$id_objet"; break; - + case 'syndic_articles': $req_select[]='syndic.nom_site AS nom_site'; $req_select[]='syndic.url_site AS url_site'; @@ -698,7 +701,7 @@ function parser_champs_etendus($texte) { $champ->fonctions[] = $f; } } - + if ($fonctions) { $fonctions = explode('|', substr($fonctions, 1)); reset($fonctions); @@ -722,7 +725,7 @@ function parser_champs_etendus($texte) { break; } } - return $result; + return $result; } function parser_texte($texte, $id_boucle) { @@ -1351,12 +1354,13 @@ function calculer_champ($id_champ, $id_boucle, $nom_var) break; case 'DATE': - $code = "\$GLOBALS['date']"; // uniquement hors-boucles, pour la date passee dans l'URL ou le contexte inclusion + // Uniquement hors-boucles, pour la date passee dans l'URL ou le contexte inclusion + $code = "\$contexte['date']"; break; case 'DATE_NOUVEAUTES': $milieu = "if (lire_meta('quoi_de_neuf') == 'oui' AND lire_meta('majnouv')) - \$$nom_var = date('Y-m-d H:i:s', lire_meta('majnouv')); + \$$nom_var = normaliser_date(lire_meta('majnouv')); else \$$nom_var = \"'0000-00-00'\"; "; @@ -2070,7 +2074,7 @@ function calculer_boucle($id_boucle, $prefix_boucle) // // Fermeture de la boucle spip_fetch_array et liberation des resultats // - + if ($flag_parties) { $texte .= ' } @@ -2123,7 +2127,7 @@ function calculer_texte($texte) if (ereg("^([_0-9a-zA-Z]+)[[:space:]]*(=[[:space:]]*([^}]+))?$", $param, $args)) { $var = $args[1]; $val = $args[3]; - if ($val) + if ($val) $code .= " \$retour .= '\$contexte_inclus[$var] = \'".addslashes($val)."\'; ';\n"; else $code .= " \$retour .= '\$contexte_inclus[$var] = \''.addslashes(\$contexte[$var]).'\'; ';\n"; @@ -2269,7 +2273,7 @@ function calculer_squelette($squelette, $fichier) { $texte .= "\n\n"; } } - + // Calculer le code PHP de la racine $texte .= "function $func(\$contexte) {\n"; $texte .= " global \$pile_boucles, \$id_instance_cond;\n \$pile_boucles = Array();\n \$id_instance_cond = -1;\n"; // pour #TOTAL_BOUCLE diff --git a/inc-calcul.php3 b/inc-calcul.php3 index 41acf92b9a..a56aaaddb4 100644 --- a/inc-calcul.php3 +++ b/inc-calcul.php3 @@ -312,7 +312,7 @@ function executer_squelette($squelette, $contexte) { } // L'inclusion du squelette permet de definir les fonctions associees - // aux boucles, et de recuperer le nom de la fonction principale + // aux boucles, et de recuperer le nom de la fonction principale include($squelette_cache); // Si le squelette compile est vide, pour une raison inconnue @@ -430,6 +430,7 @@ function calculer_page_globale($fond) { global $fichier_requete; global $id_rubrique_fond; + // Generer le contexte $contexte = ''; $contexte_defaut = array('id_parent', 'id_rubrique', 'id_article', 'id_auteur', 'id_breve', 'id_forum', 'id_secteur', 'id_syndic', 'id_syndic_article', 'id_mot', 'id_groupe', 'id_document'); @@ -439,6 +440,7 @@ function calculer_page_globale($fond) { $contexte[$val] = (int) $GLOBALS[$val]; } } + if ($GLOBALS['date']) $contexte['date'] = normaliser_date($GLOBALS['date']); // Calcul de la rubrique associee a la requete // (selection de squelette specifique) diff --git a/spip_image.php3 b/spip_image.php3 index 3bdbfe6a7c..9164ff2f59 100644 --- a/spip_image.php3 +++ b/spip_image.php3 @@ -291,12 +291,12 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document, $doc_vignette='', // // Creer une vignette automatiquement // - $creer_preview=lire_meta("creer_preview"); - $taille_preview=lire_meta("taille_preview"); + $creer_preview = lire_meta("creer_preview"); + $taille_preview = lire_meta("taille_preview"); $gd_formats = lire_meta("gd_formats"); + $format_img = strtolower(substr($dest_path, strrpos($dest_path,".")+1, strlen($dest_path))); if ($format_img == "jpeg") $format_img == "jpg"; - if ($taille_preview < 10) $taille_preview = 120; if ($mode == 'document' AND $format_img AND ereg($format_img, $gd_formats) AND $creer_preview == 'oui') { -- GitLab