From 1e8846214702409ceb81588bc0bac71836c0b185 Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Fri, 25 Apr 2003 03:36:04 +0000
Subject: [PATCH] annule et remplace les trucs de date

---
 ecrire/inc_version.php3 |  1 +
 inc-calcul-squel.php3   | 25 +++++++++++++++++--------
 inc-calcul.php3         | 15 +++++++++++++--
 inc-public-global.php3  |  5 +----
 nouveautes-dist.html    |  4 ++--
 5 files changed, 34 insertions(+), 16 deletions(-)

diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3
index 6f995999c9..f54bcb2738 100644
--- a/ecrire/inc_version.php3
+++ b/ecrire/inc_version.php3
@@ -195,6 +195,7 @@ $flag_ImageJpeg = function_exists("ImageJpeg");
 $flag_ImagePng = function_exists("ImagePng");
 $flag_multibyte = function_exists("mb_encode_mimeheader");
 $flag_iconv = function_exists("iconv");
+$flag_strtotime = function_exists("strtotime");
 
 $flag_gd = $flag_ImageGif || $flag_ImageJpeg || $flag_ImagePng;
 
diff --git a/inc-calcul-squel.php3 b/inc-calcul-squel.php3
index 09c53554a4..5b83b37693 100644
--- a/inc-calcul-squel.php3
+++ b/inc-calcul-squel.php3
@@ -409,15 +409,24 @@ function parser_boucle($texte, $id_parent) {
 							$col_table = '';
 						}
 						else if ($col == 'age') {
-							$col = "(LEAST((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 = "(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((TO_DAYS('(\$date)')-TO_DAYS($table.$col_date)),(DAYOFMONTH('(\$date)')-DAYOFMONTH($table.$col_date))+30.4368*(MONTH('(\$date)')-MONTH($table.$col_date))+365.2422*(YEAR('(\$date)')-YEAR($table.$col_date))))";
+							$col = "LEAST((UNIX_TIMESTAMP('(\$date)')-UNIX_TIMESTAMP($table.$col_date))/86400,
+TO_DAYS('(\$date)')-TO_DAYS($table.$col_date), DAYOFMONTH('(\$date)')-DAYOFMONTH($table.$col_date)+30.4368*(MONTH('(\$date)')-MONTH($table.$col_date))+365.2422*(YEAR('(\$date)')-YEAR($table.$col_date)))";
 							$col_table = '';
 						}
