From e3a3145f87d5a21215951d3dd2d07dde4872fab7 Mon Sep 17 00:00:00 2001
From: Matthieu Marcillaud <marcimat@rezo.net>
Date: Thu, 28 Feb 2008 14:35:03 +0000
Subject: [PATCH] =?UTF-8?q?-=20Eviter=20que=20SQLite=202.x=20se=20m=C3=A9l?=
 =?UTF-8?q?ange=20les=20pinceaux=20entre=20REGEXP=20et=20REGEXP=5FREPLACE?=
 =?UTF-8?q?=20(fonction=20SQLite=20renomm=C3=A9e=20ici=20en=20PREG=5FREPLA?=
 =?UTF-8?q?CE)=20lorsqu'il=20calcule=20l'=C3=A9criture=20de=20la=20requete?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/exec/auteurs.php         | 21 ++++++++++++++++++---
 ecrire/req/sqlite_fonctions.php | 21 ++++++++++++---------
 ecrire/req/sqlite_generique.php |  2 +-
 3 files changed, 31 insertions(+), 13 deletions(-)

diff --git a/ecrire/exec/auteurs.php b/ecrire/exec/auteurs.php
index 5c628857e3..d7c473e618 100644
--- a/ecrire/exec/auteurs.php
+++ b/ecrire/exec/auteurs.php
@@ -322,15 +322,30 @@ function requete_auteurs($tri, $statut, $recherche=NULL)
 	
 	case 'nom':
 	default:
-		$sql_sel = ", ".sql_multi ("nom", $spip_lang);
+		$sql_sel = sql_multi ("nom", $spip_lang);
 		$sql_order = "multi";
 	}
 	
 	//
 	// La requete de base est tres sympa
 	// (pour les visiteurs, ca postule que les messages concernent des articles)
-	
-	return sql_select("							aut.id_auteur AS id_auteur,							aut.statut AS statut,								aut.nom_site AS site, aut.nom AS nom,								UPPER(aut.nom) AS unom,							COUNT(lien.id_article) AS compteur							$sql_sel									", "spip_auteurs as aut " . ($visit ?		 			"LEFT JOIN spip_forum AS lien ON aut.id_auteur=lien.id_auteur " :		("LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur	 LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)")), $sql_visible . ($recherche ? " AND $recherche" : ''), "aut.statut, aut.nom_site, aut.nom, aut.id_auteur", $sql_order);
+	return sql_select(
+			array(
+				"aut.id_auteur AS id_auteur",
+				"aut.statut AS statut", 
+				"aut.nom_site AS site", 
+				"aut.nom AS nom", 
+				"UPPER(aut.nom) AS unom", 
+				"COUNT(lien.id_article) AS compteur",
+				$sql_sel),
+			"spip_auteurs AS aut " . ($visit 
+				? "LEFT JOIN spip_forum AS lien ON aut.id_auteur=lien.id_auteur " 
+				: ("LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur	 LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)")), 
+			$sql_visible . ($recherche 
+				? " AND $recherche" 
+				: ''),
+			"aut.statut, aut.nom_site, aut.nom, aut.id_auteur", 
+			$sql_order);
 }
 
 // http://doc.spip.org/@afficher_n_auteurs
diff --git a/ecrire/req/sqlite_fonctions.php b/ecrire/req/sqlite_fonctions.php
index 59cf248caf..0410162154 100644
--- a/ecrire/req/sqlite_fonctions.php
+++ b/ecrire/req/sqlite_fonctions.php
@@ -41,11 +41,13 @@ function _sqlite_init_functions(&$sqlite){
 		
 		'MD5'			=> array( 'md5'							,1),
 		'MONTH'			=> array( '_sqlite_func_month'			,1),
-	
+		
+		'PREG_REPLACE'	=> array( '_sqlite_func_preg_replace'	,3),	
+		
 		'RAND'			=> array( '_sqlite_func_rand'			,0), // sinon random() v2.4
 		'REGEXP'		=> array( '_sqlite_func_regexp_match'	,2), // critere REGEXP supporte a partir de v3.3.2
 		//'REGEXP_MATCH'	=> array( '_sqlite_func_regexp_match'	,2), // critere REGEXP supporte a partir de v3.3.2
-		'REGEXP_REPLACE'=> array( '_sqlite_func_regexp_replace'	,3),
+
 		'RIGHT'			=> array( '_sqlite_func_right'			,2),
 #		'RTRIM'			=> array( 'rtrim'						,1), // present en theorie
 
@@ -170,6 +172,14 @@ function _sqlite_func_month ($d) {
 }
 
 
+
+function _sqlite_func_preg_replace($quoi, $cherche, $remplace) {
+	$return = preg_replace('%'.$cherche.'%', $remplace, $quoi);
+	#spip_log("preg_replace : $quoi, $cherche, $remplace, $return",'debug');
+	return $return;
+}
+
+
 function _sqlite_func_rand() {
   return rand();
 }
@@ -187,13 +197,6 @@ function _sqlite_func_regexp_match($cherche, $quoi) {
 }
 
 
-function _sqlite_func_regexp_replace($quoi, $cherche, $remplace) {
-	$return = preg_replace('%'.$cherche.'%', $remplace, $quoi);
-	#spip_log("regexp_replace : $quoi, $cherche, $remplace, $return",'debug');
-	return $return;
-}
-
-
 function _sqlite_func_to_days ($d) {
 	$result = date("z", _sqlite_func_unix_timestamp($d));
 	#spip_log("Passage avec TO_DAYS : $d, $result",'debug');
diff --git a/ecrire/req/sqlite_generique.php b/ecrire/req/sqlite_generique.php
index 9776c66448..e1a7f396a8 100644
--- a/ecrire/req/sqlite_generique.php
+++ b/ecrire/req/sqlite_generique.php
@@ -544,7 +544,7 @@ function spip_sqlite_listdbs($serveur='',$requeter=true) {
 
 
 function spip_sqlite_multi ($objet, $lang) {
-	$r = "REGEXP_REPLACE("
+	$r = "PREG_REPLACE("
 	  . $objet
 	  . ",'<multi>.*[\[]"
 	  . $lang
-- 
GitLab