function ParseTextLinks($text) { if (!preg_match_all('/(\\[(achievement|item|quest|spell)=(\\d+)\\])/', $text, $matches)) { return; } $types = $matches[2]; $ids = $matches[3]; foreach ($types as $i => $type) { $id = $ids[$i]; switch ($type) { case 'achievement': require_once 'includes/allachievements.php'; allachievementsinfo($id); break; case 'item': require_once 'includes/allitems.php'; allitemsinfo($id); break; case 'quest': require_once 'includes/allquests.php'; allquestinfo($id); break; case 'spell': require_once 'includes/allspells.php'; allspellsinfo($id); break; } } }
} if ($item['quality']) { $x .= 'quality: ' . $item['quality'] . ','; } if ($item['icon']) { $x .= 'icon: \'' . str_normalize($item['icon']) . '\','; } if ($item['info']) { $x .= 'tooltip: \'' . str_normalize($item['info']) . '\''; } $x .= '});'; break; case 'spell': if (!($spell = load_cache(14, $id))) { require_once 'includes/allspells.php'; $spell = allspellsinfo($id, 1); save_cache(14, $id, $spell); } $x .= '$WowheadPower.registerSpell(' . $id . ', 0,{'; if ($spell['name']) { $x .= 'name: \'' . str_normalize($spell['name']) . '\','; } if ($spell['icon']) { $x .= 'icon: \'' . str_normalize($spell['icon']) . '\','; } if ($spell['info']) { $x .= 'tooltip: \'' . str_normalize($spell['info']) . '\''; } $x .= '});'; break; case 'quest':
// Добавляем ссылку на квест // Добавляем ссылку на квест case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST: $tmp['link'] = array('href' => '?quest=' . $row['value1'], 'text' => $row['name']); break; // Добавляем иконку и ссылку на спелл // Добавляем иконку и ссылку на спелл case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET: case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2: case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL: case ACHIEVEMENT_CRITERIA_TYPE_LEARN_SPELL: case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2: $tmp['link'] = array('href' => '?spell=' . $row['value1'], 'text' => $row['name']); $tmp['icon'] = $iconId; $achievement['icons'][] = array('itr' => $iconId++, 'type' => 'g_spells', 'id' => $row['value1']); allspellsinfo($row['value1']); break; // Добавляем ссылку и иконку предмета // Добавляем ссылку и иконку предмета case ACHIEVEMENT_CRITERIA_TYPE_OWN_ITEM: case ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM: case ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM: case ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM: $item = allitemsinfo($row['value1']); $tmp['link'] = array('href' => '?item=' . $row['value1'], 'text' => $row['name'], 'quality' => $item['quality']); $tmp['icon'] = $iconId; $achievement['icons'][] = array('itr' => $iconId++, 'type' => 'g_items', 'id' => $row['value1'], 'count' => $row['value2']); break; // Добавляем ссылку на фракцию и требуемую репутацию // Добавляем ссылку на фракцию и требуемую репутацию case ACHIEVEMENT_CRITERIA_TYPE_GAIN_REPUTATION:
$spell['effect'][$i]['item']['entry'] = $row['effect' . $j . 'itemtype']; $tmpRow = allitemsinfo($spell['effect'][$i]['item']['entry'], 0); $spell['effect'][$i]['item']['name'] = $tmpRow['name']; $spell['effect'][$i]['item']['quality'] = $tmpRow['quality']; $spell['effect'][$i]['item']['count'] = $row['effect' . $j . 'BasePoints'] + 1; // Иконка итема, если спелл создает этот итем if (!isset($spell['icon'])) { $spell['icon'] = $tmpRow['iconname']; } } // Создает спелл if ($row['effect' . $j . 'triggerspell'] > 0) { $spell['effect'][$i]['spell'] = array(); $spell['effect'][$i]['spell']['entry'] = $row['effect' . $j . 'triggerspell']; $spell['effect'][$i]['spell']['name'] = $DB->selectCell('SELECT spellname_loc' . $_SESSION['locale'] . ' FROM ?_spell WHERE spellID = ?d LIMIT 1', $spell['effect'][$i]['spell']['entry']); allspellsinfo($spell['effect'][$i]['spell']['entry']); } $i++; } } if (!isset($spell['icon'])) { $spell['icon'] = $row['iconname']; } // Спеллы с таким же названием $seealso = $DB->select(' SELECT s.*, i.iconname FROM ?_spell s, ?_spellicons i WHERE s.spellname_loc' . $_SESSION['locale'] . ' = ? AND s.spellID <> ?d AND (