Valider 3ebf2856 rédigé par esj's avatar esj
Parcourir les fichiers

Reconception du script '''delete_all''. A présent ce script présente la liste...

Reconception du script '''delete_all''. A présent ce script présente la liste des tables dans la base ayant le préfixe donné à l'installation. Cette liste permet d'examiner les tables qui seront effectivement détruites, et permet également de décocher certaines d'entre elles afin de les conserver. Enfin, elle supprime les faux messages d'erreurs quant aux tables ne faisant plus de partie de SPIP, ce script n'ayant pas toujours suivi ces évolutions.

'''ATTENTION''': toutes les tables avec le préfixe seront détruites, même celles non déclarées par la distribution standard de SPIP. C'est souvent ce que l'on veut (sinon, on aurait pas utilisé ce préfixe pour ces tables supplémentaires) mais c'est un changement par rapport à avant. Les boutons radio sont justement là pour permettre le comportement antérieur, moyennant une lecture attentive.

Cette fonctionnalité repose sur un nouvelle fonction d'abstraction, qui s'ajoute
à celle définies dans [10154][10131][10146] et [10113]:

{{{
'showbase' => fonction d'abstraction de la liste des tables en base
}}}

Par défaut, elle retourne les tables avec le préfixe standard, mais avec un argument supplémentaire elle les retourne toutes (attention en cas de mutualisation par changement de préfixe).
parent 3309bd48
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+11 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -146,6 +146,17 @@ function sql_replace($table, $values, $desc=array(), $serveur='')
	return $f($table, $values, $desc, $serveur);
}

function sql_showbase($spip=true, $serveur='')
{
	if ($spip){
		$connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
		$prefixe = $connexion['prefixe'];
	} else $prefixe ='';
	
	$f = sql_serveur('showbase', $serveur);
	return $f("$prefixe%", $serveur);
}

