Example #1
0
 /**
  * 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'] . '&region=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;
 }