protected function generateContent() { $infobox = []; $_mask = 1 << $this->typeId - 1; $mountVendors = array(null, [384, 33307], [3362, 33553], [1261, 33310], [4730, 33653], [4731, 33555], [3685, 33556], [7955, 33650], [7952, 33554], null, [16264, 33557], [17584, 33657]); /***********/ /* Infobox */ /***********/ $infobox = Lang::getInfoBoxForFlags($this->subject->getField('cuFlags')); // side if ($_ = $this->subject->getField('side')) { $infobox[] = Lang::main('side') . Lang::main('colon') . '[span class=icon-' . ($_ == 2 ? 'horde' : 'alliance') . ']' . Lang::game('si', $_) . '[/span]'; } // faction if ($_ = $this->subject->getField('factionId')) { $fac = new FactionList(array(['f.id', $_])); $this->extendGlobalData($fac->getJSGlobals()); $infobox[] = Util::ucFirst(Lang::game('faction')) . Lang::main('colon') . '[faction=' . $fac->id . ']'; } // leader if ($_ = $this->subject->getField('leader')) { $this->extendGlobalIds(TYPE_NPC, $_); $infobox[] = Lang::race('racialLeader') . Lang::main('colon') . '[npc=' . $_ . ']'; } // start area if ($_ = $this->subject->getField('startAreaId')) { $this->extendGlobalIds(TYPE_ZONE, $_); $infobox[] = Lang::race('startZone') . Lang::main('colon') . '[zone=' . $_ . ']'; } /****************/ /* Main Content */ /****************/ $this->infobox = '[ul][li]' . implode('[/li][li]', $infobox) . '[/li][/ul]'; $this->expansion = Util::$expansionString[$this->subject->getField('expansion')]; $this->headIcons = array('race_' . strtolower($this->subject->getField('fileString')) . '_male', 'race_' . strtolower($this->subject->getField('fileString')) . '_female'); $this->redButtons = array(BUTTON_WOWHEAD => true, BUTTON_LINKS => true); /**************/ /* Extra Tabs */ /**************/ // Classes $classes = new CharClassList(array(['racemask', $_mask, '&'])); if (!$classes->error) { $this->extendGlobalData($classes->getJSGlobals()); $this->lvTabs[] = ['class', ['data' => array_values($classes->getListviewData())]]; } // Tongues $conditions = array(['typeCat', -11], ['reqRaceMask', $_mask, '&']); $tongues = new SpellList($conditions); if (!$tongues->error) { $this->extendGlobalData($tongues->getJSGlobals()); $this->lvTabs[] = ['spell', array('data' => array_values($tongues->getListviewData()), 'id' => 'languages', 'name' => '$LANG.tab_languages', 'hiddenCols' => ['reagents'])]; } // Racials $conditions = array(['typeCat', -4], ['reqRaceMask', $_mask, '&']); $racials = new SpellList($conditions); if (!$racials->error) { $this->extendGlobalData($racials->getJSGlobals()); $this->lvTabs[] = ['spell', array('data' => array_values($racials->getListviewData()), 'id' => 'racial-traits', 'name' => '$LANG.tab_racialtraits', 'hiddenCols' => ['reagents'])]; } // Quests $conditions = array(['reqRaceMask', $_mask, '&'], [['reqRaceMask', RACE_MASK_HORDE, '&'], RACE_MASK_HORDE, '!'], [['reqRaceMask', RACE_MASK_ALLIANCE, '&'], RACE_MASK_ALLIANCE, '!']); $quests = new QuestList($conditions); if (!$quests->error) { $this->extendGlobalData($quests->getJSGlobals()); $this->lvTabs[] = ['quest', ['data' => array_values($quests->getListviewData())]]; } // Mounts // ok, this sucks, but i rather hardcode the trainer, than fetch items by namepart $items = isset($mountVendors[$this->typeId]) ? DB::World()->selectCol('SELECT item FROM npc_vendor WHERE entry IN (?a)', $mountVendors[$this->typeId]) : 0; $conditions = array(['i.id', $items], ['i.class', ITEM_CLASS_MISC], ['i.subClass', 5]); $mounts = new ItemList($conditions); if (!$mounts->error) { $this->extendGlobalData($mounts->getJSGlobals()); $this->lvTabs[] = ['item', array('data' => array_values($mounts->getListviewData()), 'id' => 'mounts', 'name' => '$LANG.tab_mounts', 'hiddenCols' => ['slot', 'type'])]; } }