From 21fcb7d2daebc3101510a1fe1e48225f079e5cbd Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Fri, 30 Sep 2005 22:30:50 +0000
Subject: [PATCH] trois patches : - "0" n'est pas vide (pif) - verifier que les
 champs de date existent avant de trier 'par date', etc (pif) - le critere
 {mode=image} etait casse (jdegreef) - http://forum.spip.org/fr_177334.html

---
 ecrire/articles.php3     |  2 +-
 ecrire/auteur_infos.php3 |  4 +++-
 ecrire/breves_voir.php3  |  2 +-
 ecrire/mots_edit.php3    |  2 +-
 ecrire/sites.php3        |  2 +-
 inc-compilo.php3         | 28 +++++++++++++++-------------
 inc-criteres.php3        | 28 ++++++++++++++++------------
 7 files changed, 38 insertions(+), 30 deletions(-)

diff --git a/ecrire/articles.php3 b/ecrire/articles.php3
index 1c6fed582d..a8d9652ee1 100644
--- a/ecrire/articles.php3
+++ b/ecrire/articles.php3
@@ -209,7 +209,7 @@ if ($changer_virtuel && $flag_editable) {
 	$result = spip_query($query);
 }
 
-if ($titre && !$ajout_forum && $flag_editable) {
+if (strval($titre)!=='' AND !$ajout_forum AND $flag_editable) {
 	$champs = array('surtitre', 'titre', 'soustitre', 'descriptif', 'nom_site', 'url_site', 'chapo', 'texte', 'ps');
 	$champs_version = array();
 	foreach ($champs as $nom_champ) {
diff --git a/ecrire/auteur_infos.php3 b/ecrire/auteur_infos.php3
index a9e0f2030d..8873e4874c 100644
--- a/ecrire/auteur_infos.php3
+++ b/ecrire/auteur_infos.php3
@@ -78,7 +78,9 @@ if ($id_auteur) {
 //
 // Modification (et creation si besoin)
 //
-if ($nom) { // si on poste un nom, c'est qu'on modifie une fiche auteur
+
+// si on poste un nom, c'est qu'on modifie une fiche auteur
+if (strval($nom)!='') {
 	$auteur['nom'] = corriger_caracteres($nom);
 
 	// login et mot de passe
diff --git a/ecrire/breves_voir.php3 b/ecrire/breves_voir.php3
index 1bfffbc7bd..8716abdc55 100644
--- a/ecrire/breves_voir.php3
+++ b/ecrire/breves_voir.php3
@@ -42,7 +42,7 @@ if (($id_breve == 0) AND ($new == "oui")) {
 }
 
 
-if ($titre AND $modifier_breve) {
+if (strval($titre)!='' AND $modifier_breve) {
 	$titre = addslashes($titre);
 	$texte = addslashes($texte);
 	$lien_titre = addslashes($lien_titre);
diff --git a/ecrire/mots_edit.php3 b/ecrire/mots_edit.php3
index 0ea3c2895d..42ee8a2c75 100644
--- a/ecrire/mots_edit.php3
+++ b/ecrire/mots_edit.php3
@@ -28,7 +28,7 @@ if ($connect_statut == '0minirezo' AND $connect_toutes_rubriques) {
 		$result = spip_query($query);
 	}
 
-	if ($titre_mot) {
+	if (strval($titre_mot)!='') {
 		if ($new == 'oui' && $id_groupe) {
 		  $id_mot = spip_abstract_insert("spip_mots", '(id_groupe)', "($id_groupe)");
 
diff --git a/ecrire/sites.php3 b/ecrire/sites.php3
index e74e65de23..4d056ce127 100644
--- a/ecrire/sites.php3
+++ b/ecrire/sites.php3
@@ -118,7 +118,7 @@ if ($nouveau_statut AND $flag_administrable) {
 	}
 }
 
-if ($nom_site AND $modifier_site == 'oui' AND $flag_editable) {
+if (strval($nom_site)!='' AND $modifier_site == 'oui' AND $flag_editable) {
 	$nom_site = addslashes($nom_site);
 	$url_site = addslashes($url_site);
 	$descriptif = addslashes($descriptif);
diff --git a/inc-compilo.php3 b/inc-compilo.php3
index 807d3c50de..bf481205b7 100644
--- a/inc-compilo.php3
+++ b/inc-compilo.php3
@@ -487,20 +487,22 @@ function compile_cas($tableau, $descr, &$boucles, $id_boucle='') {
 		  erreur_squelette(_T('zbug_info_erreur_squelette'));
 		} // switch
 
-		if ($avant == "''") $avant = '';
-		if ($apres == "''") $apres = '';
-		if ($avant||$apres||($altern!="''"))
-		  {
-		    $t = '$t' . $descr['niv'];
-		    $res = (!$avant ? "" : "$avant . ") . 
-		      $t .
-		      (!$apres ? "" : " . $apres");
-		    $code = "(($t = $code) ?\n\t$tab($res) :\n\t$tab($altern))";
-		  }
+		if ($avant == "''")
+			$avant = '';
+		if ($apres == "''")
+			$apres = '';
+		if ($avant||$apres||($altern!="''")) {
+			$t = '$t' . $descr['niv'];
+			$res = (!$avant ? "" : "$avant . ") . 
+				$t .
+				(!$apres ? "" : " . $apres");
+			$code = "((strval($t = $code)!='')"
+				." ?\n\t$tab($res) :\n\t$tab($altern))";
+		}
 		if ($code != "''")
-		  $codes[]= (($GLOBALS['var_mode_affiche'] == 'validation') ?
-			     "array(" . $p->ligne . ", '$commentaire', $code)"
-			     : (($GLOBALS['var_mode_affiche'] == 'code') ?
+			$codes[]= (($GLOBALS['var_mode_affiche'] == 'validation') ?
+				"array(" . $p->ligne . ", '$commentaire', $code)"
+				: (($GLOBALS['var_mode_affiche'] == 'code') ?
 				"\n// $commentaire\n$code" :
 				$code));
 	} // foreach
diff --git a/inc-criteres.php3 b/inc-criteres.php3
index 74e4d1d2bb..8c9d3a9af2 100644
--- a/inc-criteres.php3
+++ b/inc-criteres.php3
@@ -232,9 +232,10 @@ function critere_parinverse($idb, &$boucles, $crit, $sens) {
 		  $boucle->select[] = $texte . " AS $as";
 		  $order = "'$as'";
 		}
-		else if ($par == 'date') {
-		      $order = "'".$boucle->id_table.".".
-			$GLOBALS['table_date'][$boucle->type_requete]
+		else if ($par == 'date'
+		AND isset($GLOBALS['table_date'][$boucle->type_requete])) {
+			$order = "'".$boucle->id_table."."
+			.$GLOBALS['table_date'][$boucle->type_requete]
 			."'";
 		}
 		// par champ. Verifier qu'ils sont presents.
@@ -309,8 +310,8 @@ function critere_agenda($idb, &$boucles, $crit)
 
 	$parent = $boucles[$idb]->id_parent;
 
-	// les valeur $date et $type doivent etre connus à la compilation
-	// autrement dit ne pas être des champs
+	// les valeurs $date et $type doivent etre connus a la compilation
+	// autrement dit ne pas etre des champs
 
 	$date = array_shift($params);
 	$date = $date[0]->texte;
@@ -514,15 +515,18 @@ function calculer_critere_infixe($idb, &$boucles, $crit) {
 	  $col = 'id_rubrique';
 
 	// Cas particulier : expressions de date
-	else if (ereg("^(date|mois|annee|heure|age|age_relatif|jour_relatif|mois_relatif|annee_relatif)(_redac)?$", $col, $regs)) {
-	  list($col, $col_table) =
-	    calculer_critere_infixe_date($idb, $boucles, $regs[1], $regs[2]);
-	} 
+	else if ($table_date[$type]
+	AND preg_match(",^(date|mois|annee|heure|age|"
+	."age_relatif|jour_relatif|mois_relatif|annee_relatif)(_redac)?$,",
+	$col, $regs)) {
+		list($col, $col_table) =
+		calculer_critere_infixe_date($idb, $boucles, $regs[1], $regs[2]);
+	}
 
 	// HACK : selection des documents selon mode 'image'
-	// (a creer en dur dans la base)
-	else if ($type == 'documents' AND $col == 'mode' AND $val[0] == "'image'")
-	  $val[0] = "'vignette'";
+	// => on cherche en fait 'vignette'
+	else if ($type == 'documents' AND $col == 'mode')
+		$val[0] = str_replace('image', 'vignette', $val[0]);
 
 	else  {
 	  $nom = $table_des_tables[$type];
-- 
GitLab