/** * Returns array with all characters. * @category Utils class * @access public * @return array **/ public function GetAllCharacters() { if (!isset($_SESSION['accountId'])) { return false; } $results = array(); foreach (Armory::$realmData as $realm_info) { $db = new Armory::$dbClass($realm_info['host_characters'], $realm_info['user_characters'], $realm_info['pass_characters'], $realm_info['port_characters'], $realm_info['name_characters'], $realm_info['charset_characters']); if (!$db) { continue; } $chars_data = $db->select("\n SELECT\n `characters`.`guid`,\n `characters`.`name`,\n `characters`.`class` AS `classId`,\n `characters`.`race` AS `raceId`,\n `characters`.`gender` AS `genderId`,\n `characters`.`level`,\n `guild_member`.`guildid` AS `guildId`,\n `guild`.`name` AS `guild`\n FROM `characters` AS `characters`\n LEFT JOIN `guild_member` AS `guild_member` ON `guild_member`.`guid`=`characters`.`guid`\n LEFT JOIN `guild` AS `guild` ON `guild`.`guildid`=`guild_member`.`guildId`\n WHERE `characters`.`account`=%d", $_SESSION['accountId']); if (!$chars_data) { Armory::Log()->writeLog('%s : no characters found for account %d in `%s` database', __METHOD__, $_SESSION['accountId'], $realm_info['name_characters']); continue; } foreach ($chars_data as $realm) { $realm['account'] = strtoupper($_SESSION['username']); $realm['factionId'] = self::GetFactionId($realm['raceId']); $realm['realm'] = $realm_info['name']; $realm['relevance'] = 100; if ($realm['level'] < Armory::$armoryconfig['minlevel']) { $realm['relevance'] = 0; } elseif ($realm['level'] >= Armory::$armoryconfig['minlevel'] && $realm['level'] <= 79) { $realm['relevance'] = $realm['level']; } elseif ($realm['level'] == MAX_PLAYER_LEVEL) { $realm['relevance'] = 100; } else { $realm['relevance'] = 0; // Unknown } $realm['url'] = sprintf('r=%s&cn=%s', urlencode($realm['realm']), urlencode($realm['name'])); $realm['selected'] = Armory::$aDB->selectCell("SELECT `selected` FROM `ARMORYDBPREFIX_login_characters` WHERE `account`=%d AND `guid`=%d AND `realm_id`=%d LIMIT 1", $_SESSION['accountId'], $realm['guid'], $realm_info['id']); if ($realm['selected'] > 2) { $realm['selected'] = 2; } elseif ($realm['selected'] == 0) { unset($realm['selected']); } $ach = new Achievements(); $ach->InitAchievements($realm['guid'], $db); $realm['achPoints'] = $ach->CalculateAchievementPoints(); unset($realm['guid'], $ach); // Do not show GUID in XML results $results[] = $realm; } } if (is_array($results)) { return $results; } Armory::Log()->writeLog('%s : unable to find any character for account %d', __METHOD__, $_SESSION['accountId']); return false; }