From 032cf588c25a436aa7da8f05fa3bc3b3c0a322d5 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Sat, 6 Oct 2007 09:21:12 +0000 Subject: [PATCH] =?UTF-8?q?Tiens,=20il=20y=20a=20encore=20des=20spip=5Fque?= =?UTF-8?q?ry=20sur=20INSERT.=20Deux=20de=20moins.=20Et=20un=20UPDATE=20de?= =?UTF-8?q?=20moins.=20Et=20am=C3=A9liorations=20du=20traducteur=20MySQL->?= =?UTF-8?q?PG,=20qui=20traite=20les=20fonctions=20SQL=20plus=20intelligeme?= =?UTF-8?q?nt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/action/cookie.php | 2 +- ecrire/action/editer_auteur.php | 4 ++-- ecrire/action/editer_mot.php | 2 +- ecrire/base/db_pg.php | 12 ++++++++---- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/ecrire/action/cookie.php b/ecrire/action/cookie.php index 8d81f5296f..52072be7a0 100644 --- a/ecrire/action/cookie.php +++ b/ecrire/action/cookie.php @@ -100,7 +100,7 @@ function action_cookie_dist() { $prefs = ($row_auteur['prefs']) ? unserialize($row_auteur['prefs']) : array(); $prefs['cnx'] = $session_remember; - spip_query("UPDATE spip_auteurs SET prefs = " . _q(serialize($prefs)) . " WHERE id_auteur = " . $row_auteur['id_auteur']); + sql_updateq('spip_auteurs', array('prefs' => serialize($prefs)), "id_auteur = " . $row_auteur['id_auteur']); } } diff --git a/ecrire/action/editer_auteur.php b/ecrire/action/editer_auteur.php index abadbf9cbd..ee248ad588 100644 --- a/ecrire/action/editer_auteur.php +++ b/ecrire/action/editer_auteur.php @@ -202,13 +202,13 @@ function action_legender_auteur_post($r) { sql_delete("spip_auteurs_rubriques", "id_auteur="._q($id_auteur)); foreach (array_unique($restreintes) as $id_rub) if ($id_rub = intval($id_rub)) // si '0' on ignore - sql_insert('spip_auteurs_rubriques', "(id_auteur,id_rubrique)", "($id_auteur,$id_rub)"); + sql_insertq('spip_auteurs_rubriques', array('id_auteur' => $id_auteur, 'id_rubrique'=>$id_rub)); } // Lier a un article if ($id_article = intval(_request('lier_id_article')) AND autoriser('modifier', 'article', $id_article)) { - spip_query("INSERT spip_auteurs_articles (id_article,id_auteur) VALUES ($id_article,$id_auteur)"); + sql_insertq('spip_auteurs_articles', array('id_article' => $id_article, 'id_auteur' =>$id_auteur)); } // Notifications, gestion des revisions, reindexation... diff --git a/ecrire/action/editer_mot.php b/ecrire/action/editer_mot.php index 1b359cc2ca..2da3649978 100644 --- a/ecrire/action/editer_mot.php +++ b/ecrire/action/editer_mot.php @@ -49,7 +49,7 @@ function action_editer_mot_post($r) // inserer_mot("spip_mots_$table", $table_id, $id_objet, $nouv_mot); $result = sql_countsel("spip_mots_$table", "id_mot=".intval($nouv_mot)." AND $table_id=$id_objet"); if (!$result) - spip_query("INSERT INTO spip_mots_$table (id_mot,$table_id) VALUES ("._q($nouv_mot).", $id_objet)"); + sql_insertq("spip_mots_$table", array('id_mot' => $nouv_mot, $table_id =>$id_objet)); } // Notifications, gestion des revisions, reindexation... diff --git a/ecrire/base/db_pg.php b/ecrire/base/db_pg.php index 0893681910..30902ac325 100644 --- a/ecrire/base/db_pg.php +++ b/ecrire/base/db_pg.php @@ -238,14 +238,18 @@ function spip_pg_groupby($groupby, $from, $select) if ($join OR $groupby) $join = !is_array($select) ? $select : join(", ", $select); if ($join) { $join = str_replace('DISTINCT ','',$join); - $join = preg_replace('/(SUM|COUNT|MAX|MIN|UPPER)\([^)]+\)(\s+AS\s+\w+)\s*,?/i','', $join); - $join = preg_replace('/\w+\(\s*([^(),\']*),\s*\'[^\']*\'[^)]*\)(\s+AS\s+\w+)\s*,?/i','\\1', $join); - $join = preg_replace('/(SUM|COUNT|MAX|MIN|UPPER)\([^)]+\)\s*,?/i','', $join); + // fct SQL sur colonne et constante apostrophee ==> la colonne + $join = preg_replace('/\w+\(\s*([^(),\']*),\s*\'[^\']*\'[^)]*\)/','\\1', $join); + // resultat d'agregat ne sont pas a mettre dans le groupby + $join = preg_replace('/(SUM|COUNT|MAX|MIN|UPPER|CAST)\([^)]+\)(\s*AS\s+\w+)\s*,?/i','', $join); + // idem sans AS (fetch numerique) + $join = preg_replace('/(SUM|COUNT|MAX|MIN|UPPER|CAST)\([^)]+\)\s*,?/i','', $join); + // ne reste plus que les vrais colonnes, et parfois 1 virgule if (preg_match('/^(.*),\s*$/',$join,$m)) $join=$m[1]; -# if (preg_match('/^(.*)\b[*]\b(.*)$/',$join,$m)) $join=$m[1].$m[2]; } if ($join) $groupby = $groupby ? "$groupby, $join" : $join; if (!$groupby) return ''; + $groupby = spip_pg_frommysql($groupby); $groupby = preg_replace('/\s+AS\s+\w+\s*/','', $groupby); -- GitLab