-						else if ($col == 'age_mail_nouv') {
-							$col = "(LEAST((TO_DAYS('(\$date_nouv)')-TO_DAYS($table.$col_date)),(DAYOFMONTH('(\$date_nouv)')-DAYOFMONTH($table.$col_date))+30.4368*(MONTH('(\$date_nouv)')-MONTH($table.$col_date))+365.2422*(YEAR('(\$date_nouv)')-YEAR($table.$col_date))))";
+						else if ($col == 'jour_relatif') {
+							$col = "LEAST(TO_DAYS('(\$date)')-TO_DAYS($table.$col_date), DAYOFMONTH('(\$date)')-DAYOFMONTH($table.$col_date)+30.4368*(MONTH('(\$date)')-MONTH($table.$col_date))+365.2422*(YEAR('(\$date)')-YEAR($table.$col_date)))";
+							$col_table = '';
+						}
+						else if ($col == 'mois_relatif') {
+							$col = "(MONTH('(\$date)')-MONTH($table.$col_date)+12*(YEAR('(\$date)')-YEAR($table.$col_date)))";
+							$col_table = '';
+						}
+						else if ($col == 'annee_relatif') {
+							$col = "YEAR('(\$date)')-YEAR($table.$col_date)";
 							$col_table = '';
 						}
 						else if ($col == 'age_redac') {
@@ -823,7 +832,7 @@ function parser($texte) {
 		'ID_ARTICLE', 'ID_RUBRIQUE', 'ID_BREVE', 'ID_FORUM', 'ID_PARENT', 'ID_SECTEUR', 'ID_DOCUMENT', 'ID_TYPE',
 		'ID_AUTEUR', 'ID_MOT', 'ID_SYNDIC_ARTICLE', 'ID_SYNDIC', 'ID_SIGNATURE', 'ID_GROUPE',
 		'TITRE', 'SURTITRE', 'SOUSTITRE', 'DESCRIPTIF', 'CHAPO', 'TEXTE', 'PS', 'NOTES', 'INTRODUCTION', 'MESSAGE',
-		'DATE', 'DATE_REDAC', 'DATE_MODIF', 'DATE_MAIL_NOUV', 'INCLUS',
+		'DATE', 'DATE_REDAC', 'DATE_MODIF', 'DATE_NOUVEAUTES', 'INCLUS',
 		'LESAUTEURS', 'EMAIL', 'NOM_SITE', 'LIEN_TITRE', 'URL_SITE', 'LIEN_URL', 'NOM', 'BIO', 'TYPE', 'PGP',
 		'FORMULAIRE_ECRIRE_AUTEUR', 'FORMULAIRE_FORUM', 'FORMULAIRE_SITE', 'PARAMETRES_FORUM', 'FORMULAIRE_RECHERCHE', 'RECHERCHE', 'FORMULAIRE_INSCRIPTION', 'FORMULAIRE_SIGNATURE',
 		'LOGO_MOT', 'LOGO_RUBRIQUE', 'LOGO_RUBRIQUE_NORMAL', 'LOGO_RUBRIQUE_SURVOL', 'LOGO_AUTEUR', 'LOGO_SITE',  'LOGO_BREVE', 'LOGO_BREVE_RUBRIQUE',  'LOGO_DOCUMENT', 'LOGO_ARTICLE', 'LOGO_ARTICLE_RUBRIQUE', 'LOGO_ARTICLE_NORMAL', 'LOGO_ARTICLE_SURVOL',
@@ -880,7 +889,7 @@ function parser($texte) {
 	}
 
 	// Dates : ajouter le vidage des dates egales a 00-00-0000
-	$c = array('DATE', 'DATE_REDAC', 'DATE_MODIF', 'DATE_MAIL_NOUV');
+	$c = array('DATE', 'DATE_REDAC', 'DATE_MODIF', 'DATE_NOUVEAUTES');
 	reset($c);
 	while (list(, $val) = each($c)) {
 		$champs_traitement[$val][] = 'vider_date';
@@ -1344,7 +1353,7 @@ function calculer_champ($id_champ, $id_boucle, $nom_var)
 		$code = "propre('- ')";
 		break;
 
-	case 'DATE_MAIL_NOUV':
+	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'));
 		else
@@ -1721,7 +1730,7 @@ function calculer_boucle($id_boucle, $prefix_boucle)
 	//
 
 	$texte .= "function $func".'($contexte) {
-	global $pile_boucles, $ptr_pile_boucles, $id_doublons, $fichier_cache, $requetes_cache, $syn_rubriques, $rubriques_publiques, $id_article_img, $date_nouv;
+	global $pile_boucles, $ptr_pile_boucles, $id_doublons, $fichier_cache, $requetes_cache, $syn_rubriques, $rubriques_publiques, $id_article_img;
 
 	';
 
diff --git a/inc-calcul.php3 b/inc-calcul.php3
index a22fcf89be..f666ce151b 100644
--- a/inc-calcul.php3
+++ b/inc-calcul.php3
@@ -429,6 +429,7 @@ function calculer_page_globale($fond) {
 	global $contexte;
 	global $fichier_requete;
 	global $id_rubrique_fond;
+	global $date;
 
 	$contexte = '';
 	$contexte_defaut = array('id_parent', 'id_rubrique', 'id_article', 'id_auteur',
@@ -439,8 +440,18 @@ function calculer_page_globale($fond) {
 			$contexte[$val] = (int) $GLOBALS[$val];
 		}
 	}
-	if ($GLOBALS["date"]) {
-		$contexte["date"] = $GLOBALS["date"];
+
+	// mettre la date eventuellement passee en globale au format MySQL
+	if ($date) {
+		if (ereg("^[12][0-9]{3}$", $date))
+			$date .= "-01-01";
+		else if (ereg("^[12][0-9]{3}[/-][01]?[0-9]$", $date))
+			$date = ereg_replace("/","-",$date)."-01";
+		else if ($GLOBALS['flag_strtotime']) {
+			if ($date_str = strtotime($date))
+				$date = date("Y-m-d H:i:s", $date_str);
+		}
+		$contexte['date'] = $date;
 	}
 
 	// Calcul de la rubrique associee a la requete
diff --git a/inc-public-global.php3 b/inc-public-global.php3
index 927673dbfa..3261bddb78 100644
--- a/inc-public-global.php3
+++ b/inc-public-global.php3
@@ -69,10 +69,6 @@ if ($ajout_forum) {
 	ajout_forum();
 }
 
-
-// date relative a l'envoi du mail nouveautes
-$GLOBALS['date_nouv'] = date('Y-m-d H:i:s', lire_meta('majnouv'));
-
 if (!$use_cache) {
 	$lastmodified = time();
 	if (($lastmodified - lire_meta('date_purge_cache')) > 24 * 3600) {
@@ -236,6 +232,7 @@ if (!$timeout AND lire_meta('quoi_de_neuf') == 'oui' AND $jours_neuf = lire_meta
 		unset ($sujet_nouveautes);
 		$fond = 'nouveautes';
 		$delais = 0;
+		$contexte_inclus = array('date' => date('Y-m-d H:i:s', $majnouv));
 		include(inclure_fichier($fond, $delais, $contexte_inclus));
 
 		// envoi
diff --git a/nouveautes-dist.html b/nouveautes-dist.html
index 0a71d51613..3f9d45dd6a 100644
--- a/nouveautes-dist.html
+++ b/nouveautes-dist.html
@@ -21,7 +21,7 @@ $mail_nouveautes = '
           -----------------
 
 ';
-<BOUCLE_nv1(ARTICLES){age_mail_nouv<=0}{par date}{inverse}{0,30}>
+<BOUCLE_nv1(ARTICLES){age_relatif<=0}{par date}{inverse}{0,30}>
 	$mail_nouveautes .= '[** (#TITRE|textebrut|texte_script) **]';
 	$mail_nouveautes .= "\n";
 	$mail_nouveautes .= '[par (#LESAUTEURS|textebrut|texte_script)] ';
@@ -41,7 +41,7 @@ $mail_nouveautes .= '
           ----------------
 
 ';
-<BOUCLE_nv2(BREVES){age_mail_nouv<=0}{par date}{inverse}{0,30}>
+<BOUCLE_nv2(BREVES){age_relatif<=0}{par date}{inverse}{0,30}>
 	$mail_nouveautes .= '[* (#TITRE|textebrut|texte_script) *]';
 	$mail_nouveautes .= '[ - (#DATE|affdate|texte_script)]'."\n\n";
 	$mail_nouveautes .= '[(#INTRODUCTION|textebrut|texte_script)]'."\n\n";
-- 
GitLab