public function validate(FormField $field) { $field_name = ContactField::rewrite_field_name($field->get_value()); $valid = true; if (!empty($this->field_id)) { foreach (ContactConfig::load()->get_fields() as $id => $f) { if ($id != $this->field_id && $f['field_name'] == $field_name) { $valid = false; } } } else { foreach (ContactConfig::load()->get_fields() as $id => $f) { if ($f['field_name'] == $field_name) { $valid = false; } } } return $valid; }
public function execute(HTTPRequestCustom $request) { $id = $request->get_value('id', 0); $name = $request->get_value('name', ''); $field_name = ContactField::rewrite_field_name($name); $result = 0; if (!empty($id)) { foreach (ContactConfig::load()->get_fields() as $key => $f) { if ($key != $id && $f['field_name'] == $field_name) { $result = 1; } } } else { foreach (ContactConfig::load()->get_fields() as $key => $f) { if ($f['field_name'] == $field_name) { $result = 1; } } } return new JSONResponse(array('result' => $result)); }
private function save() { $field = $this->get_field(); $fields = $this->config->get_fields(); if ($field->is_deletable()) { $field->set_field_name(ContactField::rewrite_field_name($this->form->get_value('name'))); } $field->set_name($this->form->get_value('name')); $field->set_description($this->form->get_value('description')); if (!$this->form->field_is_disabled('field_type')) { $field->set_field_type($this->form->get_value('field_type')->get_raw_value()); } if (!$field->is_readonly() && !$this->form->field_is_disabled('regex_type')) { $regex = 0; if (!$this->form->field_is_disabled('regex_type')) { $regex = is_numeric($this->form->get_value('regex_type', '')->get_raw_value()) ? $this->form->get_value('regex_type', '')->get_raw_value() : $this->form->get_value('regex', ''); } $field->set_regex($regex); } if (!$this->form->field_is_disabled('field_required')) { if ((bool) $this->form->get_value('field_required')) { $field->required(); } else { $field->not_required(); } } if (!$this->form->field_is_disabled('possible_values')) { $field->set_possible_values($this->form->get_value('possible_values')); } if (!$this->form->field_is_disabled('default_value_small')) { $field->set_default_value($this->form->get_value('default_value_small')); } if (!$this->form->field_is_disabled('default_value_medium')) { $field->set_default_value($this->form->get_value('default_value_medium')); } if (!$this->form->field_is_disabled('display')) { if ((bool) $this->form->get_value('display')) { $field->displayed(); } else { $field->not_displayed(); } } if (!$this->form->field_is_disabled('authorizations')) { $field->set_authorization($this->form->get_value('authorizations', $field->get_authorization())->build_auth_array()); } $fields[!empty($this->id) ? $this->id : count($this->config->get_fields()) + 1] = $field->get_properties(); $this->config->set_fields($fields); ContactConfig::save(); }