/** * Performs account conversion (merging) step * * @access public * @static WoW_Account::PerformConversionStep($step, $post_data = false) * @param int $step * @param array $post_data = false * @category Account Manager Class * @return bool **/ public static function PerformConversionStep($step, $post_data = false) { switch ($step) { case 1: // Find account in realm DB and check passwords matching if (!is_array($post_data)) { // Wrong post data WoW_Template::SetPageData('conversion_error', true); WoW_Template::SetPageData('account_creation_error_msg', WoW_Locale::GetString('template_account_conversion_error1')); return false; } $info = DB::Realm()->selectRow("SELECT `id`, `sha_pass_hash` FROM `account` WHERE `username` = '%s' LIMIT 1", $post_data['username']); $sha = sha1(strtoupper($post_data['username']) . ':' . strtoupper($post_data['password'])); if (!$info || $info['sha_pass_hash'] != $sha) { // Wrong post data WoW_Template::SetPageData('conversion_error', true); WoW_Template::SetPageData('account_creation_error_msg', WoW_Locale::GetString('template_account_conversion_error1')); return false; } // Check account link if (DB::WoW()->selectCell("SELECT 1 FROM `DBPREFIX_users_accounts` WHERE `account_id` = %d", $info['id'])) { // Already linked WoW_Template::SetPageData('conversion_error', true); WoW_Template::SetPageData('account_creation_error_msg', WoW_Locale::GetString('template_account_conversion_error2')); return false; } // All fine $_SESSION['conversion_userName'] = $post_data['username']; $_SESSION['conversion_userID'] = $info['id']; break; case 3: // Check session $conversion_allowed = true; if (!isset($_SESSION['conversion_userName']) || !isset($_SESSION['conversion_userID'])) { $conversion_allowed = false; } else { if ($_SESSION['conversion_userName'] == null) { $conversion_allowed = false; } if ($_SESSION['conversion_userID'] == 0) { $conversion_allowed = false; } } if (!$conversion_allowed) { header('Location: ' . WoW::GetWoWPath() . '/account/management/wow-account-conversion.html'); exit; } // Link account if (DB::WoW()->query("INSERT INTO `DBPREFIX_users_accounts` VALUES (%d, %d)", self::GetUserID(), (int) $_SESSION['conversion_userID'])) { header('Location: ' . WoW::GetWoWPath() . '/account/management/wow/dashboard.html?accountName=' . $_SESSION['conversion_userName'] . '®ion=EU'); exit; } break; default: return false; } return true; }
public static function GetRealmStatus($realmID = false) { if ($realmID === false) { $realmList = DB::Realm()->select("SELECT `id`, `name`, `address`, `port`, `icon`, `timezone` FROM `realmlist`"); } else { if (!WoWConfig::$UseRealmsStatus) { return false; } if (isset(self::$realmsStatusCache[$realmID])) { return self::$realmsStatusCache[$realmID]; } $realmList[] = DB::Realm()->selectRow("SELECT `id`, `name`, `address`, `port`, `icon`, `timezone` FROM `realmlist` WHERE `id` = %d", $realmID); } if (!$realmList) { return false; } $size = count($realmList); for ($i = 0; $i < $size; ++$i) { $errNo = 0; $errStr = 0; $realmList[$i]['status'] = @fsockopen($realmList[$i]['address'], $realmList[$i]['port'], $errNo, $errStr, 1) ? 'up' : 'down'; switch ($realmList[$i]['icon']) { default: case 0: case 4: $realmList[$i]['type'] = 'PvE'; break; case 1: $realmList[$i]['type'] = 'PvP'; break; case 6: $realmList[$i]['type'] = WoW_Locale::GetString('template_realm_status_type_roleplay'); break; case 8: $realmList[$i]['type'] = WoW_Locale::GetString('template_realm_status_type_rppvp'); break; } switch ($realmList[$i]['timezone']) { default: $realmList[$i]['language'] = 'Development Realm'; break; case 8: $realmList[$i]['language'] = WoW_Locale::GetString('template_locale_en'); break; case 9: $realmList[$i]['language'] = WoW_Locale::GetString('template_locale_de'); break; case 10: $realmList[$i]['language'] = WoW_Locale::GetString('template_locale_fr'); break; case 11: $realmList[$i]['language'] = WoW_Locale::GetString('template_locale_es'); break; case 12: $realmList[$i]['language'] = WoW_Locale::GetString('template_locale_ru'); break; } self::$realmsStatusCache[$realmList[$i]['id']] = $realmList[$i]; } return $realmList; }
private static function IsCharacterFitsRequirements() { if (self::$level < WoWConfig::$MinLevelToDisplay) { WoW_Log::WriteLog('%s : unable to display character %s (GUID: %d) because of level restriction.', __METHOD__, self::$name, self::$guid); return false; } if (self::$class >= MAX_CLASSES) { WoW_Log::WriteError('%s : character %s (GUID: %d) has wrong classID: %d.', __METHOD__, self::$name, self::$guid, self::$class); return false; } if (self::$race >= MAX_RACES) { Wow_Log::WriteError('%s : character %s (GUID: %d) has wrong raceID: %d.', __METHOD__, self::$name, self::$guid, self::$race); return false; } self::$factionID = WoW_Utils::GetFactionId(self::$race); if (!in_array(self::$factionID, array(FACTION_ALLIANCE, FACTION_HORDE))) { Wow_Log::WriteError('%s : character %s (GUID: %d) has wrong factionID: %d.', __METHOD__, self::$name, self::$guid, self::$factionID); return false; } $isBanned = DB::Realm()->selectCell("SELECT 1 FROM `account_banned` WHERE `id` = %d AND `active` = 1", self::$account); if ($isBanned && WoWConfig::$SkipBanned) { WoW_Log::WriteError('%s : unable to load character %s (GUID: %d) from banned account %d.', __METHOD__, self::$name, self::$guid, self::$account); return false; } return true; }