// http://doc.spip.org/@sql_showtable
function sql_showtable($table, $serveur='', $table_spip = false)
{
+6 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -55,6 +55,7 @@ function base_db_mysql_dist($host, $port, $login, $pass, $db='', $prefixe='') {
		'select' => 'spip_mysql_select',
		'selectdb' => 'spip_mysql_selectdb',
		'set_connect_charset' => 'spip_mysql_set_connect_charset',
		'showbase' => 'spip_mysql_showbase',
		'showtable' => 'spip_mysql_showtable',
		'update' => 'spip_mysql_update',
		'updateq' => 'spip_mysql_updateq',
@@ -271,6 +272,11 @@ function spip_mysql_create($nom, $champs, $cles, $autoinc=false, $temporary=fals
	return spip_mysql_query($q, $serveur);
}

function spip_mysql_showbase($match, $serveur='')
{
	return spip_mysql_query("SHOW TABLES LIKE '$match'", $serveur);
}

// http://doc.spip.org/@spip_mysql_showtable
function spip_mysql_showtable($nom_table, $serveur='')
{
+9 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -63,6 +63,7 @@ function base_db_pg_dist($addr, $port, $login, $pass, $db='', $prefixe='') {
		'select' => 'spip_pg_select',
		'selectdb' => 'spip_pg_selectdb',
		'set_connect_charset' => 'spip_pg_set_connect_charset',
		'showbase' => 'spip_pg_showbase',
		'showtable' => 'spip_pg_showtable',
		'update' => 'spip_pg_update',
		'updateq' => 'spip_pg_updateq',
@@ -572,6 +573,14 @@ function spip_pg_errno() {
	return $s ? 1 : 0;
}

function spip_pg_showbase($match, $serveur='')
{
	$connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
	$link = $connexion['link'];
	  
	return pg_query($link, "SELECT tablename FROM pg_tables WHERE tablename ILIKE '$match'");
}

// http://doc.spip.org/@spip_pg_showtable
function spip_pg_showtable($nom_table, $serveur='')
{
+11 −51
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -12,65 +12,25 @@

if (!defined("_ECRIRE_INC_VERSION")) return; // securiser

// faudrait plutot recuperer dans inc_serialbase et inc_auxbase
// mais il faudra prevenir ceux qui affectent les globales qui s'y trouvent
// Afficher la liste de ce qu'on va detruire et demander confirmation 
// ca vaudrait mieux

// http://doc.spip.org/@base_delete_all_dist
function base_delete_all_dist($titre)
{
	spip_query("DROP TABLE spip_articles");
	spip_query("DROP TABLE spip_auteurs");
	spip_query("DROP TABLE spip_auteurs_articles");
	spip_query("DROP TABLE spip_auteurs_messages");
	spip_query("DROP TABLE spip_auteurs_rubriques");
	spip_query("DROP TABLE spip_breves");
	spip_query("DROP TABLE spip_documents");
	spip_query("DROP TABLE spip_documents_articles");
	spip_query("DROP TABLE spip_documents_breves");
	spip_query("DROP TABLE spip_documents_rubriques");
	spip_query("DROP TABLE spip_forum");
	spip_query("DROP TABLE spip_groupes_mots");
	spip_query("DROP TABLE spip_index");
	spip_query("DROP TABLE spip_index_dico");
	spip_query("DROP TABLE spip_messages");
	spip_query("DROP TABLE spip_meta");
	spip_query("DROP TABLE spip_mots");
	spip_query("DROP TABLE spip_mots_articles");
	spip_query("DROP TABLE spip_mots_breves");
	spip_query("DROP TABLE spip_mots_forum");
	spip_query("DROP TABLE spip_mots_rubriques");
	spip_query("DROP TABLE spip_mots_syndic");
	spip_query("DROP TABLE spip_petitions");
	spip_query("DROP TABLE spip_referers");
	spip_query("DROP TABLE spip_referers_articles");
	spip_query("DROP TABLE spip_rubriques");
	spip_query("DROP TABLE spip_signatures");
	spip_query("DROP TABLE spip_syndic");
	spip_query("DROP TABLE spip_syndic_articles");
	spip_query("DROP TABLE spip_types_documents");
	spip_query("DROP TABLE spip_visites");
	spip_query("DROP TABLE spip_visites_articles");
	spip_query("DROP TABLE spip_mots_documents");
	spip_query("DROP TABLE spip_ortho_cache");
	spip_query("DROP TABLE spip_ortho_dico");
	spip_query("DROP TABLE spip_versions");
	spip_query("DROP TABLE spip_versions_fragments");
	spip_query("DROP TABLE spip_urls");

	// Tables pas necessairement la: pas de faux messages d'erreur
	spip_log("tes index_table et forum_cache");
	@spip_query("DROP TABLE spip_test");
	@spip_query("DROP TABLE spip_index_table");
	@spip_query("DROP TABLE spip_forum_cache");
	@spip_query("DROP TABLE spip_caches");
	$delete = _request('delete');
	if (is_array($delete)) {
		$res = array();
		foreach ($delete as $table) {
		  if (spip_query("DROP TABLE $table"))
		    $res[] = $table;
		}
	}

	// un pipeline pour detruire les tables installees par les plugins
	pipeline('delete_tables', '');

	spip_unlink(_ACCESS_FILE_NAME);
	spip_unlink(_FILE_CONNECT);
	spip_log("destruction operee redirige vers " . _request('redirect'));
	$d = count($delete);
	$r = count($res);
	spip_log("Tables detruites: $r sur $d: " . join(', ',$res));
}
?>
+2 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -62,11 +62,11 @@ function exec_convert_sql_utf8_dist() {
		$commentaire = "";
		//$commentaire = _T('utf8_convert_avertissement',
		//	array('orig' => $charset_orig,'charset' => 'utf-8'));
		$commentaire .=  "<p><small>"
		$commentaire .=  "<small>"
		. http_img_pack('warning.gif', _T('info_avertissement'), "style='width: 48px; height: 48px; float: right;margin: 10px;'");
		$commentaire .= _T('utf8_convert_backup', array('charset' => 'utf-8'))
		."</small>";
		$commentaire .= '<p>'._T('utf8_convert_timeout');
		$commentaire .= '<br />'._T('utf8_convert_timeout');
		$commentaire .= "<hr />\n";

		$admin = charger_fonction('admin', 'inc');
Chargement en cours