private static function HandleGuildFeed() { if (!self::IsCorrect()) { WoW_Log::WriteError('%s : guild was not found.', __METHOD__); return false; } if (!self::$guild_feed) { self::LoadGuildFeed(); } $feeds_data = array(); $periods = array(WoW_Locale::GetString('template_feed_sec'), WoW_Locale::GetString('template_feed_min'), WoW_Locale::GetString('template_feed_hour')); $today = date('d.m.Y'); $lengths = array(60, 60, 24); $feed_count = 0; foreach (self::$guild_feed as $event) { if ($feed_count >= 25) { break; } $date_string = date('d.m.Y', $event['date']); if ($date_string == $today) { $diff = time() - $event['date']; for ($i = 0; $diff >= $lengths[$i]; $i++) { $diff /= $lengths[$i]; } $diff = round($diff); $date_string = sprintf('%s %s %s', $diff, $periods[$i], WoW_Locale::GetString('template_feed_ago')); } $feed = array(); switch ($event['type']) { case TYPE_ACHIEVEMENT_FEED: $achievement = WoW_Achievements::GetAchievementInfo($event['data']); if (!$achievement) { WoW_Log::WriteLog('%s : wrong feed data (TYPE_ACHIEVEMENT_FEED, achievement ID: %d), ignore.', __METHOD__, $event['data']); continue; } $feed = array('type' => TYPE_ACHIEVEMENT_FEED, 'date' => $date_string, 'id' => $event['data'], 'points' => $achievement['points'], 'name' => $achievement['name'], 'desc' => $achievement['desc'], 'icon' => $achievement['iconname'], 'category' => $achievement['categoryId'], 'charName' => $event['charName'], 'gender' => $event['gender']); break; case TYPE_ITEM_FEED: $item = WoW_Items::GetItemInfo($event['data']); if (!$item) { WoW_Log::WriteLog('%s : wrong feed data (TYPE_ITEM_FEED, item ID: %d), ignore.', __METHOD__, $event['data']); continue; } $item_icon = WoW_Items::GetItemIcon($item['entry'], $item['displayid']); $data_item = null; $feed = array('type' => TYPE_ITEM_FEED, 'date' => $date_string, 'id' => $event['data'], 'name' => WoW_Locale::GetLocale() == 'en' ? $item['name'] : WoW_Items::GetItemName($item['entry']), 'data-item' => $data_item, 'quality' => $item['Quality'], 'icon' => $item_icon, 'charName' => $event['charName'], 'gender' => $event['gender']); break; case TYPE_BOSS_FEED: // Not supported here. continue; default: WoW_Log::WriteError('%s : unknown feed type (%d)!', __METHOD__, $event['type']); continue; } $feeds_data[] = $feed; $feed_count++; } self::$guild_feed_data = $feeds_data; return true; }
/** * @return array **/ public function GetSocketInfo($num, $enchant_id_only = false) { if ($num <= 0 || $num > 4) { return 0; } if (isset($this->m_socketInfo[$num])) { return $enchant_id_only ? $this->m_socketInfo[$num]['enchant_id'] : $this->m_socketInfo[$num]; } $data = array(); switch ($this->m_server) { case SERVER_MANGOS: $socketfield = array(1 => ITEM_FIELD_ENCHANTMENT_3_2, 2 => ITEM_FIELD_ENCHANTMENT_4_2, 3 => ITEM_FIELD_ENCHANTMENT_5_2); $socketInfo = $this->GetUInt32Value($socketfield[$num] - 1); break; case SERVER_TRINITY: $socketfield = array(1 => 6, 2 => 9, 3 => 12); $socketInfo = $this->tc_ench[$socketfield[$num]]; break; default: WoW_Log::WriteError('%s : unknown server type (%d)', __METHOD__, $this->m_server); return false; break; } if ($socketInfo > 0) { if ($enchant_id_only) { return $socketInfo; } $gemData = DB::Wow()->selectRow("SELECT `text_%s` AS `text`, `gem` FROM `DBPREFIX_enchantment` WHERE `id`=%d", WoW_Locale::GetLocale(), $socketInfo); $data['enchant_id'] = $socketInfo; $data['item'] = $gemData['gem']; $data['icon'] = WoW_Items::GetItemIcon($data['item']); $data['enchant'] = $gemData['text']; $data['quality'] = DB::World()->selectCell("SELECT `Quality` FROM `item_template` WHERE `entry` = %d", $data['item']); $data['name'] = WoW_Items::GetItemName($data['item']); $data['color'] = DB::Wow()->selectCell("SELECT `color` FROM `DBPREFIX_gemproperties` WHERE `spellitemenchantement`=%d", $socketInfo); $this->m_socketInfo[$num] = $data; // Is it neccessary? return $data; } return false; }
public static function BBCodesToHTML($post_text) { $matches = array(); if (preg_match_all('/\\[item\\=(.+?)\\/]/x', $post_text, $matches)) { $count = count($matches[0]); // Replace [item] tag for ($i = 0; $i < $count; ++$i) { $info = WoW_Items::GetItemInfo(isset($matches[1][$i]) ? str_replace('"', '', $matches[1][$i]) : 0); if (!$info) { continue; } $post_text = str_replace($matches[0][$i], sprintf('<a href="%s/wow/%s/item/%d" class="bml-link-item color-q%d"><span class="icon-frame frame-10"><img src="http://eu.battle.net/wow-assets/static/images/icons/18/%s.jpg"> </span>%s</a>', WoW::GetWoWPath(), WoW_Locale::GetLocale(), $info['entry'], $info['Quality'], WoW_Items::GetItemIcon(0, $info['displayid']), WoW_Items::GetItemName($info['entry'])), $post_text); } } // Replace [quote] tag $post_text = str_replace('[quote', '<blockquote', $post_text); // Replace other tags $post_text = str_replace(array('[', ']', "\n"), array('<', '>', '<br/>'), $post_text); $post_text = str_replace('"', '\\"', $post_text); return $post_text; }
} echo sprintf('<div class="more-results"> <a href="?q=%s&f=wowcharacter" class="more"> Больше результатов по запросу «%s» </a> </div> </div>', WoW_Search::GetSearchQuery(), WoW_Search::GetSearchQuery()); } } if (WoW_Search::GetItemsSearchResultsCount() > 0) { echo sprintf('<div class="result-set"> <h3 class="results-title">%s</h3>', sprintf(WoW_Locale::GetString('template_search_results_wowitem'), WoW_Search::GetSearchQuery())); $items = WoW_Search::GetRightBoxResults('wowitem'); if (is_array($items)) { foreach ($items as $item) { $itemIcon = WoW_Items::GetItemIcon($item['entry'], $item['displayid']); $sellPrice = WoW_Utils::GetMoneyFormat($item['SellPrice']); $classSubClassString = null; switch ($item['class']) { case ITEM_CLASS_ARMOR: case ITEM_CLASS_WEAPON: $classSubClassName = DB::WoW()->selectRow("SELECT `class_name_%s` AS `className`, `subclass_name_%s` AS `subclassName` FROM `DBPREFIX_itemsubclass` WHERE `class` = %d AND `subclass` = %d LIMIT 1", WoW_Locale::GetLocale(), WoW_Locale::GetLocale(), $item['class'], $item['subclass']); if (is_array($classSubClassName)) { $classSubClassString = sprintf('%s (%s)', $classSubClassName['subclassName'], WoW_Locale::GetString('template_item_invtype_' . $item['InventoryType'])); } break; } echo sprintf('<div class="search-result"> <div class="multi-type"> <div class="result-title"> <div class="type-icon type-wowitem border-q%d" style="background-image:url(http://eu.battle.net/wow-assets/static/images/icons/36/%s.jpg)">
if (is_array($searchResults)) { $toggleStyle = 2; foreach ($searchResults as $item) { echo sprintf('<tr class="row%d"> <td class="table-link" data-row="1 %s"> <a href="%s/wow/' . WoW_Locale::GetLocale() . '/item/%d" rel="item:%d" class="color-q%d"> <span class="icon-frame frame-18" style=\'background-image: url("http://eu.battle.net/wow-assets/static/images/icons/18/%s.jpg");\'> </span> %s </a> </td> <td class="align-center"> %d </td> <td></td> <td> </td> </tr>', $toggleStyle % 2 ? 1 : 0, $item['name'], WoW::GetWoWPath(), $item['entry'], $item['entry'], $item['Quality'], WoW_Items::GetItemIcon($item['entry'], $item['displayid']), $item['name'], $item['ItemLevel']); ++$toggleStyle; } } ?> </tbody> </table> <script type="text/javascript"> //<![CDATA[ $(function(){ var table = new Table('.table'); }); //]]> </script>
/** * @param int $slot * @param bool $advanced = false * @return array **/ public static function GetEquippedItemInfo($slot, $advanced = false) { if (!self::IsCorrect()) { WoW_Log::WriteError('%s : character was not found.', __METHOD__); return false; } // Try to find cached item... if (isset(self::$cache_item[$slot])) { // ... and return it. return self::$cache_item[$slot]; } if (!isset(self::$m_items[$slot])) { // Slot is empty, just return false. return false; } $item = self::GetItem($slot); if (!$item || !$item->IsCorrect()) { WoW_Log::WriteError('%s : item handler for slot %d is broken.', __METHOD__, $slot); return false; } $info = DB::World()->selectRow("SELECT `Quality`, `displayid`, `socketColor_1`, `socketColor_2`, `socketColor_3` FROM `item_template` WHERE `entry` = %d LIMIT 1", $item->GetEntry()); if (!$info) { WoW_Log::WriteError('%s : item #%d was not found in `item_template` table!', __METHOD__, $item->GetEntry()); return false; } $item_data = array('item_id' => $item->GetEntry(), 'name' => WoW_Items::GetItemName($item->GetEntry()), 'guid' => $item->GetGUID(), 'quality' => $info['Quality'], 'item_level' => $item->GetItemLevel(), 'icon' => WoW_Items::GetItemIcon(0, $info['displayid']), 'slot_id' => $item->GetSlot(), 'enchid' => $item->GetEnchantmentId(), 'g0' => $item->GetSocketInfo(1), 'g1' => $item->GetSocketInfo(2), 'g2' => $item->GetSocketInfo(3), 'can_ench' => !in_array($item->GetSlot(), array(INV_SHIRT, INV_RANGED_RELIC, INV_TABARD, INV_TRINKET_1, INV_TRINKET_2, INV_NECK, INV_OFF_HAND, INV_RING_1, INV_RING_2, INV_NECK, INV_BELT))); if ($advanced) { $item_data['enchant_text'] = ''; $item_data['enchant_quality'] = 2; $item_data['enchant_item'] = 0; $enchantment_info = DB::WoW()->selectRow("\n SELECT\n `DBPREFIX_enchantment`.`text_%s` AS `text`,\n `DBPREFIX_spellenchantment`.`id` AS `spellId`\n FROM `DBPREFIX_enchantment`\n JOIN `DBPREFIX_spellenchantment` ON `DBPREFIX_spellenchantment`.`Value`=`DBPREFIX_enchantment`.`id`\n WHERE `DBPREFIX_enchantment`.`id` = %d LIMIT 1", WoW_Locale::GetLocale(), $item_data['enchid']); if (is_array($enchantment_info)) { $item_data['enchant_text'] = $enchantment_info['text']; $ench_spell = DB::WoW()->selectCell("SELECT `id` FROM `DBPREFIX_spellenchantment` WHERE `Value` = %d", $item_data['enchid']); if ($ench_spell > 0) { $item_data['enchant_item'] = DB::World()->selectCell("SELECT `entry` FROM `item_template` WHERE `spellid_1` = %d OR `spellid_2` = %d OR `spellid_3` = %d LIMIT 1", $ench_spell, $ench_spell, $ench_spell); if ($item_data['enchant_item'] > 0) { $item_ench_name = WoW_Items::GetItemName($item_data['enchant_item']); $matches = array(); $item_data['enchant_text'] = str_replace('- ', null, substr($item_ench_name, strpos($item_ench_name, ' - '))); } } } for ($socket_index = 0; $socket_index < 3; $socket_index++) { $item_data['gem' . $socket_index] = array(); if (isset($item_data['g' . $socket_index]['enchant_id'])) { $item_data['gem' . $socket_index] = WoW_Items::GetSocketInfo($item_data['g' . $socket_index]['enchant_id']); } } } // Create data-item url $data_item = sprintf('i=%d', $item->GetEntry()); if ($item_data['enchid'] > 0) { $data_item .= sprintf('&e=%d', $item_data['enchid']); } for ($i = 0; $i < 3; $i++) { if ($item_data['g' . $i] > 0) { $data_item .= sprintf('&g%d=%d', $i, $item_data['g' . $i]['enchant_id']); } } $data_item .= sprintf('&s=%d&r=%d&cd=%d&md=%d&pl=%d&t=true', $item->GetGUID(), self::GetRealmID(), $item->GetCurrentDurability(), $item->GetMaxDurability(), self::GetLevel()); // Itemset check $itemset_original = $item->GetOriginalItemSetID(); $itemset_changed = $item->GetItemSetID(); $itemsetID = 0; $pieces_string = null; if ($itemset_original > 0) { $itemsetID = $itemset_original; } if ($itemset_changed > 0) { $itemsetID = $itemset_changed; } if ($itemsetID > 0) { $pieces = $item->GetItemSetPieces(); $setpieces = explode(',', $pieces); if (isset($setpieces[1])) { $prev = false; foreach ($setpieces as $piece) { if (self::IsItemEquipped($piece)) { if ($prev) { $pieces_string .= ','; } $pieces_string .= $piece; $prev = true; } } } } $data_item .= sprintf('&set=%s', $pieces_string); $item_data['data-item'] = $data_item; // Add to cache self::$cache_item[$slot] = $item_data; return $item_data; }