Gebruiker verwijderen maar berichten overhevelen....

Installatie lukt niet? Plotseling een foutmelding. Of weet je niet hoe iets werkt. Problemen met phpBB2 kun je in dit archief opzoeken.
Forumregels

Sinds 1 januari 2009 wordt phpBB2 niet meer ondersteund.
Onderstaande informatie is verouderd en dient uitsluitend als archief.
phpBB2.0.x
pumpeduse
Berichten: 165
Lid geworden op: 02 nov 2004, 11:20
Contacteer:

Gebruiker verwijderen maar berichten overhevelen....

Bericht door pumpeduse » 04 jan 2005, 17:47

Hallo,

Ik wil een gebruikersnaam van mijzelf(pumpeduse) verwijderen op het forum van mijn site en alle berichten van Pumpeduse overhevelen naar ADMINistrator is dit mogelijk??


vr gr richard
Laatst gewijzigd door pumpeduse op 04 jan 2005, 17:58, 1 keer totaal gewijzigd.

Gebruikersavatar
Bee
Berichten: 13403
Lid geworden op: 29 aug 2004, 10:30

Bericht door Bee » 04 jan 2005, 17:51

Zijn er al berichten gepost door Administrator? Zo nee, verwijder het account van Administrator, en geef het account van jouw de naam Administrator mee.
... Maar ik modereer (nog) niet.

pumpeduse
Berichten: 165
Lid geworden op: 02 nov 2004, 11:20
Contacteer:

Bericht door pumpeduse » 04 jan 2005, 17:59

Helaas heeft de Administrator ook al berichten geplaatst....

vr gr richard

Gebruikersavatar
Bee
Berichten: 13403
Lid geworden op: 29 aug 2004, 10:30

Bericht door Bee » 04 jan 2005, 18:16

Dan wordt het dus tijd voor een aanpassing in de database (ik weet niet zeker of het kan, en wat de SQL opdracht ervoor is...)

Wat je moet weten is het ID van Admin, en het ID van pumpeduse. Daarna moet je in de phpbb_posts tabel de berichten met het ID van pumpeduse opzoeken, en het ID vervangen door het ID van de Admin.

Echter, Ik weet niet zeker of het kan...
... Maar ik modereer (nog) niet.

Gebruikersavatar
Cheeta
Berichten: 1165
Lid geworden op: 11 jan 2004, 11:26
Locatie: Mijdrecht Sites: -- Derbi Club --
Contacteer:

Bericht door Cheeta » 04 jan 2005, 18:51

is het niet makkelijker om via het ACP de gebruikersnaam te veranderen 8)
Don't mess with BD and save the Cheeta's!

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 05 jan 2005, 15:17

Ik heb een script geschreven dat bij mij werkt. Het geeft alles wat met posts te maken heeft 'over' aan een andere gebruiker. Hierna kun je dus de gebruiker verwijderen. Het veranderd de tabellen phpbb_posts, phpbb_topics en phpbb_vote_voters.
Maak wel eerst een backup, terugdraaien kan namelijk niet.

Het enige wat je aan moet passen in het bestand zijn de 2 id's van de gebruikers waar het betrekking op heeft. $old_user_id is het user_id van de oude gebruiker (die je gaat verwijderen) en $new_user_id is het user_id waar alles heen gaat.

Sla het op als usermerge.php of iets dergelijks en voer het dan uit als admin.

Code: Selecteer alles

<?php
/***************************************************************************
 *                                usermerge.php
 ***************************************************************************/

define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//

//
// CONFIG
//

$old_user_id = '2';
$new_user_id = '2';

//
// END OF CONFIG
//

$sql = "SELECT username, user_id, user_posts
	FROM " . USERS_TABLE . "
	WHERE user_id = " . $old_user_id . "";
if ( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, "Could not obtain user information.", '', __LINE__, __FILE__, $sql);
}

