Geo > Regions delivery * @copyright Tamaranga */ class RegionsDelivery extends FormBlock { public function init() { parent::init(); $this->setTemplate('form/blocks/regions_delivery', 'listings'); $this->setKey('regions_delivery'); $this->setTitle(_t('@listings', 'Delivery To the Regions')); $this->prerenderable(true); } public function data() { $data = parent::data(); $data['regions_delivery'] = $this->form->item['regions_delivery'] ?? 0; $data['visible'] = $this->visible(); return $data; } public function visible() { $geo = $this->form->category['settings']['geo'] ?? []; return ($geo['enabled'] ?? false) && ($geo['delivery'] ?? false) && ($this->form->item['geo_city'] ?? 0); } public function reloadBlock($event) { if (! in_array($event, ['categoryChange', 'publisherChange', 'cityChange'])) { return false; } if ($this->visible()) { return $this->render(); } return ''; } public function rules(): array { return [ 'regions_delivery' => [TYPE_BOOL], ]; } public function validateUsingRules(array $data = [], ?array $rules = null) { if (! $this->visible()) { unset($data['regions_delivery']); return $data; } return parent::validateUsingRules($data, $rules); } public function onAfterValidateEvent($p) { if (empty($p['data']['geo_city']) && ! empty($p['data']['regions_delivery'])) { $p['data']['regions_delivery'] = 0; } } }