Name * @copyright Tamaranga * @property \modules\listings\views\ItemForm $form */ class Name extends FormBlock { public function init() { parent::init(); $this->setTemplate('form/blocks/name', 'listings'); $this->setKey('name'); $this->setTitle(_t('item-form', 'Contact Person')); } public function data() { $data = parent::data(); $data['visible'] = $this->visible(); $data['edit'] = $this->form->edit(); $data['contactsFromProfile'] = User::id() && $this->contactsFromProfile(); $data['publisherOnlyCompany'] = $publisherOnlyCompany = $this->publisherOnlyCompany(); $data['name'] = $this->form->item['name'] ?? $this->form->user['name'] ?? ''; if ($data['contactsFromProfile']) { $data['name'] = $this->form->user['name'] ?? ''; } $data['link'] = $publisherOnlyCompany ? Business::url('company.settings') : Users::url('account.settings'); return $data; } public function publisherOnlyCompany() { return Listings::publisher([ Listings::PUBLISHER_COMPANY, Listings::PUBLISHER_USER_TO_COMPANY, ]); } public function contactsFromProfile() { return Listings::getItemContactsFromProfile(); } public function visible() { if (! User::id()) { return true; } if ($this->contactsFromProfile()) { return false; } if (bff::moduleExists('business') && User::companyID()) { if ($this->publisherOnlyCompany()) { return false; } if (! empty($this->form->item['company_id'])) { return false; } } return true; } public function reloadBlock($event) { if ($event != 'publisherChange') { return false; } if ($this->visible()) { return $this->render(); } return ''; } public function rules(): array { return [ 'name' => [TYPE_TEXT, 'len' => 50, 'len.sys' => 'listings.form.name.limit'], ]; } public function validateUsingRules(array $data = [], ?array $rules = null) { do { if ($this->contactsFromProfile()) { break; } if (bff::moduleExists('business')) { if (! empty($data['company_id']) || ! empty($this->form->item['company_id'])) { break; } } if (! empty($data['user_id'])) { break; } $data = parent::validateUsingRules($data, $rules); if (empty($data['name']) || mb_strlen($data['name']) < 3) { $this->errors->set(_t('listings', 'Person contact name is too short'), 'name'); } Users::i()->cleanUserData($data, ['name']); return $data; } while (false); if (! $this->form->validationAdminPanel) { unset($data['name']); } return $data; } }