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();
 }