while ($row = $db->sql_fetchrow($result))
{
    $user_id = $row['user_id'];
	$username = $row['username'];
	$user_posts = row['user_posts'];
	
	//
	// POSTS
	//	
	
	$sql = "SELECT post_id
		FROM " . POSTS_TABLE . "
		WHERE poster_id = " . $user_id;
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, "Could not obtain post information.", '', __LINE__, __FILE__, $sql);
	}
	$post_row = array();
	while( $row = $db->sql_fetchrow($result) )
	{
		$post_row[] = $row;
	}
	$db->sql_freeresult($result);
	
	for($i = 0; $i < count($post_row); $i++)
	{
	    $sql = "UPDATE " . POSTS_TABLE . "
		    SET poster_id = " . $new_user_id . "
			WHERE post_id = " . $post_row[$i]['post_id'];
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, "Could not update post.", '', __LINE__, __FILE__, $sql);
		}
		
		$sql = "UPDATE " . USERS_TABLE . "
			SET user_posts = user_posts++"
			WHERE user_id = " . $new_user_id;
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, "Could update user posts.", '', __LINE__, __FILE__, $sql);
		}
		
		echo('Post met id ' . $post_row[$i]['post_id'] . ' geupdate.<br />');
	}
	echo('<b>In totaal ' . count($post_row) . ' posts geupdate.</b><br /><br />');
	
	//
	// TOPICS
	//	
	
	$sql = "SELECT topic_id
		FROM " . TOPICS_TABLE . "
		WHERE topic_poster = " . $user_id;
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, "Could not obtain topics information.", '', __LINE__, __FILE__, $sql);
	}
	$topic_row = array();
	while( $row = $db->sql_fetchrow($result) )
	{
		$topic_row[] = $row;
	}
	$db->sql_freeresult($result);
	
	for($i = 0; $i < count($topic_row); $i++)
	{
	    $sql = "UPDATE " . TOPICS_TABLE . "
		    SET topic_poster = " . $new_user_id . "
			WHERE topic_id = " . $topic_row[$i]['topic_id'];
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, "Could update topic.", '', __LINE__, __FILE__, $sql);
		}
		
		echo('Topic met id ' . $topic_row[$i]['topic_id'] . ' geupdate.<br />');
	}
	echo('<b>In totaal ' . count($topic_row) . ' topics geupdate.</b><br /><br />');
	
	//
	// VOTES
	//	
	
	$sql = "SELECT vote_id
		FROM " . VOTE_USERS_TABLE . "
		WHERE vote_user_id = " . $user_id;
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, "Could not obtain votes information.", '', __LINE__, __FILE__, $sql);
	}
	$vote_row = array();
	while( $row = $db->sql_fetchrow($result) )
	{
		$vote_row[] = $row;
	}
	$db->sql_freeresult($result);
	
	for($i = 0; $i < count($vote_row); $i++)
	{
	    $sql = "UPDATE " . VOTE_USERS_TABLE . "
		    SET vote_user_id = " . $new_user_id . "
			WHERE vote_id = " . $vote_row[$i]['vote_id'];
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, "Could update vote.", '', __LINE__, __FILE__, $sql);
		}
		
		echo('Vote met id ' . $vote_row[$i]['vote_id'] . ' geupdate.<br />');
	}
	echo('<b>In totaal ' . count($vote_row) . ' votes geupdate.</b><br /><br />');	
	echo('<center><b>Gebruiker ' . $username . ' geupdate.</b></center>');
}

?>
Laatst gewijzigd door Luuk op 06 jan 2005, 09:49, 1 keer totaal gewijzigd.
Afbeelding

pumpeduse
Berichten: 165
Lid geworden op: 02 nov 2004, 11:20
Contacteer:

Bericht door pumpeduse » 05 jan 2005, 17:09

Bedankt Luuk,!!!!!!!!!!!!!!!!!!!

Even een vraagje hier over:

Sla het op als usermerge.php of iets dergelijks en voer het dan uit als admin

Dus gewoon in de browser uitvoeren begrijp ik dat goed??

vr gr richard

ElbertF
Berichten: 5803
Lid geworden op: 12 okt 2004, 08:34
Contacteer:

Bericht door ElbertF » 05 jan 2005, 17:34

Ja ;)

pumpeduse
Berichten: 165
Lid geworden op: 02 nov 2004, 11:20
Contacteer:

Bericht door pumpeduse » 05 jan 2005, 18:46

Oke ik ga het even proberen!!

vr gr richard

pumpeduse
Berichten: 165
Lid geworden op: 02 nov 2004, 11:20
Contacteer:

Bericht door pumpeduse » 05 jan 2005, 19:01

Jammer het werkt niet!

vr gr richard

pumpeduse
Berichten: 165
Lid geworden op: 02 nov 2004, 11:20
Contacteer:

Bericht door pumpeduse » 05 jan 2005, 19:03

$old_user_id = '2';
$new_user_id = '2';

Ik neem aan dat die 2 daar weg moet en dat daar de naam komt te staan??
Tevens zijn dit de enigste plekken toch waar je de namen invoegd??

vr gr richard

pumpeduse
Berichten: 165
Lid geworden op: 02 nov 2004, 11:20
Contacteer:

Bericht door pumpeduse » 05 jan 2005, 19:05

Ohw oke ID is niet de naam ik vat hem al.....!!!
Maar toch werkt het niet hij laad alleen de pagina opnieuw in..


vr gr richard

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 05 jan 2005, 19:21

Wat heb je daar ingevuld? Laat die 2 regels eens zien.
Afbeelding

pumpeduse
Berichten: 165
Lid geworden op: 02 nov 2004, 11:20
Contacteer:

Bericht door pumpeduse » 05 jan 2005, 19:23

<?php
/***************************************************************************
* usermerge.php
***************************************************************************/

define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//

//
// CONFIG
//

$old_user_id = '3';
$new_user_id = '2';

//
// END OF CONFIG
//

if ( $userdata['user_level'] !== ADMIN || !$userdata['session_logged_in'] )
{
redirect(append_sid("index.$phpEx", true));
}

$sql = "SELECT username, user_id
FROM " . USERS_TABLE . "
WHERE user_id = " . $old_user_id . "";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Could not obtain user information.", '', __LINE__, __FILE__, $sql);
}

