26-09-14, 06:57 AM
اتعبتك معي كثيرا فالله يعينك ويعوضك بخير مما ذهب منك من وقت وجهد
هذي دالة تحويل تشفير vbulletin to mybb
لي يوم كامل احاول افهمها وما قدرت.
كود :
function import()
{
global $import_session;
// Get members
$query = $this->old_db->simple_select("user", "*", "", array('order_by' => 'userid', 'order_dir' => 'asc', 'limit_start' => $this->trackers['start_users'], 'limit' => $import_session['users_per_screen']));
while($user = $this->old_db->fetch_array($query))
{
$this->insert($user);
}
}
function convert_data($data)
{
$insert_data = array();
// vBulletin 4 values
$insert_data['usergroup'] = $this->board->get_group_id($data['usergroupid'], array("not_multiple" => true));
$insert_data['additionalgroups'] = str_replace($insert_data['usergroup'], '', $this->board->get_group_id($data['usergroupid']));
$insert_data['displaygroup'] = $this->board->get_group_id($data['usergroupid'], array("not_multiple" => true));
$insert_data['import_usergroup'] = $this->board->get_group_id($data['usergroupid'], array("original" => true));
$insert_data['import_additionalgroups'] = $this->board->get_group_id($data['usergroupid'], array("original" => true));
$insert_data['import_displaygroup'] = $data['displaygroupid'];
$insert_data['import_uid'] = $data['userid'];
$insert_data['username'] = encode_to_utf8($data['username'], "user", "users");
$insert_data['email'] = $data['email'];
$insert_data['regdate'] = $data['joindate'];
$insert_data['lastactive'] = $data['lastactivity'];
$insert_data['lastvisit'] = $data['lastvisit'];
$insert_data['website'] = $data['homepage'];
$avatar = $this->get_avatar($data['avatarid']);
if(!$avatar)
{
$customavatar = $this->get_custom_avatar($data['userid']);
if(!$customavatar)
{
$insert_data['avatardimensions'] = '';
$insert_data['avatar'] = '';
$insert_data['avatartype'] = '';
}
}
else
{
list($width, $height) = @getimagesize($avatar['avatarpath']);
$insert_data['avatardimensions'] = $width.'|'.$height;
$insert_data['avatar'] = $avatar['avatarpath'];
$insert_data['avatartype'] = 'remote';
}
$insert_data['lastpost'] = $data['lastpost'];
$data['birthday'] = trim($data['birthday']);
if(!empty($data['birthday']))
{
list($bmonth, $bday, $byear) = explode("-", $data['birthday']);
$insert_data['birthday'] = $bday."-".$bmonth."-".$byear;
}
// Don't ask me why some guys insert an ICQ number with more than 9 characters, but we need to avoid sql errors...
$insert_data['icq'] = substr($data['icq'], 0, 10);
$insert_data['aim'] = $data['aim'];
$insert_data['yahoo'] = $data['yahoo'];
$insert_data['skype'] = $data['skype'];
$insert_data['timezone'] = str_replace(array('.0', '.00'), array('', ''), $insert_data['timezone']);
$insert_data['style'] = 0;
$insert_data['referrer'] = $data['referrerid'];
$insert_data['regip'] = my_inet_pton($data['ipaddress']);
$insert_data['totalpms'] = $data['pmtotal'];
$insert_data['unreadpms'] = $data['pmunread'];
$insert_data['passwordconvert'] = $data['password'];
$insert_data['passwordconverttype'] = 'vb4';
$insert_data['passwordconvertsalt'] = $data['salt'];
$insert_data['signature'] = encode_to_utf8($this->bbcode_parser->convert($this->get_signature($data['userid'])), "user", "users");
return $insert_data;
}
----------------------------------
function loginconvert_convert(&$login)
{
global $mybb, $valid_login_types, $db, $settings;
$options = array(
"fields" => array('username', "password", "salt", 'loginkey', 'coppauser', 'usergroup', "passwordconvert", "passwordconverttype", "passwordconvertsalt"),
"username_method" => (int)$settings['username_method']
);
if($login->username_method !== null)
{
$options['username_method'] = (int)$login->username_method;
}
$user = get_user_by_username($login->data['username'], $options);
// There's nothing to check for, let MyBB do everything
// This fails also when no user was found above, so no need for an extra check
if(!isset($user['passwordconvert']) || $user['passwordconvert'] == '')
{
return;
}
if(!array_key_exists($user['passwordconverttype'], $valid_login_types))
{
// TODO: Is there an easy way to make the error translatable without adding a new language file?
redirect($mybb->settings['bburl']."/member.php?action=lostpw", "We're sorry but we couldn't convert your old password. Please select a new one", "", true);
}
else
{
$function = "check_".$valid_login_types[$user['passwordconverttype']];
$check = $function($login->data['password'], $user);
if(!$check)
{
// Yeah, that function is called later too, but we need to know whether the captcha is right
// If we wouldn't call that function the error would always be shown
$login->verify_attempts($mybb->settings['captchaimage']);
$login->invalid_combination(true);
}
else
{
// The password was correct, so use MyBB's method the next time (even if the captcha was wrong we can update the password)
$salt = generate_salt();
$update = array(
"salt" => $salt,
"password" => salt_password(md5($login->data['password']), $salt),
"loginkey" => generate_loginkey(),
"passwordconverttype" => "",
"passwordconvert" => "",
"passwordconvertsalt" => "",
);
$db->update_query("users", $update, "uid='{$user['uid']}'");
// Make sure the password isn't tested again
unset($login->data['password']);
// Also make sure all data is available when creating the session (otherwise SQL errors -.-)
$login->login_data = array_merge($user, $update);
}
}
}
// Password functions
function check_vb($password, $user)
{
if(md5(md5($password).$user['passwordconvertsalt']) == $user['passwordconvert'] || md5($password.$user['passwordconvertsalt']) == $user['passwordconvert'])
{
return true;
}
return false;
}هذي دالة تحويل تشفير vbulletin to mybb
لي يوم كامل احاول افهمها وما قدرت.
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير

