Skip to content
Extraits de code Groupes Projets
Valider 696976d0 rédigé par Antoine Pitrou's avatar Antoine Pitrou
Parcourir les fichiers

corrections dates

parent 82885477
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -165,6 +165,22 @@ function antispam($texte) { ...@@ -165,6 +165,22 @@ function antispam($texte) {
// Date, heure, saisons // 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) { function vider_date($letexte) {
if (ereg("^0000-00-00", $letexte)) return ''; if (ereg("^0000-00-00", $letexte)) return '';
return $letexte; return $letexte;
......
...@@ -739,23 +739,6 @@ function email_valide($adresse) { ...@@ -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 // Traduction des textes de SPIP
// //
......
...@@ -241,7 +241,7 @@ function parser_boucle($texte, $id_parent) { ...@@ -241,7 +241,7 @@ function parser_boucle($texte, $id_parent) {
if (ereg('\#(PS)', $milieu)) { if (ereg('\#(PS)', $milieu)) {
$s .= ",$table.ps"; $s .= ",$table.ps";
} }
$req_select[] = $s; $req_select[] = $s;
} }
else $req_select[] = "$table.*"; else $req_select[] = "$table.*";
...@@ -304,7 +304,7 @@ function parser_boucle($texte, $id_parent) { ...@@ -304,7 +304,7 @@ function parser_boucle($texte, $id_parent) {
if ($param == 'inverse') { if ($param == 'inverse') {
if ($req_order) $req_order .= ' DESC'; if ($req_order) $req_order .= ' DESC';
} }
// Special rubriques // Special rubriques
else if ($param == 'meme_parent') { else if ($param == 'meme_parent') {
$req_where[] = "$table.id_parent=\$id_parent"; $req_where[] = "$table.id_parent=\$id_parent";
...@@ -319,7 +319,7 @@ function parser_boucle($texte, $id_parent) { ...@@ -319,7 +319,7 @@ function parser_boucle($texte, $id_parent) {
else if ($param == 'branche') { else if ($param == 'branche') {
$req_where[] = "$table.id_rubrique IN (\".calcul_branche(\$id_rubrique).\")"; $req_where[] = "$table.id_rubrique IN (\".calcul_branche(\$id_rubrique).\")";
} }
// Restriction de valeurs (implicite ou explicite) // Restriction de valeurs (implicite ou explicite)
else if (ereg('^([a-zA-Z_]+) *((!?)(<=?|>=?|==?) *"?([^<>=!"]*))?"?$', $param, $match)) { else if (ereg('^([a-zA-Z_]+) *((!?)(<=?|>=?|==?) *"?([^<>=!"]*))?"?$', $param, $match)) {
// Variable comparee // Variable comparee
...@@ -390,45 +390,48 @@ function parser_boucle($texte, $id_parent) { ...@@ -390,45 +390,48 @@ function parser_boucle($texte, $id_parent) {
else if (($type == 'breves' OR $type == 'forums') AND $col == 'id_secteur') else if (($type == 'breves' OR $type == 'forums') AND $col == 'id_secteur')
$col = 'id_rubrique'; $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 // Cas particulier : expressions de date
if ($col == 'date') if (ereg("^(date|mois|annee|age|age_relatif|jour_relatif|mois_relatif|annee_relatif)(_redac)?$", $col, $regs)) {
$col = $table.$col_date; $col = $regs[1];
else if ($col == 'mois') { if ($regs[2]) {
$col = "MONTH($table.$col_date)"; $date_orig = "$table.date_redac";
$col_table = ''; $date_compare = 'date_redac';
} }
else if ($col == 'annee') { else {
$col = "YEAR($table.$col_date)"; $date_orig = "$table.$col_date";
$col_table = ''; $date_compare = 'date';
} }
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))))"; if ($col == 'date')
$col_table = ''; $col = $date_orig;
} else if ($col == 'mois') {
else if ($col == 'age_relatif') { $col = "MONTH($date_orig)";
$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 = '';
$col_table = ''; }
} else if ($col == 'annee') {
else if ($col == 'jour_relatif') { $col = "YEAR($date_orig)";
$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 = '';
$col_table = ''; }
} else if ($col == 'age') {
else if ($col == 'mois_relatif') { $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 = "(MONTH('(\$$datecompare)')-MONTH($table.$col_date)+12*(YEAR('(\$$datecompare)')-YEAR($table.$col_date)))"; $col_table = '';
$col_table = ''; }
} else if ($col == 'age_relatif') {
else if ($col == 'annee_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 = "YEAR('(\$$datecompare)')-YEAR($table.$col_date)"; $col_table = '';
$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')) if ($type == 'forums' AND ($col == 'id_parent' OR $col == 'id_forum'))
...@@ -448,7 +451,7 @@ function parser_boucle($texte, $id_parent) { ...@@ -448,7 +451,7 @@ function parser_boucle($texte, $id_parent) {
if ($match[3] == '!') $where = "NOT ($where)"; if ($match[3] == '!') $where = "NOT ($where)";
$req_where[] = $where; $req_where[] = $where;
} }
// Selection du classement // Selection du classement
else if (ereg('^par[[:space:]]+([^}]*)$', $param, $match)) { else if (ereg('^par[[:space:]]+([^}]*)$', $param, $match)) {
$tri = trim($match[1]); $tri = trim($match[1]);
...@@ -523,7 +526,7 @@ function parser_boucle($texte, $id_parent) { ...@@ -523,7 +526,7 @@ function parser_boucle($texte, $id_parent) {
$req_where[] = "$table.statut='publie'"; $req_where[] = "$table.statut='publie'";
$req_group = " GROUP BY $table.$id_objet"; $req_group = " GROUP BY $table.$id_objet";
break; break;
case 'syndic_articles': case 'syndic_articles':
$req_select[]='syndic.nom_site AS nom_site'; $req_select[]='syndic.nom_site AS nom_site';
$req_select[]='syndic.url_site AS url_site'; $req_select[]='syndic.url_site AS url_site';
...@@ -698,7 +701,7 @@ function parser_champs_etendus($texte) { ...@@ -698,7 +701,7 @@ function parser_champs_etendus($texte) {
$champ->fonctions[] = $f; $champ->fonctions[] = $f;
} }
} }
if ($fonctions) { if ($fonctions) {
$fonctions = explode('|', substr($fonctions, 1)); $fonctions = explode('|', substr($fonctions, 1));
reset($fonctions); reset($fonctions);
...@@ -722,7 +725,7 @@ function parser_champs_etendus($texte) { ...@@ -722,7 +725,7 @@ function parser_champs_etendus($texte) {
break; break;
} }
} }
return $result; return $result;
} }
function parser_texte($texte, $id_boucle) { function parser_texte($texte, $id_boucle) {
...@@ -1351,12 +1354,13 @@ function calculer_champ($id_champ, $id_boucle, $nom_var) ...@@ -1351,12 +1354,13 @@ function calculer_champ($id_champ, $id_boucle, $nom_var)
break; break;
case 'DATE': 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; break;
case 'DATE_NOUVEAUTES': case 'DATE_NOUVEAUTES':
$milieu = "if (lire_meta('quoi_de_neuf') == 'oui' AND lire_meta('majnouv')) $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 else
\$$nom_var = \"'0000-00-00'\"; \$$nom_var = \"'0000-00-00'\";
"; ";
...@@ -2070,7 +2074,7 @@ function calculer_boucle($id_boucle, $prefix_boucle) ...@@ -2070,7 +2074,7 @@ function calculer_boucle($id_boucle, $prefix_boucle)
// //
// Fermeture de la boucle spip_fetch_array et liberation des resultats // Fermeture de la boucle spip_fetch_array et liberation des resultats
// //
if ($flag_parties) { if ($flag_parties) {
$texte .= ' $texte .= '
} }
...@@ -2123,7 +2127,7 @@ function calculer_texte($texte) ...@@ -2123,7 +2127,7 @@ function calculer_texte($texte)
if (ereg("^([_0-9a-zA-Z]+)[[:space:]]*(=[[:space:]]*([^}]+))?$", $param, $args)) { if (ereg("^([_0-9a-zA-Z]+)[[:space:]]*(=[[:space:]]*([^}]+))?$", $param, $args)) {
$var = $args[1]; $var = $args[1];
$val = $args[3]; $val = $args[3];
if ($val) if ($val)
$code .= " \$retour .= '\$contexte_inclus[$var] = \'".addslashes($val)."\'; ';\n"; $code .= " \$retour .= '\$contexte_inclus[$var] = \'".addslashes($val)."\'; ';\n";
else else
$code .= " \$retour .= '\$contexte_inclus[$var] = \''.addslashes(\$contexte[$var]).'\'; ';\n"; $code .= " \$retour .= '\$contexte_inclus[$var] = \''.addslashes(\$contexte[$var]).'\'; ';\n";
...@@ -2269,7 +2273,7 @@ function calculer_squelette($squelette, $fichier) { ...@@ -2269,7 +2273,7 @@ function calculer_squelette($squelette, $fichier) {
$texte .= "\n\n"; $texte .= "\n\n";
} }
} }
// Calculer le code PHP de la racine // Calculer le code PHP de la racine
$texte .= "function $func(\$contexte) {\n"; $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 $texte .= " global \$pile_boucles, \$id_instance_cond;\n \$pile_boucles = Array();\n \$id_instance_cond = -1;\n"; // pour #TOTAL_BOUCLE
......
...@@ -312,7 +312,7 @@ function executer_squelette($squelette, $contexte) { ...@@ -312,7 +312,7 @@ function executer_squelette($squelette, $contexte) {
} }
// L'inclusion du squelette permet de definir les fonctions associees // 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); include($squelette_cache);
// Si le squelette compile est vide, pour une raison inconnue // Si le squelette compile est vide, pour une raison inconnue
...@@ -430,6 +430,7 @@ function calculer_page_globale($fond) { ...@@ -430,6 +430,7 @@ function calculer_page_globale($fond) {
global $fichier_requete; global $fichier_requete;
global $id_rubrique_fond; global $id_rubrique_fond;
// Generer le contexte
$contexte = ''; $contexte = '';
$contexte_defaut = array('id_parent', 'id_rubrique', 'id_article', 'id_auteur', $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'); '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) { ...@@ -439,6 +440,7 @@ function calculer_page_globale($fond) {
$contexte[$val] = (int) $GLOBALS[$val]; $contexte[$val] = (int) $GLOBALS[$val];
} }
} }
if ($GLOBALS['date']) $contexte['date'] = normaliser_date($GLOBALS['date']);
// Calcul de la rubrique associee a la requete // Calcul de la rubrique associee a la requete
// (selection de squelette specifique) // (selection de squelette specifique)
......
...@@ -291,12 +291,12 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document, $doc_vignette='', ...@@ -291,12 +291,12 @@ function ajout_doc($orig, $source, $dest, $mode, $id_document, $doc_vignette='',
// //
// Creer une vignette automatiquement // Creer une vignette automatiquement
// //
$creer_preview=lire_meta("creer_preview"); $creer_preview = lire_meta("creer_preview");
$taille_preview=lire_meta("taille_preview"); $taille_preview = lire_meta("taille_preview");
$gd_formats = lire_meta("gd_formats"); $gd_formats = lire_meta("gd_formats");
$format_img = strtolower(substr($dest_path, strrpos($dest_path,".")+1, strlen($dest_path))); $format_img = strtolower(substr($dest_path, strrpos($dest_path,".")+1, strlen($dest_path)));
if ($format_img == "jpeg") $format_img == "jpg"; if ($format_img == "jpeg") $format_img == "jpg";
if ($taille_preview < 10) $taille_preview = 120; if ($taille_preview < 10) $taille_preview = 120;
if ($mode == 'document' AND $format_img AND ereg($format_img, $gd_formats) AND $creer_preview == 'oui') { if ($mode == 'document' AND $format_img AND ereg($format_img, $gd_formats) AND $creer_preview == 'oui') {
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter