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&amp;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('&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;
 }