Price * @copyright Tamaranga */ class Price extends FormBlock { public function init() { parent::init(); $this->setTemplate('form/blocks/price', 'listings'); $this->setKey('price'); $this->setTitle(_t('@listings', 'Price')); } public function data() { $data = parent::data(); $data['price'] = $this->form->item['price'] ?? ''; $data['price_curr'] = $this->form->item['price_curr'] ?? $this->form->category['settings']['price']['curr'] ?? Currency::id(); $data['price_ex'] = $this->form->item['price_ex'] ?? 0; $data['price_ex_mod'] = empty($this->form->item['id']) ? -1 : ($this->form->item['price_ex_mod'] ?? -1); $settings = $this->form->category['settings']['price'] ?? []; $data['visible'] = $this->visible(); $data['ex'] = $settings['ex'] ?? 0; $lang = Lang::current(); $data['label'] = ($settings['title'][$lang] ?? '') ?: _t('item-form', 'Price'); $data['mod_title'] = ($settings['mod_title'][$lang] ?? '') ?: _t('item-form', 'Negotiable'); $itemPrice = Listings::itemPrice(); $data['zero'] = $itemPrice->isZero($data['ex']); $data['radio'] = $itemPrice->isRadio($data['ex']); $data['priceSelected'] = ! $itemPrice->isZero($data['price_ex']); $data['mod_options'] = $itemPrice->modifiersOptions($this->form->category['settings'] ?? []); return $data; } public function visible() { return ! empty($this->form->category['settings']['price']['enabled']); } public function reloadBlock($event) { if ($event != 'categoryChange') { return false; } if ($this->visible()) { return $this->render(); } return ''; } public function rules(): array { return [ 'price' => [TYPE_PRICE], 'price_curr' => [TYPE_UINT], 'price_ex' => TYPE_ARRAY, 'price_ex_mod' => [TYPE_UINT], ]; } public function validateUsingRules(array $data = [], ?array $rules = null) { $data = parent::validateUsingRules($data, $rules); Listings::itemPrice()->validate($data, $this->form->category->toArray()); return $data; } }