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

delete_all contenait une fonction pour lister les tables et les afficher en...

delete_all contenait une fonction pour lister les tables et les afficher en liste a cocher, comme la sauvegarde et la restauration. Mutualisons tout cela dans base/dump du core
parent 90815a46
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -42,6 +42,63 @@ function base_dump_dir($meta){
return $dir;
}
/**
* Lister toutes les tables d'un serveur
* en excluant eventuellement une liste fournie
*
* @param string $serveur
* @param array $tables
* @param array $exclude
* @return array
*/
function base_lister_toutes_tables($serveur='', $tables=array(), $exclude = array()) {
spip_connect($serveur);
$connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
$prefixe = $connexion['prefixe'];
$p = '/^' . $prefixe . '/';
$res = $tables;
foreach(sql_alltable(null,$serveur) as $t) {
if (preg_match($p, $t)) {
$t = preg_replace($p, 'spip', $t);
if (!in_array($t, $tables) AND !in_array($t, $exclude)) $res[]= $t;
}
}
sort($res);
return $res;
}
/**
* Fabrique la liste a cocher des tables a traiter (copie, delete, sauvegarde)
*
* @param string $name
* @param bool $check
* @return string
*/
function base_saisie_tables($name, $tables, $exclude = array(), $post=null, $serveur='') {
include_spip('inc/filtres');
foreach ($tables as $k => $t) {
// par defaut tout est coche sauf les tables dans $exclude
if (is_null($post))
$check = (in_array($t,$exclude)?false:true);
// mais si on a poste une selection, la reprendre
else
$check = in_array($t,$post);
$res[$k] = "<input type='checkbox' value='$t' name='$name"
. "[]' id='$name$k'"
. ($check ? " checked='checked'" : '')
. "/>\n"
. "<label for='$name$k'>".$t."</label>"
. " ("
. sinon(singulier_ou_pluriel(sql_countsel($t,'','','',$serveur), 'dump:une_donnee', 'dump:nb_donnees'),_T('dump:aucune_donnee'))
. ")";
}
return $res;
}
/**
* Lister les tables non exportables par defaut
* (liste completable par le pipeline lister_tables_noexport
......
......@@ -20,12 +20,14 @@ function exec_delete_all_dist()
include_spip('inc/minipres');
echo minipres();
} else {
$res = liste_tables_en_base('delete');
include_spip('base/dump');
$res = base_lister_toutes_tables();
if (!$res) {
include_spip('inc/minipres');
spip_log("Erreur base de donnees");
echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'). "<p><tt>".sql_errno()." ".sql_error()."</tt></p>");
} else {
$res = base_saisie_tables('delete', $res);
include_spip('inc/headers');
$res = "\n<ol style='text-align:left'><li>\n" .
join("</li>\n<li>", $res) .
......@@ -39,18 +41,4 @@ function exec_delete_all_dist()
}
}
function liste_tables_en_base($name)
{
$res = sql_alltable();
$c = "type='checkbox' checked='checked'";
foreach ($res as $k => $t) {
$res[$k] = "<input $c value='$t' id='$name_$t' name='$name"
. "[]' />\n"
. $t
. " ("
. sql_countsel($t)
. ")";
}
return $res;
}
?>
?>
\ No newline at end of file
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