['filter' => FILTER_CALLBACK, 'options' => [Locale::class, 'tryFromDomain']] ); private array $dates = []; public function __construct(string $id) { parent::__construct($id); // temp locale if ($this->_get['domain']) Lang::load($this->_get['domain']); $this->typeId = intVal($id); } protected function generate() : void { $worldevent = new WorldEventList(array(['id', $this->typeId])); if ($worldevent->error) $this->cacheType = CACHE_TYPE_NONE; else { $icon = $worldevent->getField('iconString'); if ($icon == 'trade_engineering') $icon = null; $opts = array( 'name' => $worldevent->getField('name', true), 'tooltip' => $worldevent->renderTooltip(), 'icon' => $icon ); $this->dates = array( 'firstDate' => $worldevent->getField('startTime'), 'lastDate' => $worldevent->getField('endTime'), 'length' => $worldevent->getField('length'), 'rec' => $worldevent->getField('occurence') ); $this->setOnCacheLoaded([self::class, 'onBeforeDisplay'], $this->dates); } $this->result = new Tooltip(self::POWER_TEMPLATE, $this->typeId, $opts ?? []); } public static function onBeforeDisplay(string $tooltip, array $dates) : string { // update dates to now() WorldEventList::updateDates($dates, $start, $end); return sprintf( $tooltip, $start ? date(Lang::main('dateFmtLong'), $start) : null, $end ? date(Lang::main('dateFmtLong'), $end) : null ); } } ?>