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;
 }
Пример #2
0
 private static function HandleSellingItems()
 {
     if (self::$selling_count <= 0 || !is_array(self::$myitems_storage)) {
         return false;
     }
     $item_ids = array();
     $item_ids_guids = array();
     $items_data = array();
     foreach (self::$myitems_storage as $item) {
         $item_ids[] = $item['item_template'];
         $item_ids_guids[$item['itemguid']] = $item['item_template'];
         $items_data[$item['itemguid']] = $item;
     }
     $items = DB::World()->select("SELECT `entry`, `name`, `Quality`, `displayid` FROM `item_template` WHERE `entry` IN (%s)", $item_ids);
     if (!$items) {
         return false;
     }
     $items_storage = array();
     $displayids = array();
     foreach ($items as $item) {
         $items_storage[$item['entry']] = $item;
         $displayids[] = $item['displayid'];
     }
     $icons = DB::WoW()->select("SELECT `displayid`, `icon` FROM `DBPREFIX_icons` WHERE `displayid` IN (%s)", $displayids);
     if (!$icons) {
         return false;
     }
     $icons_storage = array();
     foreach ($icons as $icon) {
         $icons_storage[$icon['displayid']] = $icon['icon'];
     }
     unset($icons);
     self::$items_storage = array();
     self::$buyout_price = 0;
     foreach ($item_ids_guids as $item_guid => $item_id) {
         if (isset($items_storage[$item_id])) {
             $item = new WoW_Item(WoWConfig::$Realms[WoW_Account::GetActiveCharacterInfo('realmId')]['type']);
             $item->LoadFromDBByEntry($item_guid, $item_id);
             $auc_time = $items_data[$item_guid]['time'];
             $now = time();
             $auction_time = 0;
             if ($now - $auc_time <= 48 * IN_HOURS) {
                 $auction_time = 3;
             } elseif ($now - $auc_time <= 24 * IN_HOURS) {
                 $auction_time = 2;
             } elseif ($now - $auc_time <= 12 * IN_HOURS) {
                 $auction_time = 1;
             }
             self::$items_storage[] = array('auction_id' => $items_data[$item_guid]['id'], 'guid' => $item_guid, 'id' => $items_storage[$item_id]['entry'], 'quality' => $items_storage[$item_id]['Quality'], 'name' => WoW_Locale::GetLocaleId() == LOCALE_EN ? $items_storage[$item_id]['name'] : WoW_Items::GetItemName($item_id), 'icon' => $icons_storage[$items_storage[$item_id]['displayid']], 'price_raw' => $items_data[$item_guid]['startbid'], 'price' => WoW_Utils::GetMoneyFormat($items_data[$item_guid]['startbid']), 'buyout_raw' => $items_data[$item_guid]['buyoutprice'], 'buyout' => WoW_Utils::GetMoneyFormat($items_data[$item_guid]['buyoutprice']), 'lastbid' => $items_data[$item_guid]['lastbid'], 'count' => $item->GetStackCount(), 'time' => $auction_time);
             self::$buyout_price += $items_data[$item_guid]['buyoutprice'];
         }
     }
     unset($items, $items_storage, $displayids);
     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;
 }
 /**
  * @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('&amp;e=%d', $item_data['enchid']);
     }
     for ($i = 0; $i < 3; $i++) {
         if ($item_data['g' . $i] > 0) {
             $data_item .= sprintf('&amp;g%d=%d', $i, $item_data['g' . $i]['enchant_id']);
         }
     }
     $data_item .= sprintf('&amp;s=%d&amp;r=%d&amp;cd=%d&amp;md=%d&amp;pl=%d&amp;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('&amp;set=%s', $pieces_string);
     $item_data['data-item'] = $data_item;
     // Add to cache
     self::$cache_item[$slot] = $item_data;
     return $item_data;
 }
Пример #6
0
         $isItemSet = true;
         $pieces_text = null;
         for ($i = 1; $i < $totalItemsCount + 1; $i++) {
             if (in_array($setdata['item' . $i], $setpieces)) {
                 $pieces_text .= sprintf('<li class="indent"><a class="color-tooltip-beige has-tip" href="%s/wow/' . WoW_Locale::GetLocale() . '/item/%d">%s</li>', WoW::GetWoWPath(), $setdata['item' . $i], WoW_Items::GetItemName($setdata['item' . $i]));
             } else {
                 $pieces_text .= sprintf('<li class="indent"><a class="color-d4 has-tip" href="%s/wow/' . WoW_Locale::GetLocale() . '/item/%d">%s</li>', WoW::GetWoWPath(), $setdata['item' . $i], WoW_Items::GetItemName($setdata['item' . $i]));
             }
         }
     }
 } else {
     // Load default itemset
     if (is_array($setdata)) {
         $isItemSet = true;
         for ($i = 1; $i < 6; $i++) {
             $pieces_text .= sprintf('<li class="indent"><a class="color-d4 has-tip" href="%s/wow/' . WoW_Locale::GetLocale() . '/item/%d">%s</li>', WoW::GetWoWPath(), $setdata['item' . $i], WoW_Items::GetItemName($setdata['item' . $i]));
         }
     }
 }
 $itemsetbonus = WoW_Items::GetItemSetBonusInfo(DB::WoW()->selectRow("SELECT * FROM `DBPREFIX_itemsetinfo` WHERE `id` = %d", $proto->itemset));
 $setbonus_text = null;
 if (is_array($itemsetbonus)) {
     foreach ($itemsetbonus as $item_bonus) {
         $setbonus_text .= sprintf('<li class="%s">(%d) %s</li>', $equippedItemsCount >= $item_bonus['threshold'] ? 'color-tooltip-green' : 'color-d4', $item_bonus['threshold'], sprintf(WoW_Locale::GetString('template_item_set_bonus'), $item_bonus['desc']));
     }
 }
 echo sprintf('<li>
             <ul class="item-specs">
                 <li class="color-tooltip-yellow">%s (%d/5)</li>
                 %s
                 <li class="indent-top"> </li>
        ' . sprintf(WoW_Locale::GetString('template_character_audit_empty_sockets'), $count_empty_sockets, count($audit[AUDIT_TYPE_EMPTY_SOCKET])) . '
        </li>', $empty_sockets_slots);
}
if (isset($audit[AUDIT_TYPE_NONOPTIMAL_ARMOR]) && is_array($audit[AUDIT_TYPE_NONOPTIMAL_ARMOR]) && WoW_Characters::GetLevel() >= 40) {
    $nonop_armor_slots = '';
    $nonop_armor_slots_js_tpl = '"inappropriateArmorItems": {%s},';
    $nonop_armor_count = 0;
    foreach ($audit[AUDIT_TYPE_NONOPTIMAL_ARMOR] as $tmp) {
        ++$nonop_armor_count;
    }
    echo sprintf('<li data-slots="%d">
        <span class="tip">%s</span>
        </li>', $nonop_armor_count, sprintf(WoW_Locale::GetString('template_character_audit_nonop_armor'), $nonop_armor_count, WoW_Utils::GetAppropriateItemClassForClassID(WoW_Characters::GetClassID())));
}
if (isset($audit[AUDIT_TYPE_MISSING_BELT_BUCKLE]) && $audit[AUDIT_TYPE_MISSING_BELT_BUCKLE] == true) {
    echo sprintf('<li data-slots="5">%s</li>', sprintf(WoW_Locale::GetString('template_character_audit_missing_belt_buckle'), BELT_BUCKLE_ID, WoW_Items::GetItemName(BELT_BUCKLE_ID)));
}
?>
	</ul>
    <?php 
if (WoW_Characters::IsAuditPassed()) {
    echo WoW_Locale::GetString('template_character_audit_passed');
}
?>
	<script type="text/javascript">
	//<![CDATA[
		$(document).ready(function() {
			new Summary.Audit({
			 <?php 
echo $unenchanted_items_js . "\n";
echo '             ' . $empty_sockets_js;