From dc9eba7dcfd8859b10a81ef0a1f07f379c866cb8 Mon Sep 17 00:00:00 2001 From: Matthieu Marcillaud <marcimat@rezo.net> Date: Sun, 3 Feb 2008 10:49:48 +0000 Subject: [PATCH] =?UTF-8?q?Corrections=20PostGreSQL=20-=20certains=20retou?= =?UTF-8?q?rs=20de=20!$requeter=20=C3=A9taient=20mal=20plac=C3=A9s=20-=20u?= =?UTF-8?q?n=20argument=20de=20la=20fonction=20spip=5Fpg=5Fcountsel()=20n'?= =?UTF-8?q?=C3=A9tait=20pas=20=C3=A0=20sa=20place?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/req/pg.php | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/ecrire/req/pg.php b/ecrire/req/pg.php index a7af6689d2..f3c117b4d3 100644 --- a/ecrire/req/pg.php +++ b/ecrire/req/pg.php @@ -98,7 +98,7 @@ $GLOBALS['spip_pg_functions_1'] = array( // Par ou ca passe une fois les traductions faites // http://doc.spip.org/@spip_pg_trace_query -function spip_pg_trace_query($query, $serveur='',$requeter=true) +function spip_pg_trace_query($query, $serveur='') { $connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0]; $prefixe = $connexion['prefixe']; @@ -274,7 +274,7 @@ function spip_pg_select($select, $from, $where='', $having = join("\n\tAND ", array_map('calculer_pg_where', $having)); } $from = spip_pg_from($from, $prefixe); - $q = "SELECT ". $select + $query = "SELECT ". $select . (!$from ? '' : "\nFROM $from") . (!$where ? '' : ("\nWHERE " . (!is_array($where) ? calculer_pg_where($where) : (join("\n\tAND ", array_map('calculer_pg_where', $where)))))) . spip_pg_groupby($groupby, $from, $select) @@ -288,12 +288,15 @@ function spip_pg_select($select, $from, $where='', if ($requeter && $GLOBALS['var_mode'] == 'debug') { include_spip('public/debug'); - boucle_debug_requete($q); + boucle_debug_requete($query); } - if (!($res = spip_pg_trace_query($q, $serveur, $requeter))) { + // renvoyer la requete inerte si demandee + if (!$requeter) return $query; + + if (!($res = spip_pg_trace_query($query, $serveur))) { include_spip('public/debug'); - erreur_requete_boucle($q, 0, 0); + erreur_requete_boucle($query, 0, 0); } return $res; @@ -517,13 +520,14 @@ function spip_pg_fetch($res, $t='', $serveur='',$requeter=true) { if ($res) $res = pg_fetch_array($res, NULL, PGSQL_ASSOC); return $res; } - + // http://doc.spip.org/@spip_pg_countsel function spip_pg_countsel($from = array(), $where = array(), - $groupby=array(), $limit='', $having = array(), $serveur='',$requeter=true) + $groupby=array(), $limit='', $sousrequete = '', + $having = array(), $serveur='',$requeter=true) { $r = spip_pg_select('COUNT(*)', $from, $where, - $groupby, '', $limit, $sousrequete, $having, '','', $serveur, $requeter); + $groupby, '', $limit, $having, $serveur, $requeter); if ($r && $requeter) list($r) = pg_fetch_array($r, NULL, PGSQL_NUM); return $r; } @@ -546,10 +550,14 @@ function spip_pg_delete($table, $where='', $serveur='',$requeter=true) { $link = $connexion['link']; $db = $connexion['db']; if ($prefixe) $table = preg_replace('/^spip/', $prefixe, $table); - return spip_pg_trace_query( - calculer_pg_expression('DELETE FROM', $table, ',') - . calculer_pg_expression('WHERE', $where, 'AND'), - $serveur, $requeter); + + $query = calculer_pg_expression('DELETE FROM', $table, ',') + . calculer_pg_expression('WHERE', $where, 'AND'); + + // renvoyer la requete inerte si demandee + if (!$requeter) return $query; + + return spip_pg_trace_query($query, $serveur); } // http://doc.spip.org/@spip_pg_insert @@ -611,11 +619,14 @@ function spip_pg_update($table, $champs, $where='', $desc='', $serveur='',$reque $set[] = $champ . '=' . $val; } - return spip_pg_trace_query( - calculer_pg_expression('UPDATE', $table, ',') + $query = calculer_pg_expression('UPDATE', $table, ',') . calculer_pg_expression('SET', $set, ',') - . calculer_pg_expression('WHERE', $where, 'AND'), - $serveur, $requeter); + . calculer_pg_expression('WHERE', $where, 'AND'); + + // renvoyer la requete inerte si demandee + if (!$requeter) return $query; + + return spip_pg_trace_query($query, $serveur); } // idem, mais les valeurs sont des constantes a mettre entre apostrophes -- GitLab