Skip to content
Extraits de code Groupes Projets
Valider 6cf81aa2 rédigé par esj's avatar esj
Parcourir les fichiers

Correction log de [10715] et harmonisation des fonctions d'abstraction:

[10715] a harmonisé le résultat retourné par '''sql_serveur''' (qui ne déclenche plus forcément une erreur fatale depuis [10713]) avec celui de '''spip_connect''': false si le serveur est indisponible, le tableau décrivant la connexion sinon. Une instruction SQL est disponible dans ce serveur si le résultat de '''sql_serveur''' est une chaîne.

Ce nouveau dépot harmonise les fonctions d'abstraction qui à présent ont toutes pour dernier argument, optionnel, le serveur visé. La seule fonction qui ne respectait pas cela était '''sql_showtable'''. Ce changement ne devrait pas affecter les extensions de SPIP, cette fonction étant encapsulée par '''trouver_table''' qui gère les préfixes de table et leur abréviation dans la base principale.
parent a0ee4e24
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -202,7 +202,7 @@ function sql_showbase($spip=NULL, $serveur='')
}
// http://doc.spip.org/@sql_showtable
function sql_showtable($table, $serveur='', $table_spip = false)
function sql_showtable($table, $table_spip = false, $serveur='')
{
if ($table_spip){
$connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
......@@ -323,8 +323,9 @@ function sql_in($val, $valeurs, $not='', $serveur='') {
return $f($val, $valeurs, $not, $serveur);
}
// http://doc.spip.org/@sql_test_int
function sql_test_int($type)
function sql_test_int($type, $serveur='')
{
return (preg_match('/^bigint/i',$type)
OR preg_match('/^int/i',$type)
......@@ -332,7 +333,7 @@ function sql_test_int($type)
}
// http://doc.spip.org/@sql_test_date
function sql_test_date($type)
function sql_test_date($type, $serveur='')
{
return (preg_match('/^datetime/i',$type)
OR preg_match('/^timestamp/i',$type));
......
......@@ -27,7 +27,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
// http://doc.spip.org/@base_trouver_table_dist
function base_trouver_table_dist($nom, $serveur='')
{
global $tables_principales, $tables_auxiliaires, $table_des_tables, $connexions;
global $tables_principales, $tables_auxiliaires, $table_des_tables;
if (!spip_connect($serveur)
OR !preg_match('/^[a-zA-Z0-9._-]+/',$nom))
......@@ -36,18 +36,15 @@ function base_trouver_table_dist($nom, $serveur='')
if (preg_match('/\.(.*)$/', $nom, $s))
$nom_sql = $s[1];
else $nom_sql = $nom;
$s = $serveur ? $serveur : 0;
if ($connexions[$s]['spip_connect_version']) {
$desc = '';
$connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
// base sous SPIP: gerer les abreviations des noms de table
if ($connexion['spip_connect_version']) {
include_spip('public/interfaces');
// base sous SPIP, le nom SQL peut etre autre
if (isset($table_des_tables[$nom])) {
// indirection (table principale avec nom!=type)
$t = $table_des_tables[$nom];
$nom_sql = 'spip_' . $t;
if (isset($connexions[$s]['tables'][$nom_sql]))
return $connexions[$s]['tables'][$nom_sql];
else {
if (!isset($connexion['tables'][$nom_sql])) {
include_spip('base/serial');
$desc = $tables_principales[$nom_sql];
$nom = $t;
......@@ -56,27 +53,26 @@ function base_trouver_table_dist($nom, $serveur='')
include_spip('base/auxiliaires');
if (isset($tables_auxiliaires['spip_' .$nom])) {
$nom_sql = 'spip_' . $nom;
if (isset($connexions[$s]['tables'][$nom_sql]))
return $connexions[$s]['tables'][$nom_sql];
else {
$desc = $tables_auxiliaires[$nom_sql];
if (!isset($connexion['tables'][$nom_sql])) {
$desc = $tables_auxiliaires[$nom_sql];
}
} # table locale a cote de SPIP, comme non SPIP:
}
}
if (!isset($connexions[$s]['tables'][$nom_sql])) {
$desc = sql_showtable($nom_sql, $serveur, ($nom_sql != $nom));
if (!$desc OR !$desc['field']) {
spip_log("table inconnue $serveur $nom");
return null;
if (!isset($connexion['tables'][$nom_sql])) {
if (!$desc) {
$t = ($nom_sql != $nom);
$desc = sql_showtable($nom_sql, $t, $serveur);
if (!$desc OR !$desc['field']) {
spip_log("table inconnue $serveur $nom");
return null;
}
}
$desc['table']= $nom_sql;
$desc['id_table']= $nom;
$desc['connexion']= $serveur;
$connexion['tables'][$nom_sql] = $desc;
}
$desc['table']= $nom_sql;
$desc['id_table']= $nom;
$desc['connexion']= $serveur;
$connexions[$s]['tables'][$nom_sql] = $desc;
return $connexions[$s]['tables'][$nom_sql];
return $connexion['tables'][$nom_sql];
}
?>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter