mirror of
https://github.com/Sarjuuk/aowow.git
synced 2025-11-29 15:58:16 +08:00
features: - tool - Maps: * finally supports multi-layered zones * should also support icons if needed (questgiver, ect) - tool - Item Comparison: * fully functional (yes, that includes heirlooms and items with random props) * may throw a minor js-error if using arrow-keys/esc/ret in input-fields in the LightboxPopus (but wowhead does also) * icons for prismatic sockets are not displayed if no other sockets are present (calculation is correct though) * modelviewer will still 'call home' - tool - Talent Calculator: * got rid of a VERY dirty hack for the icons (they are now supplied as texture, not laoded one at a time) * glyphs should also be a bit more informative * talent data is pulled from static file, that should a) speed up load and b) prevent lockups if it cant be generated on the fly * you can now set the level for your build, which affects available talent points, glyphs and glyph-slots - tool - Pet Calculator: * initial implementation; basically the same as the Talent Calculator - general concept changed: * dropped ajax.php; json is now supplied by the appropriate page if &json is appended to the url * search.php and opensearch.php are being merged; again, output will depend on the appended parameter (&openserach, &json) * data included via data.php will be static and assembled only on installation and when the database changes (should speed up load) * locale strings are now in a single file instead of being split up to the template * still getting rid of criss-cross-includes, global variables and string-defines
232 lines
5.1 KiB
PHP
232 lines
5.1 KiB
PHP
<?php
|
|
/*
|
|
FETTES ToDo: suchen vereinen und aufräumen!
|
|
|
|
if &json
|
|
=> suche ausm compare heraus (profiler evtl auch noch)
|
|
else if &opensearch
|
|
=> suche aus der suchbox oben rechts, bzw Startseite
|
|
array:[
|
|
str, // search
|
|
str[10], // found
|
|
[], // unused
|
|
[], // unused
|
|
[], // unused
|
|
[], // unused
|
|
[], // unused
|
|
str[10][4] // type, typeId, param1 (4:quality, 3,6,9,10:icon, 5:faction), param2 (3:quality, 6:rank)
|
|
]
|
|
else
|
|
=> Sucheseite über Template
|
|
|
|
*/
|
|
|
|
if (isset($_GET['opensearch']) || isset($_GET['json']))
|
|
{
|
|
require('opensearch.php');
|
|
die();
|
|
}
|
|
|
|
// Необходима функция iteminfo
|
|
require_once('includes/game.php');
|
|
require_once('includes/allspells.php');
|
|
require_once('includes/allquests.php');
|
|
require_once('includes/allitems.php');
|
|
require_once('includes/allnpcs.php');
|
|
require_once('includes/allobjects.php');
|
|
|
|
// Настраиваем Smarty ;)
|
|
$smarty->config_load($conf_file, 'search');
|
|
|
|
// Строка поиска:
|
|
$search = urldecode($pageParam);
|
|
$nsearch = '%'.$search.'%';
|
|
$smarty->assign('search', $search);
|
|
|
|
// Подключаемся к ДБ
|
|
global $DB;
|
|
global $allitems;
|
|
global $allspells;
|
|
|
|
global $npc_cols;
|
|
global $spell_cols;
|
|
|
|
// Массив всего найденного
|
|
$found = array();
|
|
|
|
// Ищем вещи:
|
|
if($_SESSION['locale']>0)
|
|
{
|
|
$m = $DB->selectCol('
|
|
SELECT entry
|
|
FROM locales_item
|
|
WHERE name_loc?d LIKE ?
|
|
',
|
|
$_SESSION['locale'],
|
|
$nsearch
|
|
);
|
|
}
|
|
|
|
$rows = $DB->select('
|
|
SELECT i.?#
|
|
{, l.name_loc?d AS `name_loc`}
|
|
FROM ?_icons a, item_template i
|
|
{LEFT JOIN (locales_item l) ON l.entry=i.entry AND ?d}
|
|
WHERE
|
|
(i.name LIKE ? {OR i.entry IN (?a)})
|
|
AND a.id = i.displayid;
|
|
',
|
|
$item_cols[3],
|
|
($m)? $_SESSION['locale']: DBSIMPLE_SKIP,
|
|
($m)? 1: DBSIMPLE_SKIP,
|
|
$nsearch,
|
|
($m)? $m: DBSIMPLE_SKIP
|
|
);
|
|
unset($m);
|
|
foreach($rows as $row)
|
|
$found['item'][] = iteminfo2($row);
|
|
|
|
// Ищем NPC:
|
|
if($_SESSION['locale']>0)
|
|
{
|
|
$m = $DB->selectCol('
|
|
SELECT entry
|
|
FROM locales_creature
|
|
WHERE
|
|
name_loc?d LIKE ?
|
|
OR subname_loc?d LIKE ?
|
|
',
|
|
$_SESSION['locale'], $nsearch,
|
|
$_SESSION['locale'], $nsearch
|
|
);
|
|
}
|
|
$rows = $DB->select('
|
|
SELECT ?#, c.entry
|
|
{, l.name_loc?d AS `name_loc`,
|
|
l.subname_loc'.$_SESSION['locale'].' AS `subname_loc`}
|
|
FROM ?_factiontemplate, creature_template c
|
|
{LEFT JOIN (locales_creature l) ON l.entry=c.entry AND ?d}
|
|
WHERE
|
|
(name LIKE ?
|
|
OR subname LIKE ?
|
|
{OR c.entry IN (?a)})
|
|
AND factiontemplateID=faction_A
|
|
',
|
|
$npc_cols[0],
|
|
($m)? $_SESSION['locale']: DBSIMPLE_SKIP,
|
|
($m)? 1: DBSIMPLE_SKIP,
|
|
$nsearch, $nsearch,
|
|
($m)? $m: DBSIMPLE_SKIP
|
|
);
|
|
unset($m);
|
|
foreach($rows as $row)
|
|
$found['npc'][] = creatureinfo2($row);
|
|
|
|
// Ищем объекты
|
|
if($_SESSION['locale']>0)
|
|
{
|
|
$m = $DB->selectCol('
|
|
SELECT entry
|
|
FROM locales_gameobject
|
|
WHERE
|
|
name_loc?d LIKE ?
|
|
',
|
|
$_SESSION['locale'], $nsearch
|
|
);
|
|
}
|
|
$rows = $DB->select('
|
|
SELECT g.?#
|
|
{, l.name_loc?d AS `name_loc`}
|
|
FROM gameobject_template g
|
|
{LEFT JOIN (locales_gameobject l) ON l.entry=g.entry AND ?d}
|
|
WHERE name LIKE ? {OR g.entry IN (?a)}
|
|
',
|
|
$object_cols[0],
|
|
($m)? $_SESSION['locale']: DBSIMPLE_SKIP,
|
|
($m)? 1: DBSIMPLE_SKIP,
|
|
$nsearch,
|
|
($m)? $m: DBSIMPLE_SKIP
|
|
);
|
|
unset($m);
|
|
foreach($rows as $row)
|
|
$found['object'][] = objectinfo2($row);
|
|
|
|
// Ищем квесты
|
|
if($_SESSION['locale']>0)
|
|
{
|
|
$m = $DB->selectCol('
|
|
SELECT entry
|
|
FROM locales_quest
|
|
WHERE
|
|
Title_loc?d LIKE ?
|
|
',
|
|
$_SESSION['locale'], $nsearch
|
|
);
|
|
}
|
|
$rows = $DB->select('
|
|
SELECT *
|
|
{, l.Title_loc?d AS `Title_loc`}
|
|
FROM quest_template q
|
|
{LEFT JOIN (locales_quest l) ON l.entry=q.entry AND ?d}
|
|
WHERE Title LIKE ? {OR q.entry IN (?a)}
|
|
',
|
|
($m)? $_SESSION['locale']: DBSIMPLE_SKIP,
|
|
($m)? 1: DBSIMPLE_SKIP,
|
|
$nsearch,
|
|
($m)? $m: DBSIMPLE_SKIP
|
|
);
|
|
unset($m);
|
|
foreach($rows as $row)
|
|
$found['quest'][] = GetQuestInfo($row, 0xFFFFFF);
|
|
|
|
// Ищем наборы вещей
|
|
$rows = $DB->select('
|
|
SELECT *
|
|
FROM ?_itemset
|
|
WHERE name_loc'.$_SESSION['locale'].' LIKE ?
|
|
',
|
|
$nsearch
|
|
);
|
|
foreach($rows as $row)
|
|
$found['itemset'][] = itemsetinfo2($row);
|
|
|
|
// Ищем спеллы
|
|
$rows = $DB->select('
|
|
SELECT ?#, spellID
|
|
FROM ?_spell s, ?_spellicons i
|
|
WHERE
|
|
s.spellname_loc'.$_SESSION['locale'].' like ?
|
|
AND i.id = s.spellicon
|
|
',
|
|
$spell_cols[2],
|
|
$nsearch
|
|
);
|
|
foreach($rows as $row)
|
|
$found['spell'][] = spellinfo2($row);
|
|
|
|
$keys = array_keys($found);
|
|
|
|
// Если найден один элемент - перенаправляем на него
|
|
if(count($found) == 1 && count($found[$keys[0]]) == 1)
|
|
{
|
|
header("Location: ?".$keys[0].'='.$found[$keys[0]][0]['entry']);
|
|
}
|
|
else
|
|
{
|
|
$smarty->assign('found', $found);
|
|
|
|
// Параметры страницы
|
|
$page = array();
|
|
// Номер вкладки меню
|
|
$page['tab'] = 0;
|
|
// Заголовок страницы
|
|
$page['Title'] = $search.' - '.$smarty->get_config_vars('Search');
|
|
$smarty->assign('page', $page);
|
|
|
|
$smarty->assign('mysql', $DB->getStatistics());
|
|
$smarty->assign('search', $search);
|
|
|
|
$smarty->display('search.tpl');
|
|
}
|
|
|
|
?>
|