コード例 #1
0
 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');
 }
コード例 #2
0
 /**
  * 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;
 }