while ($row = $db->sql_fetchrow($result))
{
$user_id = $row['user_id'];
$username = $row['username'];
//
// POSTS
//

$sql = "SELECT post_id
FROM " . POSTS_TABLE . "
WHERE poster_id = " . $user_id;
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Could not obtain post information.", '', __LINE__, __FILE__, $sql);
}
$post_row = array();
while( $row = $db->sql_fetchrow($result) )
{
$post_row[] = $row;
}
$db->sql_freeresult($result);

for($i = 0; $i < count($post_row); $i++)
{
$sql = "UPDATE " . POSTS_TABLE . "
SET poster_id = " . $new_user_id . "
WHERE post_id = " . $post_row[$i]['post_id'];
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Could not update post.", '', __LINE__, __FILE__, $sql);
}

echo('Post met id ' . $post_row[$i]['post_id'] . ' geupdate.<br />');
}
echo('<b>In totaal ' . count($post_row) . ' posts geupdate.</b><br /><br />');

//
// TOPICS
//

$sql = "SELECT topic_id
FROM " . TOPICS_TABLE . "
WHERE topic_poster = " . $user_id;
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Could not obtain topics information.", '', __LINE__, __FILE__, $sql);
}
$topic_row = array();
while( $row = $db->sql_fetchrow($result) )
{
$topic_row[] = $row;
}
$db->sql_freeresult($result);

for($i = 0; $i < count($topic_row); $i++)
{
$sql = "UPDATE " . TOPICS_TABLE . "
SET topic_poster = " . $new_user_id . "
WHERE topic_id = " . $topic_row[$i]['topic_id'];
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Could update topic.", '', __LINE__, __FILE__, $sql);
}

echo('Topic met id ' . $topic_row[$i]['topic_id'] . ' geupdate.<br />');
}
echo('<b>In totaal ' . count($topic_row) . ' topics geupdate.</b><br /><br />');

//
// VOTES
//

$sql = "SELECT vote_id
FROM " . VOTE_USERS_TABLE . "
WHERE vote_user_id = " . $user_id;
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Could not obtain votes information.", '', __LINE__, __FILE__, $sql);
}
$vote_row = array();
while( $row = $db->sql_fetchrow($result) )
{
$vote_row[] = $row;
}
$db->sql_freeresult($result);

for($i = 0; $i < count($vote_row); $i++)
{
$sql = "UPDATE " . VOTE_USERS_TABLE . "
SET vote_user_id = " . $new_user_id . "
WHERE vote_id = " . $vote_row[$i]['vote_id'];
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Could update vote.", '', __LINE__, __FILE__, $sql);
}

echo('Vote met id ' . $vote_row[$i]['vote_id'] . ' geupdate.<br />');
}
echo('<b>In totaal ' . count($vote_row) . ' votes geupdate.</b><br /><br />');
echo('<center><b>Gebruiker ' . $username . ' geupdate.</b></center>');
}

?>

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 05 jan 2005, 19:25

Die 2 regels staan goed, je hebt trouwens nu ingevuld dat alle posts van pumpeduse naar Admin gaan (moest toch andersom??). Maak eerst een backup als je het nog niet gedaan hebt!


Verwijder uit dat bestand eens

Code: Selecteer alles

if ( $userdata['user_level'] !== ADMIN || !$userdata['session_logged_in'] )
{
redirect(append_sid("index.$phpEx", true));
}
NU zou het wel moeten werken, ik raad je aan om het bestand na gebruik te verwijderen omdat nu iedereen het uit kan voeren.
Afbeelding

pumpeduse
Berichten: 165
Lid geworden op: 02 nov 2004, 11:20
Contacteer:

Bericht door pumpeduse » 05 jan 2005, 19:27

Oke Luuk ik ga het even proberen!!!

vr gr richard

pumpeduse
Berichten: 165
Lid geworden op: 02 nov 2004, 11:20
Contacteer:

Bericht door pumpeduse » 05 jan 2005, 19:33

Volgens mij is het gelukt.!!
Topics zijn verplaats alleen de geplaatste berichten zie ik niet bij Admin opgeteld???

vr gr richard

Gebruikersavatar
Bee
Berichten: 13403
Lid geworden op: 29 aug 2004, 10:30

Bericht door Bee » 05 jan 2005, 19:36

Je kan dat nog bijwerken door een sycronisatie van de berichtaantallen. Er is een speciale mod voor.
... Maar ik modereer (nog) niet.

pumpeduse
Berichten: 165
Lid geworden op: 02 nov 2004, 11:20
Contacteer:

Bericht door pumpeduse » 05 jan 2005, 19:39

Het klopt hoor !!!!
Alles is over geheveld!!!!

Waar kan ik dat modje voor het berichtenaantal vinden trouwens???

Nogmaals bedankt allemaal!

vr gr richard

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 06 jan 2005, 09:50

Dat was ik dus vergeten :P Heb het erbij gedaan mocht iemand het nog ooit nodig hebben.

De mod die je nu zoekt is denk ik: http://www.phpbbhacks.com/download/524
Afbeelding

Gesloten