Publicated Period * @copyright Tamaranga */ class PublicatedPeriod extends FormBlock { public function init() { parent::init(); $this->setTemplate('form/blocks/publicated_period', 'listings'); $this->setKey('publicated_period'); $this->setTitle(_t('item-form', 'Term of publishing')); } public function data() { if ($this->form->edit()) { return false; } $period = Listings::itemPublicationPeriod(); if (! $period->isAvailable()) { return false; } $data = parent::data(); $data['publicated_period'] = 0; $data['options'] = []; $data['visible'] = $this->visible(); if ($data['visible']) { $data['options'] = $period->options(['default' => & $data['publicated_period']]); } return $data; } public function visible() { return ! empty($this->form->category['id']) && empty($this->form->category['settings']['publication']['infinite']); } public function reloadBlock($event) { if ($event != 'categoryChange') { return false; } if ($this->visible()) { return $this->render(); } return ''; } public function rules(): array { return [ 'publicated_period' => [TYPE_UINT], ]; } public function validateUsingRules(array $data = [], ?array $rules = null) { do { if ($this->form->edit()) { break; } $period = Listings::itemPublicationPeriod(); if (! $period->isAvailable()) { break; } if (! $this->visible()) { break; } return parent::validateUsingRules($data, $rules); } while (false); unset($data['publicated_period']); return $data; } }