Pagina 1 van 2

Gebruiker verwijderen maar berichten overhevelen....

Geplaatst: 04 jan 2005, 17:47
door pumpeduse
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

Geplaatst: 04 jan 2005, 17:51
door Bee
Zijn er al berichten gepost door Administrator? Zo nee, verwijder het account van Administrator, en geef het account van jouw de naam Administrator mee.

Geplaatst: 04 jan 2005, 17:59
door pumpeduse
Helaas heeft de Administrator ook al berichten geplaatst....

vr gr richard

Geplaatst: 04 jan 2005, 18:16
door Bee
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...

Geplaatst: 04 jan 2005, 18:51
door Cheeta
is het niet makkelijker om via het ACP de gebruikersnaam te veranderen 8)

Geplaatst: 05 jan 2005, 15:17
door Luuk
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>');
}

?>

Geplaatst: 05 jan 2005, 17:09
door pumpeduse
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

Geplaatst: 05 jan 2005, 17:34
door ElbertF
Ja ;)

Geplaatst: 05 jan 2005, 18:46
door pumpeduse
Oke ik ga het even proberen!!

vr gr richard

Geplaatst: 05 jan 2005, 19:01
door pumpeduse
Jammer het werkt niet!

vr gr richard

Geplaatst: 05 jan 2005, 19:03
door pumpeduse
$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

Geplaatst: 05 jan 2005, 19:05
door pumpeduse
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

Geplaatst: 05 jan 2005, 19:21
door Luuk
Wat heb je daar ingevuld? Laat die 2 regels eens zien.

Geplaatst: 05 jan 2005, 19:23
door pumpeduse
<?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>');
}

?>

Geplaatst: 05 jan 2005, 19:25
door Luuk
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.

Geplaatst: 05 jan 2005, 19:27
door pumpeduse
Oke Luuk ik ga het even proberen!!!

vr gr richard

Geplaatst: 05 jan 2005, 19:33
door pumpeduse
Volgens mij is het gelukt.!!
Topics zijn verplaats alleen de geplaatste berichten zie ik niet bij Admin opgeteld???

vr gr richard

Geplaatst: 05 jan 2005, 19:36
door Bee
Je kan dat nog bijwerken door een sycronisatie van de berichtaantallen. Er is een speciale mod voor.

Geplaatst: 05 jan 2005, 19:39
door pumpeduse
Het klopt hoor !!!!
Alles is over geheveld!!!!

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

Nogmaals bedankt allemaal!

vr gr richard

Geplaatst: 06 jan 2005, 09:50
door Luuk
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