Get("Site_Path"); $admin = $objConfig->Get("AdminDirectory"); if(!strlen($admin)) $admin = "admin"; $localURL=$rootURL."kernel/"; $imagesURL = $rootURL."admin/images"; $adminURL = $rootURL.$admin; //admin only util $pathtolocal = $pathtoroot."kernel/"; require_once ($pathtoroot."admin/include/elements.php"); require_once ($pathtoroot."kernel/admin/include/navmenu.php"); require_once ($pathtolocal."admin/include/navmenu.php"); require_once($pathtoroot."admin/toolbar.php"); //Set Section $section = "in-portal:inlink_inport"; //Set Environment Variable $envar = "env=" . BuildEnv(); $sec = $objSections->GetSection($section); $title = admin_language("la_performing_import")." - ".admin_language("la_Step")." 4"; int_header(null,NULL,$title); $import_steps = Array(); $import_steps[] = Array('id' => 'users', 'caption' => 'Users, avatars'); // users + avatars $import_steps[] = Array('id' => 'user_banlist', 'caption' => 'Users Banrules'); // banned users $import_steps[] = Array('id' => 'cats', 'caption' => 'Categories'); $import_steps[] = Array('id' => 'forums', 'caption' => 'Forums'); $import_steps[] = Array('id' => 'topics', 'caption' => 'Topics'); $import_steps[] = Array('id' => 'posts', 'caption' => 'Posts'); $import_steps[] = Array('id' => 'smiles', 'caption' => 'Smiles'); error_reporting(E_ALL); ini_set('display_errors',1); ini_set('max_execution_time', 0); ini_set('memory_limit', '250M'); function PrintStep($step_rec) { echo '   '.$step_rec['caption'].' 0% ()   '; } function echof($s) // not in use { echo $s; flush(); } ?>
>
Script Running: 0 s
GetVariable('bb_prefix'); // may be phpBB uses prefix $sql_type = $objSession->GetVariable("import_inlink_sql_type"); $db_server = $objSession->GetVariable("import_inlink_server"); $db_name = $objSession->GetVariable("import_inlink_db"); $db_user = $objSession->GetVariable("import_inlink_user"); $db_pass = $objSession->GetVariable("import_inlink_pass"); $import_category_id = $objSession->GetVariable('import_category_id'); $user_admin = $objSession->GetVariable("user_admin_values"); $user_regular = $objSession->GetVariable("user_regular_values"); //$admin_group =& new clsPortalGroup($user_admin); $user_group =& new clsPortalGroup($user_regular); // made connection to source database $db =& ADONewConnection($sql_type); $db->PConnect($db_server, $db_user, $db_pass, $db_name); // get connection to destination database $dst_db =& GetADODBConnection(); // if connection error occured, then say this if(!$db) { echo "Database connection failed. DB Type: $sql_type, DB Server: $inlink_server, DB User: $inlink_user, DB Name: $inlink_db"; //fatal; echo $db->ErrorMsg(); exit; } $begin_time = microtime(); // connection made, so begin import // create custom fields for in-bulletin users (and show them on general tab) $user_fields = new clsCustomFieldList(DT_USER); $user_fields_created = $user_fields->GetFieldNames(); $uf_defs = Array( 'user_msn' => 'user_msnm', 'user_icq' => 'user_icq', 'user_aim' => 'user_aim', 'user_yahoo' => 'user_yim', 'user_website' => 'user_website', 'user_occupation' => 'user_occ', 'user_interests' => 'user_interests'); $pesistant_vars = Array('my_signature' => 'user_sig', 'bb_posts' => 'user_posts', 'smileys' => 'user_allowsmile', 'bbcode' => 'user_allowbbcode', 'bb_signatures' => 'user_attachsig'); foreach($uf_defs as $pending_uf => $no_in_use) if( !in_array($pending_uf, $user_fields_created) ) // don't create one customfield twice :) $user_fields->AddField(DT_USER, $pending_uf, '', 1, 'la_bb', 'la_'.$pending_uf, 'text', ''); // get users $cache['users'] = Array(); $sql = 'SELECT * FROM '.$bb_prefix.'users ORDER BY user_id'; $rs = $db->Execute($sql); InitCounter('users', $rs->RecordCount() ); // Create Anonymous User $user =& $objUsers->Add_User('Guest', '', 'anonymous@user.com', time(), '', '', 1, '', '', '', '', '', ''); $cache['users'][ -1 ] = $user->UniqueId(); $cache['users'][ 0 ] = $user->UniqueId(); unset($user); while(!$rs->EOF) { $rec =& $rs->fields; $address = explode(',', $rec['user_from']); // state, country foreach($address as $id => $addr_part) $address[$id] = trim($addr_part); $user_state = isset( $address[0] ) ? $address[0] : ''; $user_country = isset( $address[1] ) ? $address[1] : ''; $user =& $objUsers->Add_User($rec['username'], $rec['user_password'], $rec['user_email'], $rec['user_regdate'], '', '', $rec['user_active'], '', '', '', $user_state, '', $user_country); $user_id = $user->UniqueId(); // set user pesistant variables (why not custom fields) foreach($pesistant_vars as $dst_field => $src_field) SetPersistantVariable($user_id, $dst_field, $rec[$src_field]); // set user custom fields foreach($uf_defs as $dst_field => $src_field) $user->SetCustomField($dst_field, $rec[$src_field]); $user->SaveCustomFields(); // add user to user_group specified (in import step 3) $user_group->AddUser($user_id, 1); // add created user to cache $cache['users'][ $rec['user_id'] ] = Array('new_id' => $user_id, 'username' => $rec['username']); $processed['users']++; unset($user); SetStepPercent('users'); $rs->MoveNext(); } //unset($objUsers); // get ban rules $sql = 'SELECT * FROM '.$bb_prefix.'banlist ORDER BY ban_id'; $rs = $db->Execute($sql); $banrule_priority = 1; InitCounter('user_banlist', $rs->RecordCount() ); while(!$rs->EOF) { $rec =& $rs->fields; if( $rec['ban_userid'] ) { $tmp =& $objBanList->AddRule(DT_USER, 0, 'Login',1, $cache['users'][ $rec['ban_userid'] ]['username'], $banrule_priority, 1); unset($tmp); $banrule_priority++; } if( $rec['ban_ip'] ) { $tmp =& $objBanList->AddRule(DT_USER, 0, 'ip',1, DecodeIP( $rec['ban_ip'] ), $banrule_priority, 1); unset($tmp); $banrule_priority++; } if( $rec['ban_email'] ) { $tmp =& $objBanList->AddRule(DT_USER, 0, 'Email',1, $rec['ban_email'], $banrule_priority, 1); unset($tmp); $banrule_priority++; } $processed['user_banlist']++; SetStepPercent('user_banlist'); $rs->MoveNext(); } unset($objBanList); // get categories $cache['cats'] = Array(); $sql = 'SELECT * FROM '.$bb_prefix.'categories ORDER BY cat_order'; $rs = $db->Execute($sql); InitCounter('cats', $rs->RecordCount() ); while(!$rs->EOF) { $rec =& $rs->fields; $category =& $objCatList->Add( $import_category_id, $rec['cat_title'], $rec['cat_title'], time(), 0, 1, 2, 2, 2, $rec['cat_order'] / 10, '', ''); $cache['cats'][ $rec['cat_id'] ] = Array( 'new_id' => $category->UniqueId() ); $processed['cats']++; SetStepPercent('cats'); unset($category); $rs->MoveNext(); } // get forums $cache['forums'] = Array(); $sql = 'SELECT * FROM '.$bb_prefix.'forums ORDER BY cat_id'; $rs = $db->Execute($sql); InitCounter('forums', $rs->RecordCount() ); while(!$rs->EOF) { $rec =& $rs->fields; $category =& $objCatList->Add( $cache['cats'][ $rec['cat_id'] ]['new_id'], $rec['forum_name'], $rec['forum_desc'], time(), 0, 1, 2, 2, 2, $rec['forum_order'], '', ''); $cache['forums'][ $rec['forum_id'] ] = Array( 'new_id' => $category->UniqueId() ); $processed['forums']++; SetStepPercent('forums'); unset($category); $rs->MoveNext(); } //unset($objCatList); // get topics $cache['topics'] = Array(); $sql = 'SELECT * FROM '.$bb_prefix.'topics ORDER BY forum_id'; $rs = $db->Execute($sql); InitCounter('topics', $rs->RecordCount() ); while(!$rs->EOF) { $rec =& $rs->fields; $rec['topic_replies'] = $rec['topic_replies'] > 0 ? $rec['topic_replies'] : 0; $topic =& $objTopicList->Add_Topic( $rec['topic_title'], $cache['forums'][ $rec['forum_id'] ]['new_id'], 1, 0, 0, $rec['topic_time'], GetUserID( $rec['topic_poster'] ), Array('Posts' => $rec['topic_replies'], 'Views' => $rec['topic_views']) ); $cache['topics'][ $rec['topic_id'] ] = Array( 'new_id' => $topic->UniqueId() ); $processed['topics']++; SetStepPercent('topics'); unset($topic); $rs->MoveNext(); } unset($objTopicList); // get posts $cache['posts'] = Array(); $sql = 'SELECT * FROM '.$bb_prefix.'posts p LEFT JOIN '.$bb_prefix.'posts_text pt ON pt.post_id = p.post_id ORDER BY topic_id'; $rs = $db->Execute($sql); InitCounter('posts', $rs->RecordCount() + $total['topics'] ); // update each topic info too while(!$rs->EOF) { $rec =& $rs->fields; $post =& new clsPosting(); $post->Set( Array('IPAddress', 'PosterAlias', 'Subject', 'PostingText', 'CreatedOn', 'CreatedById', 'TopicId' ), Array( DecodeIP( $rec['poster_ip'] ), GetUserName( $rec['poster_id'] ), $rec['post_subject'], $rec['post_text'], $rec['post_time'], GetUserID( $rec['poster_id'] ), $cache['topics'][ $rec['topic_id'] ]['new_id'] ) ); $post->Create(); $cache['posts'][ $rec['post_id'] ] = Array( 'new_id' => $post->UniqueId() ); $processed['posts']++; SetStepPercent('posts'); unset($post); $rs->MoveNext(); } // set lastpostid for each topic $sql = 'SELECT topic_id, MAX(post_time) AS pt, post_id FROM '.$bb_prefix.' posts GROUP BY topic_id ORDER BY post_time DESC'; $rs = $db->Execute($sql); $update_sql = 'UPDATE '.GetTablePrefix().'Topic SET LastPostId = %s, LastPostDate = %s'; while(!$rs->EOF) { $rec =& $rs->fields; $tmp = sprintf($update_sql, $cache['posts'][ $rec['post_id'] ]['new_id'], $rec['pt']); $db->Execute($tmp); $processed['posts']++; SetStepPercent('posts'); $rs->MoveNext(); } // functions used function SetPersistantVariable($user_id, $var_name, $var_value) { global $dst_db; $sql_template = "REPLACE INTO ".GetTablePrefix()."PersistantSessionData (PortalUserId, VariableName, VariableValue) VALUES (%s,'%s','%s')"; $dst_db->Execute( sprintf($sql_template, $user_id, $var_name, $var_value) ); } function SetStepPercent($step_id, $new_percent = false) { if($new_percent === false) { global $total, $processed, $progress_display; $new_percent = ($processed[$step_id] / $total[$step_id]) * 100; $new_percent = round($new_percent, 1); if( $processed[$step_id] % $progress_display[$step_id] != 0 ) return false; } $time_runs = microtime() - $GLOBALS['begin_time']; echo ''; flush(); } function DecodeIP($ip) { $i = 0; $ip_len = strlen($ip); $ip_parts = Array(); while($i < $ip_len) { $ip_parts[] = hexdec( substr($ip, $i, 2) ); $i += 2; } return implode('.', $ip_parts); } function GetUserID($old_user_id) { global $cache; return $cache['users'][ $old_user_id ]['new_id']; } function GetUserName($old_user_id) { global $cache; return $cache['users'][ $old_user_id ]['username']; } function InitCounter($step_id, $total_count) { global $processed, $total, $progress_display; $processed[$step_id] = 0; $total[$step_id] = $total_count; $progress_display[$step_id] = ceil($total[$step_id] / 10); // display progress in 1 of 10 times requested } ?>