From 7218a96d1c7868eca0c6741f6a8dba8a2a585367 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Mon, 6 Dec 2010 10:37:18 +0000 Subject: [PATCH] avant d'ajouter betement un 's' au type d'objet, on cherche d'abord a savoir si la table existe en realite (cf. paolo sur http://archives.rezo.net/archives/spip-zone.mbox/7PUHSSUJYU3ZEGEGCC4MM5XCSCBRKO43/ ) --- ecrire/base/connect_sql.php | 24 +++++++++++++++--------- ecrire/inc/modifier.php | 6 +++--- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/ecrire/base/connect_sql.php b/ecrire/base/connect_sql.php index 064d66f41e..434355a7cf 100644 --- a/ecrire/base/connect_sql.php +++ b/ecrire/base/connect_sql.php @@ -220,8 +220,9 @@ function spip_connect_ldap($serveur='') { return auth_ldap_connect($serveur); } -// 1 interface de abstract_sql a demenager dans base/abstract_sql a terme - +// Echappement d'une valeur (num, string, array) sous forme de chaine PHP +// pour un array(1,'a',"a'") renvoie la chaine "'1','a','a\''" +// Usage sql un peu deprecie, a remplacer par sql_quote() // http://doc.spip.org/@_q function _q ($a) { return (is_numeric($a)) ? strval($a) : @@ -231,7 +232,7 @@ function _q ($a) { // Nommage bizarre des tables d'objets // http://doc.spip.org/@table_objet -function table_objet($type) { +function table_objet($type,$serveur='') { static $surnoms = null; $type = preg_replace(',^spip_|^id_|s$,', '', $type); if (!$type) return; @@ -246,15 +247,20 @@ function table_objet($type) { 'extension' => 'types_documents' # hum )); } - return isset($surnoms[$type]) - ? $surnoms[$type] - : rtrim($type,'s')."s"; + if (isset($surnoms[$type])) + return $surnoms[$type]; + + $trouver_table = charger_fonction('trouver_table', 'base'); + if ($desc = $trouver_table($type,$serveur)) + return $desc['table']; + + return rtrim($type,'s')."s"; # cas historique ne devant plus servir } // http://doc.spip.org/@table_objet_sql -function table_objet_sql($type) { +function table_objet_sql($type,$serveur='') { global $table_des_tables; - $nom = table_objet($type); + $nom = table_objet($type, $serveur); include_spip('public/interfaces'); if (isset($table_des_tables[$nom])) { $t = $table_des_tables[$nom]; @@ -265,7 +271,7 @@ function table_objet_sql($type) { // http://doc.spip.org/@id_table_objet function id_table_objet($type,$serveur='') { - $type = objet_type($type); + $type = objet_type($type,$serveur); if ($type == 'type') return 'extension'; else { diff --git a/ecrire/inc/modifier.php b/ecrire/inc/modifier.php index 76c4142b94..2b9bafc707 100644 --- a/ecrire/inc/modifier.php +++ b/ecrire/inc/modifier.php @@ -31,9 +31,9 @@ function modifier_contenu($type, $id, $options, $c=false, $serveur='') { include_spip('inc/filtres'); - $table_objet = table_objet($type); - $spip_table_objet = table_objet_sql($type); - $id_table_objet = id_table_objet($type); + $table_objet = table_objet($type,$serveur); + $spip_table_objet = table_objet_sql($type,$serveur); + $id_table_objet = id_table_objet($type,$serveur); $trouver_table = charger_fonction('trouver_table', 'base'); $desc = $trouver_table($spip_table_objet, $serveur); -- GitLab