- do not display serverside events in calendar - include gems in item comparison .. also parse their stats in setup - filters use conditions and are more restrictive - changed DBSimple version so it uses mysqli (mysql is deprecated as of php 5.5) - moved each filter class to matching type; file for baseType and BaseFilter - baseType querys are somewhat modular, trying to avoid ridiculous joins that WILL occur sometimes (especially with items) as far as possible
158 lines
4.8 KiB
PHP
158 lines
4.8 KiB
PHP
<?php
|
|
|
|
if (!defined('AOWOW_REVISION'))
|
|
die('illegal access');
|
|
|
|
class TitleList extends BaseType
|
|
{
|
|
use listviewHelper;
|
|
|
|
public static $type = TYPE_TITLE;
|
|
|
|
public $sources = [];
|
|
|
|
protected $queryBase = 'SELECT *, id AS ARRAY_KEY FROM ?_titles t';
|
|
|
|
public function __construct($conditions = [])
|
|
{
|
|
parent::__construct($conditions);
|
|
|
|
// post processing
|
|
foreach ($this->iterate() as $__)
|
|
{
|
|
// preparse sources
|
|
if (!empty($this->curTpl['source']))
|
|
{
|
|
$sources = explode(' ', $this->curTpl['source']);
|
|
foreach ($sources as $src)
|
|
{
|
|
$src = explode(':', $src);
|
|
$this->sources[$this->id][$src[0]][] = $src[1];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public function getListviewData()
|
|
{
|
|
$data = [];
|
|
$this->createSource();
|
|
|
|
foreach ($this->iterate() as $__)
|
|
{
|
|
$data[$this->id] = array(
|
|
'id' => $this->id,
|
|
'name' => $this->getField('male', true),
|
|
'side' => $this->curTpl['side'],
|
|
'gender' => $this->curTpl['gender'],
|
|
'expansion' => $this->curTpl['expansion'],
|
|
'category' => $this->curTpl['category']
|
|
);
|
|
|
|
if (!empty($this->curTpl['source']))
|
|
$data[$this->id]['source'] = $this->curTpl['source'];
|
|
}
|
|
|
|
if ($_ = $this->getField('female', true))
|
|
$data[$this->id]['namefemale'] = $_;
|
|
|
|
return $data;
|
|
}
|
|
|
|
public function addGlobalsToJscript(&$template, $addMask = 0)
|
|
{
|
|
$data = [];
|
|
|
|
foreach ($this->iterate() as $__)
|
|
{
|
|
$data[$this->id]['name'] = Util::jsEscape($this->getField('male', true));
|
|
|
|
if ($_ = $this->getField('female', true))
|
|
$data[$this->id]['namefemale'] = $_;
|
|
}
|
|
|
|
$template->extendGlobalData(self::$type, $data);
|
|
}
|
|
|
|
private function createSource()
|
|
{
|
|
$sources = array(
|
|
4 => [], // Quest
|
|
12 => [], // Achievements
|
|
13 => [] // simple text
|
|
);
|
|
|
|
foreach ($this->iterate() as $__)
|
|
{
|
|
if (empty($this->sources[$this->id]))
|
|
continue;
|
|
|
|
foreach (array_keys($sources) as $srcKey)
|
|
if (isset($this->sources[$this->id][$srcKey]))
|
|
$sources[$srcKey] = array_merge($sources[$srcKey], $this->sources[$this->id][$srcKey]);
|
|
}
|
|
|
|
// fill in the details
|
|
if (!empty($sources[4]))
|
|
$sources[4] = (new QuestList(array(['id', $sources[4]])))->getSourceData();
|
|
|
|
if (!empty($sources[12]))
|
|
$sources[12] = (new AchievementList(array(['id', $sources[12]])))->getSourceData();
|
|
|
|
if (!empty($sources[13]))
|
|
$sources[13] = DB::Aowow()->SELECT('SELECT *, Id AS ARRAY_KEY FROM ?_sourceStrings WHERE Id IN (?a)', $sources[13]);
|
|
|
|
foreach ($this->sources as $Id => $src)
|
|
{
|
|
$tmp = [];
|
|
|
|
// Quest-source
|
|
if (isset($src[4]))
|
|
{
|
|
foreach ($src[4] as $s)
|
|
{
|
|
if (isset($sources[4][$s]['s']))
|
|
$this->faction2Side($sources[4][$s]['s']);
|
|
|
|
$tmp[4][] = $sources[4][$s];
|
|
}
|
|
}
|
|
|
|
// Achievement-source
|
|
if (isset($src[12]))
|
|
{
|
|
foreach ($src[12] as $s)
|
|
{
|
|
if (isset($sources[12][$s]['s']))
|
|
$this->faction2Side($sources[12][$s]['s']);
|
|
|
|
$tmp[12][] = $sources[12][$s];
|
|
}
|
|
}
|
|
|
|
// other source (only one item possible, so no iteration needed)
|
|
if (isset($src[13]))
|
|
$tmp[13] = [Util::localizedString($sources[13][$this->sources[$Id][13][0]], 'source')];
|
|
|
|
$this->templates[$Id]['source'] = json_encode($tmp);
|
|
}
|
|
}
|
|
|
|
public function getHtmlizedName($gender = GENDER_MALE)
|
|
{
|
|
$field = $gender == GENDER_FEMALE ? 'female' : 'male';
|
|
return str_replace('%s', '<span class="q0"><'.Lang::$main['name'].'></span>', $this->getField($field, true));
|
|
}
|
|
|
|
public function renderTooltip() { }
|
|
|
|
private function faction2Side(&$faction) // thats weird.. and hopefully unique to titles
|
|
{
|
|
if ($faction == 2) // Horde
|
|
$faction = 0;
|
|
else if ($faction != 1) // Alliance
|
|
$faction = 3; // Both
|
|
}
|
|
}
|
|
|
|
?>
|