Valider 5ccea47a rédigé par marcimat's avatar marcimat
Parcourir les fichiers

Ticket #3608 : lorsqu'un prefixe de table utilise lui-même 'spip' en prefixe,...

Ticket #3608 : lorsqu'un prefixe de table utilise lui-même 'spip' en prefixe, tel que 'spip2', le renommage n'était pas correctement appliqué.
On se crée une fonction pour ce petit truc. Et on l'utilise aux endroits qui le nécessitent.
parent a975a048
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+17 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -1209,7 +1209,7 @@ function sql_showtable($table, $table_spip = false, $serveur = '', $option = tru
	if ($table_spip) {
		$connexion = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
		$prefixe = $connexion['prefixe'];
		$vraie_table = preg_replace('/^spip/', $prefixe, $table);
		$vraie_table = prefixer_table_spip($table, $prefixe);
	} else {
		$vraie_table = $table;
	}
@@ -2265,3 +2265,19 @@ function description_table($nom, $serveur = '') {

	return false;
}

/**
 * Corrige le nom d’une table SQL en utilisant le bon préfixe
 *
 * Ie: si prefixe 'dev', retournera, pour la table 'spip_articles' : 'dev_articles'.
 *
 * @param string $table
 * @param string $prefixe
 * @return string Table sql éventuellement renommée
 */
function prefixer_table_spip($table, $prefixe) {
	if ($prefixe) {
		$table = preg_replace('/^spip_/', $prefixe . '_', $table);
	}
	return $table;
}
 No newline at end of file
+1 −6
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -1131,13 +1131,8 @@ function spip_mysql_free($r, $serveur = '', $requeter = true) {
function spip_mysql_insert($table, $champs, $valeurs, $desc = array(), $serveur = '', $requeter = true) {

	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
	$prefixe = $connexion['prefixe'];
	$link = $connexion['link'];
	$db = $connexion['db'];

	if ($prefixe) {
		$table = preg_replace('/^spip/', $prefixe, $table);
	}
	$table = prefixer_table_spip($table, $connexion['prefixe']);

	$query = "INSERT INTO $table $champs VALUES $valeurs";
	if (!$requeter) {
+8 −30
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -893,12 +893,7 @@ function spip_pg_free($res, $serveur = '', $requeter = true) {
function spip_pg_delete($table, $where = '', $serveur = '', $requeter = true) {

	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
	$prefixe = $connexion['prefixe'];
	$link = $connexion['link'];
	$db = $connexion['db'];
	if ($prefixe) {
		$table = preg_replace('/^spip/', $prefixe, $table);
	}
	$table = prefixer_table_spip($table, $connexion['prefixe']);

	$query = calculer_pg_expression('DELETE FROM', $table, ',')
		. calculer_pg_expression('WHERE', $where, 'AND');
@@ -921,7 +916,6 @@ function spip_pg_insert($table, $champs, $valeurs, $desc = array(), $serveur = '
	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
	$prefixe = $connexion['prefixe'];
	$link = $connexion['link'];
	$db = $connexion['db'];

	if (!$desc) {
		$desc = description_table($table, $serveur);
@@ -930,16 +924,11 @@ function spip_pg_insert($table, $champs, $valeurs, $desc = array(), $serveur = '
	// si pas de cle primaire dans l'insertion, renvoyer curval
	if (!preg_match(",\b$seq\b,", $champs)) {
		$seq = spip_pg_sequence($table);
		if ($prefixe) {
			$seq = preg_replace('/^spip/', $prefixe, $seq);
		}
		$seq = prefixer_table_spip($seq, $prefixe);
		$seq = "currval('$seq')";
	}


	if ($prefixe) {
		$table = preg_replace('/^spip/', $prefixe, $table);
	}
	$table = prefixer_table_spip($table, $prefixe);
	$ret = !$seq ? '' : (" RETURNING $seq");
	$ins = (strlen($champs) < 3)
		? " DEFAULT VALUES"
@@ -1026,12 +1015,7 @@ function spip_pg_update($table, $couples, $where = '', $desc = '', $serveur = ''
		return;
	}
	$connexion = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
	$prefixe = $connexion['prefixe'];
	$link = $connexion['link'];
	$db = $connexion['db'];
	if ($prefixe) {
		$table = preg_replace('/^spip/', $prefixe, $table);
	}
	$table = prefixer_table_spip($table, $connexion['prefixe']);

	// recherche de champs 'timestamp' pour mise a jour auto de ceux-ci
	$couples = spip_pg_ajouter_champs_timestamp($table, $couples, $desc, $serveur);
@@ -1082,7 +1066,6 @@ function spip_pg_replace($table, $values, $desc, $serveur = '', $requeter = true
	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
	$prefixe = $connexion['prefixe'];
	$link = $connexion['link'];
	$db = $connexion['db'];

	if (!$desc) {
		$desc = description_table($table, $serveur);
@@ -1114,10 +1097,8 @@ function spip_pg_replace($table, $values, $desc, $serveur = '', $requeter = true
	$couples = join(',', $noprims);

	$seq = spip_pg_sequence($table);
	if ($prefixe) {
		$table = preg_replace('/^spip/', $prefixe, $table);
		$seq = preg_replace('/^spip/', $prefixe, $seq);
	}
	$table = prefixer_table_spip($table, $prefixe);
	$seq = prefixer_table_spip($seq, $prefixe);

	$connexion['last'] = $q = "UPDATE $table SET $couples WHERE $where";
	if ($couples) {
@@ -1381,12 +1362,9 @@ function spip_pg_showtable($nom_table, $serveur = '', $requeter = true) {
function spip_pg_create($nom, $champs, $cles, $autoinc = false, $temporary = false, $serveur = '', $requeter = true) {

	$connexion = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
	$prefixe = $connexion['prefixe'];
	$link = $connexion['link'];
	$db = $connexion['db'];
	if ($prefixe) {
		$nom = preg_replace('/^spip/', $prefixe, $nom);
	}
	$nom = prefixer_table_spip($nom, $connexion['prefixe']);

	$query = $prim = $prim_name = $v = $s = $p = '';
	$keys = array();