Dan heb je hier misschien ook wel wat aan, dit scriptje voegt twee accounts in een keer samen. Een poosje geleden heb ik dit van phpbb.com geplukt, ik kan even niet linken want de searchfunctie doet het daar nog niet.
Let op: ik vergiste me de eerste keer (gelukkig met een testje) door per ongeluk het nummer van de ledenlijst te nemen maar dat is dus niet hetzelfde als de user_id die je moet hebben

Je moet dus die 133 en die 9 veranderen in de user_id's van jouw gebruikers.
$old_user
is degene die verdwijnt en
$new_user
krijgt alle berichten op zijn naam. Dit kan niet meer ongedaan gemaakt worden!
Code: Selecteer alles
<?php
define('DEBUG', true);
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
$user->session_begin();
$auth->acl($user->data);
$user->setup();
$old_user = 133;
$new_user = 9;
user_merge($old_user, $new_user);
trigger_error('Wheee done :P');
/**
*
* @package phpBB3
* @version $Id$
* @copyright (c) 2007 eviL3
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
exit;
}
/**
* Merge two user accounts into one
*
* @author eviL3
* @param int $old_user User id of the old user
* @param int $new_user User id of the new user
*/
function user_merge($old_user, $new_user)
{
global $user, $db;
global $phpbb_root_path, $phpEx;
if (!function_exists('user_add'))
{
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
}
$old_user = (int) $old_user;
$new_user = (int) $new_user;
// get both users userdata
$data = array();
foreach (array($old_user, $new_user) as $key)
{
$sql = 'SELECT user_id, username, user_colour
FROM ' . USERS_TABLE . '
WHERE user_id = ' . $key;
$result = $db->sql_query($sql);
$data[$key] = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
}
$update_ary = array(
ATTACHMENTS_TABLE => array('poster_id'),
FORUMS_TABLE => array(array('forum_last_poster_id', 'forum_last_poster_name', 'forum_last_poster_colour')),
LOG_TABLE => array('user_id', 'reportee_id'),
MODERATOR_CACHE_TABLE => array(array('user_id', 'username')),
POSTS_TABLE => array(array('poster_id', 'post_username'), 'post_edit_user'),
POLL_VOTES_TABLE => array('vote_user_id'),
PRIVMSGS_TABLE => array('author_id', 'message_edit_user'),
PRIVMSGS_TO_TABLE => array('user_id', 'author_id'),
REPORTS_TABLE => array('user_id'),
TOPICS_TABLE => array(array('topic_poster', 'topic_first_poster_name', 'topic_first_poster_colour'), array('topic_last_poster_id', 'topic_last_poster_name', 'topic_last_poster_colour')),
);
foreach ($update_ary as $table => $field_ary)
{
foreach ($field_ary as $field)
{
$sql_ary = array();
if (!is_array($field))
{
$field = array($field);
}
$sql_ary[$field[0]] = $new_user;
if (!empty($field[1]))
{
$sql_ary[$field[1]] = $data[$new_user]['username'];
}
if (!empty($field[2]))
{
$sql_ary[$field[2]] = $data[$new_user]['user_colour'];
}
$primary_field = $field[0];
$sql = "UPDATE $table SET " . $db->sql_build_array('UPDATE', $sql_ary) . "
WHERE $primary_field = $old_user";
$db->sql_query($sql);
}
}
user_delete('remove', $old_user);
}
?>
Je moet dit in dezelfde map zetten als je config.php en dan naar toe gaan met je browser. Daarna weer verwijderen.