public static function validate_field($posted_field, &$errors, $values, $args = array())
 {
     $defaults = array('id' => $posted_field->id, 'parent_field_id' => '', 'key_pointer' => '', 'exclude' => array());
     $args = wp_parse_args($args, $defaults);
     if (empty($args['parent_field_id'])) {
         $value = isset($values['item_meta'][$args['id']]) ? $values['item_meta'][$args['id']] : '';
     } else {
         // value is from a nested form
         $value = $values;
     }
     // Check for values in "Other" fields
     FrmEntriesHelper::maybe_set_other_validation($posted_field, $value, $args);
     if (isset($posted_field->field_options['default_blank']) && $posted_field->field_options['default_blank'] && $value == $posted_field->default_value) {
         $value = '';
     }
     // Check for an array with only one value
     // Don't reset values in "Other" fields because array keys need to be preserved
     if (is_array($value) && count($value) == 1 && $args['other'] !== true) {
         $value = reset($value);
     }
     if ($posted_field->required == '1' && !is_array($value) && trim($value) == '') {
         $frm_settings = FrmAppHelper::get_settings();
         $errors['field' . $args['id']] = !isset($posted_field->field_options['blank']) || $posted_field->field_options['blank'] == '' ? $frm_settings->blank_msg : $posted_field->field_options['blank'];
     } else {
         if ($posted_field->type == 'text' && !isset($_POST['item_name'])) {
             $_POST['item_name'] = $value;
         }
     }
     self::validate_url_field($errors, $posted_field, $value, $args);
     self::validate_email_field($errors, $posted_field, $value, $args);
     FrmEntriesHelper::set_posted_value($posted_field, $value, $args);
     self::validate_recaptcha($errors, $posted_field, $args);
     $errors = apply_filters('frm_validate_field_entry', $errors, $posted_field, $value, $args);
 }
 public static function validate_field($posted_field, &$errors, $values, $args = array())
 {
     $defaults = array('id' => $posted_field->id, 'parent_field_id' => '', 'key_pointer' => '', 'exclude' => array());
     $args = wp_parse_args($args, $defaults);
     if (empty($args['parent_field_id'])) {
         $value = isset($values['item_meta'][$args['id']]) ? $values['item_meta'][$args['id']] : '';
     } else {
         // value is from a nested form
         $value = $values;
     }
     // Check for values in "Other" fields
     FrmEntriesHelper::maybe_set_other_validation($posted_field, $value, $args);
     self::maybe_clear_value_for_default_blank_setting($posted_field, $value);
     // Reset arrays with only one value if it's not a field where array keys need to be preserved
     if (is_array($value) && count($value) == 1 && isset($value[0])) {
         $value = reset($value);
     }
     if ($posted_field->required == '1' && !is_array($value) && trim($value) == '') {
         $errors['field' . $args['id']] = FrmFieldsHelper::get_error_msg($posted_field, 'blank');
     } else {
         if ($posted_field->type == 'text' && !isset($_POST['item_name'])) {
             $_POST['item_name'] = $value;
         }
     }
     if ($value != '') {
         self::validate_url_field($errors, $posted_field, $value, $args);
         self::validate_email_field($errors, $posted_field, $value, $args);
         self::validate_number_field($errors, $posted_field, $value, $args);
         self::validate_phone_field($errors, $posted_field, $value, $args);
     }
     FrmEntriesHelper::set_posted_value($posted_field, $value, $args);
     self::validate_recaptcha($errors, $posted_field, $args);
     $errors = apply_filters('frm_validate_' . $posted_field->type . '_field_entry', $errors, $posted_field, $value, $args);
     $errors = apply_filters('frm_validate_field_entry', $errors, $posted_field, $value, $args);
 }
Esempio n. 3
0
 public static function validate($errors, $field, $value, $args)
 {
     $field->temp_id = $args['id'];
     // Keep current value for "Other" fields because it is needed for correct validation
     if (!$args['other']) {
         FrmEntriesHelper::get_posted_value($field, $value, $args);
     }
     if ($field->type == 'form' || FrmField::is_repeating_field($field)) {
         self::validate_embedded_form($errors, $field, $args['exclude']);
     } else {
         if ($field->type == 'user_id') {
             // make sure we have a user ID
             if (!is_numeric($value)) {
                 $value = FrmAppHelper::get_user_id_param($value);
                 FrmEntriesHelper::set_posted_value($field, $value, $args);
             }
             //add user id to post variables to be saved with entry
             $_POST['frm_user_id'] = $value;
         } else {
             if ($field->type == 'time' && is_array($value)) {
                 $value = $value['H'] . ':' . $value['m'] . (isset($value['A']) ? ' ' . $value['A'] : '');
                 FrmEntriesHelper::set_posted_value($field, $value, $args);
             }
         }
     }
     // don't validate if going backwards
     if (FrmProFormsHelper::going_to_prev($field->form_id)) {
         return array();
     }
     // clear any existing errors if draft
     if (FrmProFormsHelper::saving_draft() && isset($errors['field' . $field->temp_id])) {
         unset($errors['field' . $field->temp_id]);
     }
     self::validate_file_upload($errors, $field, $args);
     // if saving draft, only check file type since it won't be checked later
     // and confirmation field since the confirmation field value is not saved
     if (FrmProFormsHelper::saving_draft()) {
         //Check confirmation field if saving a draft
         self::validate_confirmation_field($errors, $field, $value, $args);
         return $errors;
     }
     self::validate_no_input_fields($errors, $field);
     if (empty($args['parent_field_id']) && !isset($_POST['item_meta'][$field->id])) {
         return $errors;
     }
     if (($field->type != 'tag' && $value == 0 || $field->type == 'tag' && $value == '') && isset($field->field_options['post_field']) && $field->field_options['post_field'] == 'post_category' && $field->required == '1') {
         $frm_settings = FrmAppHelper::get_settings();
         $errors['field' . $field->temp_id] = !isset($field->field_options['blank']) || $field->field_options['blank'] == '' || $field->field_options['blank'] == 'Untitled cannot be blank' ? $frm_settings->blank_msg : $field->field_options['blank'];
     }
     //Don't require fields hidden with shortcode fields="25,26,27"
     global $frm_vars;
     if (self::is_field_hidden_by_shortcode($field, $errors)) {
         unset($errors['field' . $field->temp_id]);
         $value = '';
     }
     //Don't require a conditionally hidden field
     self::validate_conditional_field($errors, $field, $value);
     //Don't require a field hidden in a conditional page or section heading
     self::validate_child_conditional_field($errors, $field, $value);
     //make sure the [auto_id] is still unique
     self::validate_auto_id($field, $value);
     //check uniqueness
     self::validate_unique_field($errors, $field, $value);
     self::set_post_fields($field, $value, $errors);
     if (!FrmProFieldsHelper::is_field_visible_to_user($field)) {
         //don't validate admin only fields that can't be seen
         unset($errors['field' . $field->temp_id]);
         FrmEntriesHelper::set_posted_value($field, $value, $args);
         return $errors;
     }
     self::validate_confirmation_field($errors, $field, $value, $args);
     //Don't validate the format if field is blank
     if (FrmAppHelper::is_empty_value($value)) {
         FrmEntriesHelper::set_posted_value($field, $value, $args);
         return $errors;
     }
     if (!is_array($value)) {
         $value = trim($value);
     }
     $validate_fields = array('number', 'phone', 'date');
     if (in_array($field->type, $validate_fields)) {
         $function = 'validate_' . $field->type . '_field';
         self::$function($errors, $field, $value);
     }
     FrmEntriesHelper::set_posted_value($field, $value, $args);
     return $errors;
 }