public function main() { WoW_Template::SetPageData('body_class', WoW_Locale::GetLocale(LOCALE_DOUBLE)); WoW_Template::SetTemplateTheme('wow'); $url_data = WoW::GetUrlData('character'); if (!$url_data) { WoW_Template::SetPageIndex('404'); WoW_Template::SetPageData('page', '404'); WoW_Template::SetPageData('errorProfile', 'template_404'); } else { if ($url_data['action0'] == 'advanced') { // Set "wow.character.summary.view" cookie as "advanced" setcookie('wow.character.summary.view', 'advanced', strtotime('NEXT YEAR'), '/' . WoW::GetWoWPath() . '/character/'); } elseif ($url_data['action0'] == null && (isset($url_data['name']) && isset($url_data['realmName']))) { WoW::RedirectToCorrectProfilePage('simple'); //change to WoW::RedirectTo()? } elseif ($url_data['action0'] == 'simple') { // Set "wow.character.summary.view" cookie as "simple" setcookie('wow.character.summary.view', 'simple', strtotime('NEXT YEAR'), '/' . WoW::GetWoWPath() . '/character/'); } $load_result = WoW_Characters::LoadCharacter($url_data['name'], WoW_Utils::GetRealmIDByName($url_data['realmName']), true, true); if (!WoW_Characters::IsCorrect() || $load_result != 3) { if ($url_data['action0'] == 'tooltip') { exit; } if ($load_result == 2) { WoW_Template::SetPageData('errorProfile', 'template_lowlevel'); } else { WoW_Template::SetPageData('errorProfile', 'template_404'); } WoW_Template::SetPageIndex('404'); WoW_Template::SetPageData('page', '404'); } else { WoW_Achievements::Initialize(); WoW_Template::SetPageData('characterName', WoW_Characters::GetName()); WoW_Template::SetPageData('characterRealmName', WoW_Characters::GetRealmName()); switch ($url_data['action0']) { default: WoW_Template::SetPageIndex('character_profile_simple'); WoW_Template::SetPageData('page', 'character_profile'); WoW_Characters::CalculateStats(true); break; case 'advanced': WoW_Template::SetPageIndex('character_profile_advanced'); WoW_Template::SetPageData('page', 'character_profile'); WoW_Characters::CalculateStats(true); break; /* case 'talent': WoW_Template::SetPageIndex('character_talents'); WoW_Template::SetPageData('page', 'character_talents'); WoW_Template::SetPageData('talents', 'primary'); if($url_data['action1'] == 'secondary') { WoW_Template::SetPageData('talents', 'secondary'); } break; */ /* case 'talent': WoW_Template::SetPageIndex('character_talents'); WoW_Template::SetPageData('page', 'character_talents'); WoW_Template::SetPageData('talents', 'primary'); if($url_data['action1'] == 'secondary') { WoW_Template::SetPageData('talents', 'secondary'); } break; */ case 'tooltip': WoW_Template::LoadTemplate('page_character_tooltip'); exit; break; case 'achievement': for ($i = 2; $i > 0; $i--) { if (isset($url_data['action' . $i]) && $url_data['action' . $i] != null) { WoW_Achievements::SetCategoryForTemplate($url_data['action' . $i]); WoW_Template::LoadTemplate('page_character_achievements'); exit; } } WoW_Template::SetPageIndex('character_achievements'); WoW_Template::SetPageData('page', 'character_achievements'); break; case 'reputation': if (isset($url_data['action1']) && $url_data['action1'] == 'tabular') { WoW_Template::SetPageIndex('character_reputation_tabular'); } else { WoW_Template::SetPageIndex('character_reputation'); } WoW_Template::SetPageData('page', 'character_reputation'); WoW_Reputation::InitReputation(WoW_Characters::GetGUID()); break; case 'pvp': WoW_Template::SetPageIndex('character_pvp'); WoW_Template::SetPageData('page', 'character_pvp'); WoW_Characters::InitPvP(); break; case 'statistic': for ($i = 2; $i > 0; $i--) { if (isset($url_data['action' . $i]) && $url_data['action' . $i] != null) { WoW_Achievements::SetCategoryForTemplate($url_data['action' . $i]); WoW_Template::LoadTemplate('page_character_statistics'); exit; } } WoW_Template::SetPageIndex('character_statistics'); WoW_Template::SetPageData('page', 'character_statistics'); break; case 'feed': WoW_Template::SetPageIndex('character_feed'); WoW_Template::SetPageData('page', 'character_feed'); break; case 'companion': case 'mount': WoW_Template::SetPageIndex('character_companions_mounts'); WoW_Template::SetPageData('page', 'character_companions_mounts'); WoW_Template::SetPageData('category', $url_data['action0']); WoW_Characters::InitMounts(); break; } } } WoW_Template::SetMenuIndex('menu-game'); WoW_Template::LoadTemplate('page_index'); }
/** * Loads character data * @param string $name * @param int $realm_id * @param boolean $full = true * @param boolean $initialBuild = true * @return boolean **/ public static function LoadCharacter($name, $realm_id, $full = true, $initialBuild = true) { // Data checks if (!is_string($name) || $name == null) { WoW_Log::WriteError('%s : name must be a string (%s given.)!', __METHOD__, gettype($name)); return 1; } if (!$realm_id || $realm_id == 0) { WoW_Log::WriteError('%s : realm ID must be > 0!', __METHOD__); return 1; } if (!isset(WoWConfig::$Realms[$realm_id])) { WoW_Log::WriteError('%s : unable to find realm with ID #%d. Check your configs.', __METHOD__, $realm_id); return 1; } // Connect to characters DB DB::ConnectToDB(DB_CHARACTERS, $realm_id, true, false); // Check connection if (!DB::Characters()->TestLink()) { // Message about failed connection will appear from database handler class. return 1; } self::$m_dbHash = DB::Characters()->GetDatabaseInfo('hash'); // BINARY. self::$name = mb_convert_case($name, MB_CASE_TITLE, "UTF-8"); // If $full == true, we need to check `armory_character_stats` table. // Load character fields. if (!self::LoadCharacterFieldsFromDB()) { return 1; } // Some checks before script will load `data` field. if (!self::IsCharacterFitsRequirements()) { return 2; } // Set Realm's variables self::$realmID = $realm_id; self::$realmName = WoWConfig::$Realms[$realm_id]['name']; self::$m_server = WoWConfig::$Realms[$realm_id]['type']; // Convert equipmentCache field from string to array. self::HandleEquipmentCacheInfo(); if ($full) { if (!self::IsCharacterDataAvailable()) { WoW_Log::WriteError('%s : data for character %s was not found in `armory_character_stats` table! Please, make sure that you have patched core and updated characters DB with provided SQL update.', __METHOD__, self::$name); return false; } // Data exists, load it. self::$data = DB::Characters()->selectCell("SELECT `data` FROM `armory_character_stats` WHERE `guid`=%d LIMIT 1", self::$guid); // Convert string to array self::HandleDataField(); // Last update date self::$last_update = DB::Characters()->selectCell("SELECT `save_date` FROM `armory_character_stats` WHERE `guid` = %d LIMIT 1", self::$guid); // Class/race names/keys self::$class_name = WoW_Locale::GetString('character_class_' . self::$class, self::$gender); self::$race_name = WoW_Locale::GetString('character_race_' . self::$race, self::$gender); self::$class_key = Data_Classes::$classes[self::$class]['key']; self::$race_key = Data_Races::$races[self::$race]['key']; WoW_Achievements::Initialize(); // Load Inventory self::LoadInventory(true); self::CalculateAverageItemLevel(); // Load Professions self::LoadProfessions(); // Load Feeds self::LoadFeed(); self::HandleFeed(); } // Load title data if (self::$chosenTitle > 0) { self::HandleChosenTitleInfo(); } // Set power type self::SetPowerType(); // Finish if ($initialBuild) { WoW_Log::WriteLog('%s : character %s (GUID: %d) was loaded without problems.', __METHOD__, self::$name, self::$guid); } return 3; }