<?
set_time_limit
(0);
if (!
file_exists('./vars.php'))
    die(
'File vars.php does\'t exist');
else
    include(
'./vars.php');

$lastID 40072;

/*~~~~~~~~~~ define's section ~~~~~~~~~*/
define('DB_HOST''localhost');// DB host
define('DB_LOGIN''');// login to DB
define('DB_PASS''');// pass to DB
define('DB_NAME''');// DB name
define('PHPBB_PREFIX''phpbb_');// prefix to phpBB's tables
define('NEW_SITE_ID''s1');// site for new users
define('NEW_USERS_GROUPS''3 | 18');// ID of groups for new users
define('TBL_BANLIST'PHPBB_PREFIX.'banlist');// table with banned users (or "null")
define('PATH_TO_AVATAR'$_SERVER['DOCUMENT_ROOT'].'/t/#AVATAR_NAME#');// http://site.ru/... or $_SERVER['DOCUMENT_ROOT']
define('LIMIT_FOR_ONE_STEP''1000');// max limit for one select
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/

/*~~~~~~~~ variable's section ~~~~~~~~~*/
$arAllUsers = array();
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/

/*~~~~~~~~~~~~ connect to DB ~~~~~~~~~~*/
$link mysql_connect(DB_HOSTDB_LOGINDB_PASS);
if (!
$link)
{
    die(
"Error connect to DB!");
}
/*~~~~~~~~ afterconnect section ~~~~~~~~*/
mysql_query("SET NAMES 'UTF8'");
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
mysql_select_db(DB_NAME);
if (
$e mysql_error($link))
{
    die(
$e);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/

/*~~~~~~~~ function's section ~~~~~~~~~*/
function __ConvertPosts($txt)
{
    global 
$arTruncateBB;

    
// truncate BB
    
foreach ($arTruncateBB as $bb)
    {
        
$txt preg_replace('/(\['.$bb.'.*?\])/'""$txt);
        
$txt preg_replace('/(\[\/'.$bb.'\])/'""$txt);
    }

    
// special chars
    
$txt preg_replace('/(&#([\d]+);)/e'"chr('\\2')"$txt);
    
// smiles by CAHbI4
    
$txt preg_replace('/(<!--[ ]+s.*?[ ]+-->.*?<img.*?alt="(.*?)".*?\/>.*?<!--[ ]+s.*?[ ]+-->)/''${2}'$txt);
    
// links
    
$txt preg_replace('/(<a.*?href="(.*?)".*?>(.*?)<\/a>)/''[url=${2}]${3}[/url]'$txt);
    
// quotes by CAHbI4
    
$txt preg_replace('/(.*?\[quote)=&quot;(.*?)&quot;\](.*?)/''${1}]${2} '.QUOTE_WRITE.':'."\n".' ${3}'$txt, -1$rpl_cnt);
    
// tech.comments
    
$txt preg_replace('/(<!--.*?-->)/'""$txt);

    return 
$txt;
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/

/*~~~~~~~~~~~~~ main select ~~~~~~~~~~~*/
if (TBL_BANLIST != "null")
    
$banSql "";
else
    
$banSql "";
$strSql " SELECT
                *
            FROM
                "
.PHPBB_PREFIX."users
            WHERE
                user_id>1 and user_id > 
$lastID
            ORDER BY
                user_id ASC
            LIMIT "
.LIMIT_FOR_ONE_STEP.";";
$rsUsers mysql_query($strSql);
if (
$e mysql_error($link))
{
    die(
$e);
}
while (
$arUsers mysql_fetch_assoc($rsUsers))
{
    
$arUsers["active"] = "Y";
    if (
TBL_BANLIST != "null")
    {
        
$strSql "SELECT * FROM ".TBL_BANLIST." WHERE ban_userid=".$arUsers["user_id"]." AND ban_end<".time();
        
$rsBan mysql_query($strSql);
        if (
$e mysql_error($link))
        {
            die(
$e);
        }
        if (
$a mysql_fetch_assoc($rsBan))
        {
            
$arUsers["active"] = "N";
        }
    }

    
$arUsers["user_sig"] = __ConvertPosts($arUsers["user_sig"]);
    
$arAllUsers[] = $arUsers;
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
mysql_close($link);
?>
<?
require($_SERVER['DOCUMENT_ROOT']."/bitrix/header.php");
$APPLICATION->SetTitle("Update users");
?>
<?
$user 
= new CUser;

foreach (
$arAllUsers as $arUser):

    echo 
"Adding ".$arUser["user_id"].": ";

    
$rsUser CUser::GetList($by="ID"$order="DESC", array("EMAIL" => $arUser["user_email"]));
    if (
$arU $rsUser->GetNext())
    {
        echo 
"<font color=\"blue\">user with same email exist, ID=".$arU["ID"]."</font>, ";
        if (
$user->Update($arU["ID"], array("UF_PHPBB_ID" => $arUser["user_id"])))
        {
            echo 
"<font color=\"green\">success update</font>";
        }
        else
        {
            echo 
"<font color=\"red\">error update: ".$user->LAST_ERROR.".</font>";
        }
        echo 
"<br />";
        continue;
    }

    
$rsUser CUser::GetList($by="ID"$order="DESC", array("LOGIN_EQUAL_EXACT" => $arUser["username"]));
    if (
$arU $rsUser->GetNext())
    {
        echo 
"<font color=\"blue\">user with same login (".$arUser["username"].") exist, ID=".$arU["ID"].", login replaced to ".$arUser["user_email"]."</font>, ";
        
$arUser["username"] = $arUser["user_email"];
    }

    
$bdTS MakeTimeStamp($arUser["user_birthday"], "DD-MM-YYYY");
    
$arFields = Array(
        
"EMAIL"             => $arUser["user_email"],
        
"LOGIN"             => $arUser["username"],
        
"LID"               => NEW_SITE_ID,
        
"ACTIVE"            => $arUser["active"],
        
"GROUP_ID"          => explode("|"NEW_USERS_GROUPS),
        
"PASSWORD"          => $arUser["user_password"],
        
"CONFIRM_PASSWORD"  => $arUser["user_password"],
        
"PERSONAL_BIRTHDAY"    => $bdTS date($DB->DateFormatToPHP(CLang::GetDateFormat("FULL")), $bdTS) : "",
        
"DATE_REGISTER"     => date($DB->DateFormatToPHP(CLang::GetDateFormat("FULL")), $arUser["user_regdate"]),
        
"PERSONAL_CITY"     => $arUser["user_from"],
        
"PERSONAL_ICQ"      => $arUser["user_icq"],
        
"PERSONAL_WWW"      => $arUser["user_website"],
        
"PERSONAL_PROFESSION"=> $arUser["user_occ"],
        
"UF_PHPBB_ID"       => $arUser["user_id"],
    );

    
$ID $user->Add($arFields);
    if (
$ID 0)
    {
        if (
CModule::IncludeModule("forum"))
        {
            
$arAvatar CFile::MakeFileArray(str_replace("#AVATAR_NAME#"$arUser["user_avatar"], PATH_TO_AVATAR));
            
$arFields = array(
                            
"USER_ID"             => $ID,
                            
"INTERESTS"            => $arUser["user_interests"],
                            
"SIGNATURE"            => $arUser["user_sig"],
                            
"DATE_REG"            => date($DB->DateFormatToPHP(CLang::GetDateFormat("FULL")), $arUser["user_regdate"]),
                            
"LAST_VISIT"        => date($DB->DateFormatToPHP(CLang::GetDateFormat("FULL")), $arUser["user_lastvisit"]),
                            
"HIDE_FROM_ONLINE"    => $arUser["user_allow_viewonline"]=="N" "Y",
                            
"AVATAR"            => $arAvatar["tmp_name"] != "" $arAvatar "",
                            );
            
CForumUser::Add($arFields);
        }
        echo 
"<font color=\"green\">success add user, new ID = $ID</font>";
    }
    else
    {
        echo 
"<font color=\"red\">error add: ".$user->LAST_ERROR.".</font>";
    }

    echo 
"<br />";

endforeach;
?>
<?
require($_SERVER['DOCUMENT_ROOT']."/bitrix/footer.php");?>