Changed the code to make it pump in the User ID to be the same as the Joomla ID. I think this is massively important for migration as it allows for SEF and other plugin migration. I am going to work on pumping in the same post ID’s as well again it means anyone migrating can have the same SEF URLs and therefore have very little damage to SEO, in general I am changing my permalink scheme a little. In joomla i have the post ID as part of the URL which I dislike and will be making a 301 redirect to take id out of the posts.
Anyway for those playing at home if you want the same user ID’s you need to change the j2wp_mig_users function. Just replace it with the below and your ID’s will be preserved
function j2wp_mig_users()
{
global $wpdb,
$CON;
global $j2wp_user_array;
unset($j2wp_user_array);
if ( !$CON )
$CON = j2wp_do_mysql_connect();
$j2wp_joomla_tb_prefix = get_option('j2wp_joomla_tb_prefix');
j2wp_do_joomla_connect();
$query = "SELECT id, name, username, email, password, usertype FROM " . $j2wp_joomla_tb_prefix . "users WHERE block = 0 ";
$result = mysql_query($query, $CON);
if ( !$result )
echo mysql_error();
while($row = mysql_fetch_array($result))
{
$j2wp_user_array[] = array(
'id' => $row['id'],
'name' => $row['name'],
'username' => $row['username'],
'email' => $row['email'],
'password' => $row['password'],
'usertype' => $row['usertype']
);
}
mysql_free_result($result);
$j2wp_wp_tb_prefix = get_option('j2wp_wp_tb_prefix');
j2wp_do_wp_connect();
if ( get_option('j2wp_users_sel') == 'off' )
{
foreach ( $j2wp_user_array as $joomla_user )
{
$user_id = username_exists( $joomla_user['username'] );
if ( $user_id )
{
$j2wp_user_array[$indx]['wp_id'] = $user_id;
}
}
return $j2wp_user_array;
}
echo '<h4>User Migration</h4><br />' . "\n";
$indx = 0;
foreach ( $j2wp_user_array as $joomla_user )
{
echo 'migrate user: ' . $joomla_user['username'] . ' ---- ' . $joomla_user['usertype'] . '<br />' . "\n";
$user_id = username_exists( $joomla_user['username'] );
if ( $user_id )
{
$j2wp_user_array[$indx]['wp_id'] = $user_id;
}
else
{
if ( email_exists($joomla_user['email']) AND !empty($joomla_user['email']) )
{
echo '<br />ERROR: This users email address already exists - User can not be added !!!<br /><br />';
}
else
{
$random_password = wp_generate_password( 12, false );
if ( empty($joomla_user['email']) )
$ret = wp_create_user( $joomla_user['username'], $random_password);
else
$ret = wp_create_user( $joomla_user['username'], $random_password, $joomla_user['email'] );
$j2wp_user_array[$indx]['wp_id'] = $joomla_user['id'];
//lets updat the userID
if(!$wpdb->query("update wp_users set ID=".$joomla_user['id']." where ID=".$ret)) {
echo "update wp_users set ID=".$joomla_user['id']." where ID=".$ret;
exit;
}
//now re-select the ID as "ret:
$ret = $joomla_user['id'];
// set user meta data joomlapass for first login
add_user_meta( $ret, 'joomlapass', $joomla_user['password'] );
}
}
$indx++;
}
echo '<br /><br />' . "\n";
return $j2wp_user_array;
}