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

Partage de code dans les fonctions d'abstraction: la fonction sql_serveur...

Partage de code dans les fonctions d'abstraction: la fonction sql_serveur admet un 3e argument, booléen, permettant de ne pas déclencher d'erreur si l'instruction SQL souhaitée n'est pas disponible (cf charger_fonction, construite pareillement).
parent cc3c229e
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -21,50 +21,20 @@ if (!defined("_ECRIRE_INC_VERSION")) return; ...@@ -21,50 +21,20 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
// Cette fonction charge la description d'un serveur de base de donnees // Cette fonction charge la description d'un serveur de base de donnees
// (via la fonction spip_connect qui etablira la connexion si ce n'est fait) // (via la fonction spip_connect qui etablira la connexion si ce n'est fait)
// et retourne la fonction produisant la requête SQL demandee // et retourne la fonction produisant la requête SQL demandee
// Erreur fatale si la fonctionnalite est absente // Erreur fatale si la fonctionnalite est absente sauf si le 3e arg <> false
// http://doc.spip.org/@sql_serveur // http://doc.spip.org/@sql_serveur
function sql_serveur($ins_sql, $serveur='') { function sql_serveur($ins_sql, $serveur='', $continue=false) {
$desc = spip_connect($serveur); $desc = spip_connect($serveur);
if (function_exists($f = @$desc[$ins_sql])) return $f; if (function_exists($f = @$desc[$ins_sql])) return $f;
spip_log("Le serveur '$serveur' ne dispose pas de '$ins_sql'"); spip_log("Le serveur '$serveur' ne dispose pas de '$ins_sql'");
if ($continue) return false;
include_spip('inc/minipres'); include_spip('inc/minipres');
echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique')); echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'));
exit; exit;
} }
// Dans quelques cas, l'absence de fonctionnalite ne doit pas declencher
// d'erreur fatale ==> ne pas utiliser la fonction generale
// http://doc.spip.org/@sql_explain
function sql_explain($q, $serveur='') {
$desc = spip_connect($serveur);
if (function_exists($f = @$desc['explain'])) {
return $f($q, $serveur);
}
spip_log("Le serveur '$serveur' ne dispose pas de 'explain'");
return false;
}
// http://doc.spip.org/@sql_optimize
function sql_optimize($q, $serveur='') {
$desc = spip_connect($serveur);
if (function_exists($f = @$desc['optimize'])) {
return $f($q, $serveur);
}
spip_log("Le serveur '$serveur' ne dispose pas de 'optimize'");
}
// http://doc.spip.org/@sql_repair
function sql_repair($table, $serveur='') {
$desc = spip_connect($serveur);
if (function_exists($f = @$desc['repair'])) {
return $f($table, $serveur);
}
spip_log("Le serveur '$serveur' ne dispose pas de 'repair'");
}
// Demande si un charset est disponible. // Demande si un charset est disponible.
// http://doc.spip.org/@sql_get_charset // http://doc.spip.org/@sql_get_charset
function sql_get_charset($charset, $serveur=''){ function sql_get_charset($charset, $serveur=''){
...@@ -275,6 +245,24 @@ function sql_errno($serveur='') { ...@@ -275,6 +245,24 @@ function sql_errno($serveur='') {
return $f(); return $f();
} }
// http://doc.spip.org/@sql_explain
function sql_explain($q, $serveur='') {
$f = sql_serveur('explain', $serveur, true);
return $f ? $f($q, $serveur) : false;
}
// http://doc.spip.org/@sql_optimize
function sql_optimize($q, $serveur='') {
$f = sql_serveur('optimize', $serveur, true);
return $f ? $f($q, $serveur) : false;
}
// http://doc.spip.org/@sql_repair
function sql_repair($table, $serveur='') {
$f = sql_serveur('repair', $serveur, true);
return $f ? $f($q, $serveur) : false;
}
// Fonction la plus generale ... et la moins portable // Fonction la plus generale ... et la moins portable
// A n'utiliser qu'en derniere extremite // A n'utiliser qu'en derniere extremite
......
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