function wpcf7_birthday_validation_filter($result, $tag) { $tag = new WPCF7_Shortcode($tag); $name = $tag->name; $value = isset($_POST[$name]) ? trim(wp_unslash(strtr((string) $_POST[$name], "\n", " "))) : ''; if ('birthday' == $tag->type && $value != '') { if (preg_match('@^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[0-2])$@', $value) != 1) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('invalid_birthday'); } } if ('birthday*' == $tag->type) { if ($value == '') { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('invalid_required'); } else { if (preg_match('@^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[0-2])$@', $value) != 1) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('invalid_birthday'); } } } if (isset($result['reason'][$name]) && ($id = $tag->get_id_option())) { $result['idref'][$name] = $id; } return $result; }
function wpcf7_acceptance_shortcode_handler($tag) { $tag = new WPCF7_Shortcode($tag); if (empty($tag->name)) { return ''; } $validation_error = wpcf7_get_validation_error($tag->name); $class = wpcf7_form_controls_class($tag->type); if ($validation_error) { $class .= ' wpcf7-not-valid'; } if ($tag->has_option('invert')) { $class .= ' wpcf7-invert'; } $atts = array(); $atts['class'] = $tag->get_class_option($class); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option('tabindex', 'int', true); if ($tag->has_option('default:on')) { $atts['checked'] = 'checked'; } $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; $atts['type'] = 'checkbox'; $atts['name'] = $tag->name; $atts['value'] = '1'; $atts = wpcf7_format_atts($atts); $html = sprintf('<span class="wpcf7-form-control-wrap %1$s"><input %2$s />%3$s</span>', sanitize_html_class($tag->name), $atts, $validation_error); return $html; }
function wpcf7_count_shortcode_handler($tag) { $tag = new WPCF7_Shortcode($tag); if (empty($tag->name)) { return ''; } $target = wpcf7_scan_shortcode(array('name' => $tag->name)); $maxlength = $minlength = null; if ($target) { $target = new WPCF7_Shortcode($target[0]); $maxlength = $target->get_maxlength_option(); $minlength = $target->get_minlength_option(); if ($maxlength && $minlength && $maxlength < $minlength) { $maxlength = $minlength = null; } } if ($tag->has_option('down')) { $value = (int) $maxlength; $class = 'wpcf7-character-count down'; } else { $value = '0'; $class = 'wpcf7-character-count up'; } $atts = array(); $atts['id'] = $tag->get_id_option(); $atts['class'] = $tag->get_class_option($class); $atts['data-target-name'] = $tag->name; $atts['data-starting-value'] = $value; $atts['data-current-value'] = $value; $atts['data-maximum-value'] = $maxlength; $atts['data-minimum-value'] = $minlength; $atts = wpcf7_format_atts($atts); $html = sprintf('<span %1$s>%2$s</span>', $atts, $value); return $html; }
function wpcf7_icon_btn_shortcode_handler($tag) { $tag = new WPCF7_Shortcode($tag); $class = wpcf7_form_controls_class($tag->type); $atts = array(); $atts['class'] = $tag->get_class_option($class); $atts['class'] = $atts['class'] . ' wpcf7-submit'; //add the default submit class $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option('tabindex', 'int', true); $atts['type'] = 'submit'; $atts = wpcf7_format_atts($atts); //get icon class $icon_class = $tag->get_option('icon', '', true); $icon_class = empty($icon_class) ? 'fa-send' : $icon_class; //add default class if empty $icon_class = 'fa ' . esc_attr($icon_class); //add fa // did u notice space after fa //get button label $value = isset($tag->values[0]) ? $tag->values[0] : ''; if (empty($value)) { $value = __('Send', 'contact-form-7'); } //complete string $html = sprintf('<button %1$s /><i class="%2$s"></i> %3$s</button>', $atts, $icon_class, esc_html($value)); return $html; }
function wpcf7_number_validation_filter($result, $tag) { $tag = new WPCF7_Shortcode($tag); $name = $tag->name; $value = isset($_POST[$name]) ? trim(strtr((string) $_POST[$name], "\n", " ")) : ''; $min = $tag->get_option('min', 'signed_int', true); $max = $tag->get_option('max', 'signed_int', true); if ($tag->is_required() && '' == $value) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('invalid_required'); } elseif ('' != $value && !wpcf7_is_number($value)) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('invalid_number'); } elseif ('' != $value && '' != $min && (double) $value < (double) $min) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('number_too_small'); } elseif ('' != $value && '' != $max && (double) $max < (double) $value) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('number_too_large'); } if (isset($result['reason'][$name]) && ($id = $tag->get_id_option())) { $result['idref'][$name] = $id; } return $result; }
function wpcf7_date_validation_filter($result, $tag) { $tag = new WPCF7_Shortcode($tag); $name = $tag->name; $min = $tag->get_date_option('min'); $max = $tag->get_date_option('max'); $value = isset($_POST[$name]) ? trim(strtr((string) $_POST[$name], "\n", " ")) : ''; if ($tag->is_required() && '' == $value) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('invalid_required'); } elseif ('' != $value && !wpcf7_is_date($value)) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('invalid_date'); } elseif ('' != $value && !empty($min) && $value < $min) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('date_too_early'); } elseif ('' != $value && !empty($max) && $max < $value) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('date_too_late'); } if (isset($result['reason'][$name]) && ($id = $tag->get_id_option())) { $result['idref'][$name] = $id; } return $result; }
function wpcf7dtx_dynamictext_shortcode_handler($tag) { $tag = new WPCF7_Shortcode($tag); if (empty($tag->name)) { return ''; } $validation_error = wpcf7_get_validation_error($tag->name); $class = wpcf7_form_controls_class($tag->type, 'wpcf7dtx-dynamictext'); if ($validation_error) { $class .= ' wpcf7-not-valid'; } $atts = array(); $atts['size'] = $tag->get_size_option('40'); $atts['maxlength'] = $tag->get_maxlength_option(); $atts['minlength'] = $tag->get_minlength_option(); if ($atts['maxlength'] && $atts['minlength'] && $atts['maxlength'] < $atts['minlength']) { unset($atts['maxlength'], $atts['minlength']); } $atts['class'] = $tag->get_class_option($class); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option('tabindex', 'int', true); if ($tag->has_option('readonly')) { $atts['readonly'] = 'readonly'; } if ($tag->is_required()) { $atts['aria-required'] = 'true'; } $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; $value = (string) reset($tag->values); if ($tag->has_option('placeholder') || $tag->has_option('watermark')) { $atts['placeholder'] = $value; $value = ''; } $value = $tag->get_default_option($value); $value = wpcf7_get_hangover($tag->name, $value); $scval = do_shortcode('[' . $value . ']'); if ($scval != '[' . $value . ']') { $value = esc_attr($scval); } $atts['value'] = $value; //echo '<pre>'; print_r( $tag ); echo '</pre>'; switch ($tag->basetype) { case 'dynamictext': $atts['type'] = 'text'; break; case 'dynamichidden': $atts['type'] = 'hidden'; break; default: $atts['type'] = 'text'; break; } $atts['name'] = $tag->name; $atts = wpcf7_format_atts($atts); $html = sprintf('<span class="wpcf7-form-control-wrap %1$s"><input %2$s />%3$s</span>', sanitize_html_class($tag->name), $atts, $validation_error); return $html; }
function wpcf7_text_shortcode_handler($tag) { $tag = new WPCF7_Shortcode($tag); if (empty($tag->name)) { return ''; } $validation_error = wpcf7_get_validation_error($tag->name); $class = wpcf7_form_controls_class($tag->type, 'wpcf7-text'); if (in_array($tag->basetype, array('email', 'url', 'tel'))) { $class .= ' wpcf7-validates-as-' . $tag->basetype; } if ($validation_error) { $class .= ' wpcf7-not-valid'; } $atts = array(); $atts['size'] = $tag->get_size_option('40'); $atts['maxlength'] = $tag->get_maxlength_option(); $atts['minlength'] = $tag->get_minlength_option(); if ($atts['maxlength'] && $atts['minlength'] && $atts['maxlength'] < $atts['minlength']) { unset($atts['maxlength'], $atts['minlength']); } $atts['class'] = $tag->get_class_option($class); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option('tabindex', 'int', true); $atts['autocomplete'] = $tag->get_option('autocomplete', '[-0-9a-zA-Z]+', true); if ($tag->has_option('readonly')) { $atts['readonly'] = 'readonly'; } if ($tag->is_required()) { $atts['aria-required'] = 'true'; } $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; $value = (string) reset($tag->values); if ($tag->has_option('placeholder') || $tag->has_option('watermark')) { $atts['placeholder'] = $value; $value = ''; } $value = $tag->get_default_option($value); $value = wpcf7_get_hangover($tag->name, $value); $atts['value'] = $value; if (wpcf7_support_html5()) { $atts['type'] = $tag->basetype; } else { $atts['type'] = 'text'; } $atts['name'] = $tag->name; $atts = wpcf7_format_atts($atts); $html = sprintf('<span class="wpcf7-form-control-wrap %1$s"><input %2$s />%3$s</span>', sanitize_html_class($tag->name), $atts, $validation_error); return $html; }
function wpcf7_button_shortcode_handler($tag) { $tag = new WPCF7_Shortcode($tag); $class = wpcf7_form_controls_class($tag->type); $atts = array(); $atts['class'] = $tag->get_class_option($class); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option('tabindex', 'int', true); $value = isset($tag->values[0]) ? $tag->values[0] : ''; if (empty($value)) { $value = __('Send', 'contact-form-7'); } $atts['type'] = 'submit'; $atts = wpcf7_format_atts($atts); $html = sprintf('<button %1$s>%2$s</button>', $atts, $value); return $html; }
function wpcf7_quiz_validation_filter($result, $tag) { $tag = new WPCF7_Shortcode($tag); $name = $tag->name; $answer = isset($_POST[$name]) ? wpcf7_canonicalize($_POST[$name]) : ''; $answer = wp_unslash($answer); $answer_hash = wp_hash($answer, 'wpcf7_quiz'); $expected_hash = isset($_POST['_wpcf7_quiz_answer_' . $name]) ? (string) $_POST['_wpcf7_quiz_answer_' . $name] : ''; if ($answer_hash != $expected_hash) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('quiz_answer_not_correct'); } if (isset($result['reason'][$name]) && ($id = $tag->get_id_option())) { $result['idref'][$name] = $id; } return $result; }
function wpcf7_textarea_validation_filter($result, $tag) { $tag = new WPCF7_Shortcode($tag); $type = $tag->type; $name = $tag->name; $value = isset($_POST[$name]) ? (string) $_POST[$name] : ''; if ('textarea*' == $type) { if ('' == $value) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('invalid_required'); } } if (isset($result['reason'][$name]) && ($id = $tag->get_id_option())) { $result['idref'][$name] = $id; } return $result; }
function wpcf7_acceptance_validation_filter($result, $tag) { if (!wpcf7_acceptance_as_validation()) { return $result; } $tag = new WPCF7_Shortcode($tag); $name = $tag->name; $value = !empty($_POST[$name]) ? 1 : 0; $invert = $tag->has_option('invert'); if ($invert && $value || !$invert && !$value) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('accept_terms'); } if (isset($result['reason'][$name]) && ($id = $tag->get_id_option())) { $result['idref'][$name] = $id; } return $result; }
function wpcf7_number_shortcode_handler($tag) { $tag = new WPCF7_Shortcode($tag); if (empty($tag->name)) { return ''; } $validation_error = wpcf7_get_validation_error($tag->name); $class = wpcf7_form_controls_class($tag->type); $class .= ' wpcf7-validates-as-number'; if ($validation_error) { $class .= ' wpcf7-not-valid'; } $atts = array(); $atts['class'] = $tag->get_class_option($class); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option('tabindex', 'int', true); $atts['min'] = $tag->get_option('min', 'signed_int', true); $atts['max'] = $tag->get_option('max', 'signed_int', true); $atts['step'] = $tag->get_option('step', 'int', true); if ($tag->has_option('readonly')) { $atts['readonly'] = 'readonly'; } if ($tag->is_required()) { $atts['aria-required'] = 'true'; } $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; $value = (string) reset($tag->values); if ($tag->has_option('placeholder') || $tag->has_option('watermark')) { $atts['placeholder'] = $value; $value = ''; } $value = $tag->get_default_option($value); $value = wpcf7_get_hangover($tag->name, $value); $atts['value'] = $value; if (wpcf7_support_html5()) { $atts['type'] = $tag->basetype; } else { $atts['type'] = 'text'; } $atts['name'] = $tag->name; $atts = wpcf7_format_atts($atts); $html = sprintf('<span class="wpcf7-form-control-wrap %1$s"><input %2$s />%3$s</span>', sanitize_html_class($tag->name), $atts, $validation_error); return $html; }
/** * render wpcf7 field for counties * @param $tag */ function _hw_wcpf7_country_field_shortcode($tag) { if (!is_array($tag)) { return ''; } $tag = new WPCF7_Shortcode($tag); if (empty($tag->name)) { return ''; } $validation_error = wpcf7_get_validation_error($tag->name); $class = wpcf7_form_controls_class($tag->type); if ($validation_error) { $class .= ' wpcf7-not-valid'; } $atts = array(); $atts['class'] = $tag->get_class_option($class); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option('tabindex', 'int', true); if ($tag->is_required()) { $atts['aria-required'] = 'true'; } $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; $multiple = $tag->has_option('multiple'); $include_blank = $tag->has_option('include_blank'); $first_as_label = $tag->has_option('first_as_label'); //$values = $tag->values; $values = array('0' => 'Select country'); $values = array_merge($values, hw_wpcf7_field_countries_data()); $labels = $tag->labels; $html = ''; foreach ($values as $key => $value) { $item_atts = array('value' => $value); $item_atts = wpcf7_format_atts($item_atts); $label = isset($labels[$key]) ? $labels[$key] : $value; $html .= sprintf('<option %1$s>%2$s</option>', $item_atts, esc_html($label)); } if ($multiple) { $atts['multiple'] = 'multiple'; } $atts['name'] = $tag->name . ($multiple ? '[]' : ''); $atts = wpcf7_format_atts($atts); $html = sprintf('<span class="wpcf7-form-control-wrap %1$s"><select %2$s>%3$s</select>%4$s</span>', sanitize_html_class($tag->name), $atts, $html, $validation_error); return $html; }
function wpcf7_textarea_shortcode_handler($tag) { $tag = new WPCF7_Shortcode($tag); if (empty($tag->name)) { return ''; } $validation_error = wpcf7_get_validation_error($tag->name); $class = wpcf7_form_controls_class($tag->type); if ($validation_error) { $class .= ' wpcf7-not-valid'; } $atts = array(); $atts['cols'] = $tag->get_cols_option('40'); $atts['rows'] = $tag->get_rows_option('10'); $atts['maxlength'] = $tag->get_maxlength_option(); $atts['minlength'] = $tag->get_minlength_option(); if ($atts['maxlength'] && $atts['minlength'] && $atts['maxlength'] < $atts['minlength']) { unset($atts['maxlength'], $atts['minlength']); } $atts['class'] = $tag->get_class_option($class); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option('tabindex', 'int', true); $atts['autocomplete'] = $tag->get_option('autocomplete', '[-0-9a-zA-Z]+', true); if ($tag->has_option('readonly')) { $atts['readonly'] = 'readonly'; } if ($tag->is_required()) { $atts['aria-required'] = 'true'; } $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; $value = empty($tag->content) ? (string) reset($tag->values) : $tag->content; if ($tag->has_option('placeholder') || $tag->has_option('watermark')) { $atts['placeholder'] = $value; $value = ''; } $value = $tag->get_default_option($value); $value = wpcf7_get_hangover($tag->name, $value); $atts['name'] = $tag->name; $atts = wpcf7_format_atts($atts); $html = sprintf('<span class="wpcf7-form-control-wrap %1$s"><textarea %2$s>%3$s</textarea>%4$s</span>', sanitize_html_class($tag->name), $atts, esc_textarea($value), $validation_error); return $html; }
function wpcf7_quiz_shortcode_handler($tag) { $tag = new WPCF7_Shortcode($tag); if (empty($tag->name)) { return ''; } $validation_error = wpcf7_get_validation_error($tag->name); $class = wpcf7_form_controls_class($tag->type); if ($validation_error) { $class .= ' wpcf7-not-valid'; } $atts = array(); $atts['size'] = $tag->get_size_option('40'); $atts['maxlength'] = $tag->get_maxlength_option(); $atts['minlength'] = $tag->get_minlength_option(); if ($atts['maxlength'] && $atts['minlength'] && $atts['maxlength'] < $atts['minlength']) { unset($atts['maxlength'], $atts['minlength']); } $atts['class'] = $tag->get_class_option($class); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option('tabindex', 'int', true); $atts['autocomplete'] = 'off'; $atts['aria-required'] = 'true'; $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; $pipes = $tag->pipes; if ($pipes instanceof WPCF7_Pipes && !$pipes->zero()) { $pipe = $pipes->random_pipe(); $question = $pipe->before; $answer = $pipe->after; } else { // default quiz $question = '1+1=?'; $answer = '2'; } $answer = wpcf7_canonicalize($answer); $atts['type'] = 'text'; $atts['name'] = $tag->name; $atts = wpcf7_format_atts($atts); $html = sprintf('<span class="wpcf7-form-control-wrap %1$s"><label><span class="wpcf7-quiz-label">%2$s</span> <input %3$s /></label><input type="hidden" name="_wpcf7_quiz_answer_%4$s" value="%5$s" />%6$s</span>', sanitize_html_class($tag->name), esc_html($question), $atts, $tag->name, wp_hash($answer, 'wpcf7_quiz'), $validation_error); return $html; }
function wpcf7_robottrap_shortcode_handler($tag) { $tag = new WPCF7_Shortcode($tag); // default field name if (empty($tag->name)) { $tag->name = 'email-verify'; } // per field errors $validation_error = wpcf7_get_validation_error($tag->name); // add wpcf7 specific classes $class = wpcf7_form_controls_class('text'); if ($validation_error) { $class .= ' wpcf7-not-valid'; } $atts = array(); $atts['size'] = $tag->get_size_option('40'); $atts['maxlength'] = $tag->get_maxlength_option(); $atts['class'] = $tag->get_class_option($class); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option('tabindex', 'int', true); /** * Robots may look for the word "hidden". * * @ignore Commented out. */ //$atts['aria-hidden'] = 'true'; $value = (string) reset($tag->values); if ($tag->has_option('placeholder') || $tag->has_option('watermark')) { $atts['placeholder'] = $value; $value = ''; } elseif ('' === $value) { $value = $tag->get_default_option(); } $value = wpcf7_get_hangover($tag->name, $value); $atts['value'] = $value; $atts['type'] = 'text'; $atts['name'] = $tag->name; $atts = wpcf7_format_atts($atts); $html = sprintf('<span class="wpcf7-form-control-wrap %s"><input %s />%s</span>', sanitize_html_class($tag->name), $atts, $validation_error); return $html; }
/** * Renders the itens id input control (html code) * * @param string $tagName defined by the user at form's edit form (inside * shortcode brackets) * * @return void */ function wpcf7_authoremail_shortcode_handler($tagName) { global $post; $tag = new WPCF7_Shortcode($tagName); if (empty($tag->name)) { return ''; } $class = wpcf7_form_controls_class($tag->type); $class .= ' wpcf7-authoremail'; $author = get_the_author(); $author_email = get_the_author_meta('user_email'); $atts = array(); $atts['class'] = $tag->get_class_option($class); $atts['id'] = $tag->get_id_option(); $atts['type'] = 'hidden'; $atts['value'] = $author_email; $atts['name'] = $tag->name; $atts = wpcf7_format_atts($atts); $html = sprintf('<input %1$s />', $atts); return $html; }
/** * Renders the itens id input control (html code) * * @param string $tagName defined by the user at form's edit form (inside * shortcode brackets) * * @return void */ function wpcf7_itememail_shortcode_handler($tagName) { global $post; $tag = new WPCF7_Shortcode($tagName); if (empty($tag->name)) { return ''; } $class = wpcf7_form_controls_class($tag->type); $class .= ' wpcf7-itememail'; $post_id = $post->ID; $post_meta = get_post_meta($post_id, 'jv_item_email'); $item_email = reset($post_meta); $atts = array(); $atts['class'] = $tag->get_class_option($class); $atts['id'] = $tag->get_id_option(); $atts['type'] = 'hidden'; $atts['value'] = $item_email; $atts['name'] = $tag->name; $atts = wpcf7_format_atts($atts); $html = sprintf('<input %1$s />', $atts); return $html; }
function wpcf7_hashcash_validation_filter($result, $tag) { if (!class_exists('WP_Hashcash')) { die("WP_Hashcash Class is not available."); } $instance = WP_Hashcash::get_instance(); $tag = new WPCF7_Shortcode($tag); $hashcashid = $_POST['hashcashid']; if (!$hashcashid) { die("hashcashid value is not available."); } $type = $tag->type; $name = $tag->name; $op = wpcf7_hashcash_options($tag->options); $hashcash_result = $instance->verify_hash($hashcashid, $op['complexity']); if ($hashcash_result !== 'ok') { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('hashcash_error'); } if (isset($result['reason'][$name]) && ($id = $tag->get_id_option())) { $result['idref'][$name] = $id; } return $result; }
function wpcf7_text_validation_filter($result, $tag) { $tag = new WPCF7_Shortcode($tag); $name = $tag->name; $value = isset($_POST[$name]) ? trim(wp_unslash(strtr((string) $_POST[$name], "\n", " "))) : ''; if ('text*' == $tag->type) { if ('' == $value) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('invalid_required'); } } if ('email' == $tag->basetype) { if ($tag->is_required() && '' == $value) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('invalid_required'); } elseif ('' != $value && !wpcf7_is_email($value)) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('invalid_email'); } } if ('url' == $tag->basetype) { if ($tag->is_required() && '' == $value) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('invalid_required'); } elseif ('' != $value && !wpcf7_is_url($value)) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('invalid_url'); } } if ('tel' == $tag->basetype) { if ($tag->is_required() && '' == $value) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('invalid_required'); } elseif ('' != $value && !wpcf7_is_tel($value)) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('invalid_tel'); } } if (isset($result['reason'][$name]) && ($id = $tag->get_id_option())) { $result['idref'][$name] = $id; } return $result; }
function wpcf7_captcha_validation_filter($result, $tag) { $tag = new WPCF7_Shortcode($tag); $type = $tag->type; $name = $tag->name; $captchac = '_wpcf7_captcha_challenge_' . $name; $prefix = isset($_POST[$captchac]) ? (string) $_POST[$captchac] : ''; $response = isset($_POST[$name]) ? (string) $_POST[$name] : ''; if (0 == strlen($prefix) || !wpcf7_check_captcha($prefix, $response)) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('captcha_not_match'); } if (isset($result['reason'][$name]) && ($id = $tag->get_id_option())) { $result['idref'][$name] = $id; } if (0 != strlen($prefix)) { wpcf7_remove_captcha($prefix); } return $result; }
$atts['value'] = $value; if (wpcf7_support_html5()) { $atts['type'] = $tag->basetype; } else { $atts['type'] = 'text'; } $atts['name'] = $tag->name; $atts = wpcf7_format_atts($atts); $html = sprintf('<input class="%1$s" %2$s />%3$s', sanitize_html_class($tag->name), $atts, $validation_error); return $html; }, true); }); add_action('wpcf7_init', function () { wpcf7_add_shortcode('submit', function ($tag) { $tag = new WPCF7_Shortcode($tag); $class = wpcf7_form_controls_class($tag->type); $atts = []; $atts['class'] = $tag->get_class_option($class) . ' btn'; $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option('tabindex', 'int', true); $value = isset($tag->values[0]) ? $tag->values[0] : ''; if (empty($value)) { $value = __('Send', 'contact-form-7'); } $atts['type'] = 'submit'; $atts['value'] = $value; $atts = wpcf7_format_atts($atts); $html = sprintf('<button type="submit" %1$s>%2$s</button>', $atts, $value); return $html; }); });
function wpcf7_checkbox_shortcode_handler($tag) { $tag = new WPCF7_Shortcode($tag); if (empty($tag->name)) { return ''; } $validation_error = wpcf7_get_validation_error($tag->name); $class = wpcf7_form_controls_class($tag->type); if ($validation_error) { $class .= ' wpcf7-not-valid'; } $label_first = $tag->has_option('label_first'); $use_label_element = $tag->has_option('use_label_element'); $exclusive = $tag->has_option('exclusive'); $free_text = $tag->has_option('free_text'); $multiple = false; if ('checkbox' == $tag->basetype) { $multiple = !$exclusive; } else { // radio $exclusive = false; } if ($exclusive) { $class .= ' wpcf7-exclusive-checkbox'; } $atts = array(); $atts['class'] = $tag->get_class_option($class); $atts['id'] = $tag->get_id_option(); $tabindex = $tag->get_option('tabindex', 'int', true); if (false !== $tabindex) { $tabindex = absint($tabindex); } $html = ''; $count = 0; $values = (array) $tag->values; $labels = (array) $tag->labels; if ($data = (array) $tag->get_data_option()) { if ($free_text) { $values = array_merge(array_slice($values, 0, -1), array_values($data), array_slice($values, -1)); $labels = array_merge(array_slice($labels, 0, -1), array_values($data), array_slice($labels, -1)); } else { $values = array_merge($values, array_values($data)); $labels = array_merge($labels, array_values($data)); } } $defaults = array(); $default_choice = $tag->get_default_option(null, 'multiple=1'); foreach ($default_choice as $value) { $key = array_search($value, $values, true); if (false !== $key) { $defaults[] = (int) $key + 1; } } if ($matches = $tag->get_first_match_option('/^default:([0-9_]+)$/')) { $defaults = array_merge($defaults, explode('_', $matches[1])); } $defaults = array_unique($defaults); $hangover = wpcf7_get_hangover($tag->name, $multiple ? array() : ''); foreach ($values as $key => $value) { $class = 'wpcf7-list-item'; $checked = false; if ($hangover) { if ($multiple) { $checked = in_array(esc_sql($value), (array) $hangover); } else { $checked = $hangover == esc_sql($value); } } else { $checked = in_array($key + 1, (array) $defaults); } if (isset($labels[$key])) { $label = $labels[$key]; } else { $label = $value; } $item_atts = array('type' => $tag->basetype, 'name' => $tag->name . ($multiple ? '[]' : ''), 'value' => $value, 'checked' => $checked ? 'checked' : '', 'tabindex' => $tabindex ? $tabindex : ''); $item_atts = wpcf7_format_atts($item_atts); if ($label_first) { // put label first, input last $item = sprintf('<span class="wpcf7-list-item-label">%1$s</span> <input %2$s />', esc_html($label), $item_atts); } else { $item = sprintf('<input %2$s /> <span class="wpcf7-list-item-label">%1$s</span>', esc_html($label), $item_atts); } if ($use_label_element) { $item = '<label>' . $item . '</label>'; } if (false !== $tabindex) { $tabindex += 1; } $count += 1; if (1 == $count) { $class .= ' first'; } if (count($values) == $count) { // last round $class .= ' last'; if ($free_text) { $free_text_name = sprintf('_wpcf7_%1$s_free_text_%2$s', $tag->basetype, $tag->name); $free_text_atts = array('name' => $free_text_name, 'class' => 'wpcf7-free-text', 'tabindex' => $tabindex ? $tabindex : ''); if (wpcf7_is_posted() && isset($_POST[$free_text_name])) { $free_text_atts['value'] = wp_unslash($_POST[$free_text_name]); } $free_text_atts = wpcf7_format_atts($free_text_atts); $item .= sprintf(' <input type="text" %s />', $free_text_atts); $class .= ' has-free-text'; } } $item = '<span class="' . esc_attr($class) . '">' . $item . '</span>'; $html .= $item; } $atts = wpcf7_format_atts($atts); $html = sprintf('<span class="wpcf7-form-control-wrap %1$s"><span %2$s>%3$s</span>%4$s</span>', sanitize_html_class($tag->name), $atts, $html, $validation_error); return $html; }
function wpcf7_orders_shortcode_handler($tag) { $tag = new WPCF7_Shortcode($tag); if (!is_user_logged_in()) { return 'Please login first to show orders'; } if (empty($tag->name)) { return ''; } $validation_error = wpcf7_get_validation_error($tag->name); $class = wpcf7_form_controls_class($tag->type); if ($validation_error) { $class .= ' wpcf7-not-valid'; } $atts = array(); $atts['class'] = $tag->get_class_option($class); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option('tabindex', 'int', true); if ($tag->is_required()) { $atts['aria-required'] = 'true'; } $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; $multiple = $tag->has_option('multiple'); $include_blank = $tag->has_option('include_blank'); $first_as_label = $tag->has_option('first_as_label'); // Change order query settings here $order_posts = get_posts(array('post_type' => 'shop_order', 'meta_key' => '_customer_user', 'meta_value' => get_current_user_id(), 'post_status' => 'publish', 'numberposts' => -1)); // Display order options $values = array(); foreach ($order_posts as $order) { // Set `values` with order ID & order title $values[] = '#' . $order->ID . ' | ' . $order->post_title; } $values = $values; $labels = array_values($values); $shifted = false; if ($include_blank || empty($values)) { array_unshift($labels, '---'); array_unshift($values, ''); $shifted = true; } elseif ($first_as_label) { $values[0] = ''; } $html = ''; $hangover = wpcf7_get_hangover($tag->name); foreach ($values as $key => $value) { $selected = false; if ($hangover) { if ($multiple) { $selected = in_array(esc_sql($value), (array) $hangover); } else { $selected = $hangover == esc_sql($value); } } else { if (!$shifted && in_array((int) $key + 1, (array) $defaults)) { $selected = true; } elseif ($shifted && in_array((int) $key, (array) $defaults)) { $selected = true; } } $item_atts = array('value' => $value, 'selected' => $selected ? 'selected' : ''); $item_atts = wpcf7_format_atts($item_atts); $label = isset($labels[$key]) ? $labels[$key] : $value; $html .= sprintf('<option %1$s>%2$s</option>', $item_atts, esc_html($label)); } if ($multiple) { $atts['multiple'] = 'multiple'; } $atts['name'] = $tag->name . ($multiple ? '[]' : ''); $atts = wpcf7_format_atts($atts); $html = sprintf('<span class="wpcf7-form-control-wrap %1$s"><select %2$s>%3$s</select>%4$s</span>', sanitize_html_class($tag->name), $atts, $html, $validation_error); return $html; }
function wpcf7_recaptcha_shortcode_handler($tag) { wp_enqueue_script('google-recaptcha'); $tag = new WPCF7_Shortcode($tag); $atts = array(); $recaptcha = WPCF7_RECAPTCHA::get_instance(); $atts['data-sitekey'] = $recaptcha->get_sitekey(); $atts['data-theme'] = $tag->get_option('theme', '(dark|light)', true); $atts['data-type'] = $tag->get_option('type', '(audio|image)', true); $atts['data-size'] = $tag->get_option('size', '(compact|normal)', true); $atts['data-tabindex'] = $tag->get_option('tabindex', 'int', true); $atts['data-callback'] = $tag->get_option('callback', '', true); $atts['data-expired-callback'] = $tag->get_option('expired-callback', '', true); $atts['class'] = $tag->get_class_option(wpcf7_form_controls_class($tag->type, 'g-recaptcha')); $atts['id'] = $tag->get_id_option(); $html = sprintf('<div %1$s></div>', wpcf7_format_atts($atts)); $html .= wpcf7_recaptcha_noscript(array('sitekey' => $atts['data-sitekey'])); $html = sprintf('<div class="wpcf7-form-control-wrap">%s</div>', $html); return $html; }
function wpcf7_captcha_shortcode_handler($tag) { $tag = new WPCF7_Shortcode($tag); if ('captchac' == $tag->type && !class_exists('ReallySimpleCaptcha')) { return '<em>' . __('To use CAPTCHA, you need <a href="http://wordpress.org/extend/plugins/really-simple-captcha/">Really Simple CAPTCHA</a> plugin installed.', 'contact-form-7') . '</em>'; } if (empty($tag->name)) { return ''; } $validation_error = wpcf7_get_validation_error($tag->name); $class = wpcf7_form_controls_class($tag->type); if ('captchac' == $tag->type) { // CAPTCHA-Challenge (image) $class .= ' wpcf7-captcha-' . $tag->name; $atts = array(); $atts['class'] = $tag->get_class_option($class); $atts['id'] = $tag->get_id_option(); $op = array('img_size' => array(72, 24), 'base' => array(6, 18), 'font_size' => 14, 'font_char_width' => 15); $op = array_merge($op, wpcf7_captchac_options($tag->options)); if (!($filename = wpcf7_generate_captcha($op))) { return ''; } if (!empty($op['img_size'])) { if (isset($op['img_size'][0])) { $atts['width'] = $op['img_size'][0]; } if (isset($op['img_size'][1])) { $atts['height'] = $op['img_size'][1]; } } $atts['alt'] = 'captcha'; $atts['src'] = wpcf7_captcha_url($filename); $atts = wpcf7_format_atts($atts); $prefix = substr($filename, 0, strrpos($filename, '.')); $html = sprintf('<input type="hidden" name="_wpcf7_captcha_challenge_%1$s" value="%2$s" /><img %3$s />', $tag->name, $prefix, $atts); return $html; } elseif ('captchar' == $tag->type) { // CAPTCHA-Response (input) if ($validation_error) { $class .= ' wpcf7-not-valid'; } $atts = array(); $atts['size'] = $tag->get_size_option('40'); $atts['maxlength'] = $tag->get_maxlength_option(); $atts['minlength'] = $tag->get_minlength_option(); if ($atts['maxlength'] && $atts['minlength'] && $atts['maxlength'] < $atts['minlength']) { unset($atts['maxlength'], $atts['minlength']); } $atts['class'] = $tag->get_class_option($class); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option('tabindex', 'int', true); $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; $value = (string) reset($tag->values); if (wpcf7_is_posted()) { $value = ''; } if ($tag->has_option('placeholder') || $tag->has_option('watermark')) { $atts['placeholder'] = $value; $value = ''; } $atts['value'] = $value; $atts['type'] = 'text'; $atts['name'] = $tag->name; $atts = wpcf7_format_atts($atts); $html = sprintf('<span class="wpcf7-form-control-wrap %1$s"><input %2$s />%3$s</span>', sanitize_html_class($tag->name), $atts, $validation_error); return $html; } }
function wpcf7_select_validation_filter($result, $tag) { $tag = new WPCF7_Shortcode($tag); $name = $tag->name; if (isset($_POST[$name]) && is_array($_POST[$name])) { foreach ($_POST[$name] as $key => $value) { if ('' === $value) { unset($_POST[$name][$key]); } } } if ($tag->is_required()) { if (!isset($_POST[$name]) || empty($_POST[$name]) && '0' !== $_POST[$name]) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message('invalid_required'); } } if (isset($result['reason'][$name]) && ($id = $tag->get_id_option())) { $result['idref'][$name] = $id; } return $result; }
function wpcf7_file_validation_filter($result, $tag) { $tag = new WPCF7_Shortcode($tag); $name = $tag->name; $id = $tag->get_id_option(); $file = isset($_FILES[$name]) ? $_FILES[$name] : null; if ($file['error'] && UPLOAD_ERR_NO_FILE != $file['error']) { $result->invalidate($tag, wpcf7_get_message('upload_failed_php_error')); return $result; } if (empty($file['tmp_name']) && $tag->is_required()) { $result->invalidate($tag, wpcf7_get_message('invalid_required')); return $result; } if (!is_uploaded_file($file['tmp_name'])) { return $result; } $allowed_file_types = array(); if ($file_types_a = $tag->get_option('filetypes')) { foreach ($file_types_a as $file_types) { $file_types = explode('|', $file_types); foreach ($file_types as $file_type) { $file_type = trim($file_type, '.'); $file_type = str_replace(array('.', '+', '*', '?'), array('\\.', '\\+', '\\*', '\\?'), $file_type); $allowed_file_types[] = $file_type; } } } $allowed_file_types = array_unique($allowed_file_types); $file_type_pattern = implode('|', $allowed_file_types); $allowed_size = 1048576; // default size 1 MB if ($file_size_a = $tag->get_option('limit')) { $limit_pattern = '/^([1-9][0-9]*)([kKmM]?[bB])?$/'; foreach ($file_size_a as $file_size) { if (preg_match($limit_pattern, $file_size, $matches)) { $allowed_size = (int) $matches[1]; if (!empty($matches[2])) { $kbmb = strtolower($matches[2]); if ('kb' == $kbmb) { $allowed_size *= 1024; } elseif ('mb' == $kbmb) { $allowed_size *= 1024 * 1024; } } break; } } } /* File type validation */ // Default file-type restriction if ('' == $file_type_pattern) { $file_type_pattern = 'jpg|jpeg|png|gif|pdf|doc|docx|ppt|pptx|odt|avi|ogg|m4a|mov|mp3|mp4|mpg|wav|wmv'; } $file_type_pattern = trim($file_type_pattern, '|'); $file_type_pattern = '(' . $file_type_pattern . ')'; $file_type_pattern = '/\\.' . $file_type_pattern . '$/i'; if (!preg_match($file_type_pattern, $file['name'])) { $result->invalidate($tag, wpcf7_get_message('upload_file_type_invalid')); return $result; } /* File size validation */ if ($file['size'] > $allowed_size) { $result->invalidate($tag, wpcf7_get_message('upload_file_too_large')); return $result; } wpcf7_init_uploads(); // Confirm upload dir $uploads_dir = wpcf7_upload_tmp_dir(); $uploads_dir = wpcf7_maybe_add_random_dir($uploads_dir); $filename = $file['name']; $filename = wpcf7_canonicalize($filename); $filename = sanitize_file_name($filename); $filename = wpcf7_antiscript_file_name($filename); $filename = wp_unique_filename($uploads_dir, $filename); $new_file = trailingslashit($uploads_dir) . $filename; if (false === @move_uploaded_file($file['tmp_name'], $new_file)) { $result->invalidate($tag, wpcf7_get_message('upload_failed')); return $result; } // Make sure the uploaded file is only readable for the owner process @chmod($new_file, 0400); if ($submission = WPCF7_Submission::get_instance()) { $submission->add_uploaded_file($name, $new_file); } return $result; }
function wpcf7_select_shortcode_handler($tag) { $tag = new WPCF7_Shortcode($tag); if (empty($tag->name)) { return ''; } $validation_error = wpcf7_get_validation_error($tag->name); $class = wpcf7_form_controls_class($tag->type); if ($validation_error) { $class .= ' wpcf7-not-valid'; } $atts = array(); $atts['class'] = $tag->get_class_option($class); $atts['id'] = $tag->get_id_option(); $atts['tabindex'] = $tag->get_option('tabindex', 'int', true); if ($tag->is_required()) { $atts['aria-required'] = 'true'; } $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; $multiple = $tag->has_option('multiple'); $include_blank = $tag->has_option('include_blank'); $first_as_label = $tag->has_option('first_as_label'); $values = $tag->values; $labels = $tag->labels; if ($data = (array) $tag->get_data_option()) { $values = array_merge($values, array_values($data)); $labels = array_merge($labels, array_values($data)); } $defaults = array(); $default_choice = $tag->get_default_option(null, 'multiple=1'); foreach ($default_choice as $value) { $key = array_search($value, $values, true); if (false !== $key) { $defaults[] = (int) $key + 1; } } if ($matches = $tag->get_first_match_option('/^default:([0-9_]+)$/')) { $defaults = array_merge($defaults, explode('_', $matches[1])); } $defaults = array_unique($defaults); $shifted = false; if ($include_blank || empty($values)) { array_unshift($labels, '---'); array_unshift($values, ''); $shifted = true; } elseif ($first_as_label) { $values[0] = ''; } $html = ''; $hangover = wpcf7_get_hangover($tag->name); foreach ($values as $key => $value) { $selected = false; if ($hangover) { if ($multiple) { $selected = in_array(esc_sql($value), (array) $hangover); } else { $selected = $hangover == esc_sql($value); } } else { if (!$shifted && in_array((int) $key + 1, (array) $defaults)) { $selected = true; } elseif ($shifted && in_array((int) $key, (array) $defaults)) { $selected = true; } } $item_atts = array('value' => $value, 'selected' => $selected ? 'selected' : ''); $item_atts = wpcf7_format_atts($item_atts); $label = isset($labels[$key]) ? $labels[$key] : $value; $html .= sprintf('<option %1$s>%2$s</option>', $item_atts, esc_html($label)); } if ($multiple) { $atts['multiple'] = 'multiple'; } $atts['name'] = $tag->name . ($multiple ? '[]' : ''); $atts = wpcf7_format_atts($atts); $html = sprintf('<span class="wpcf7-form-control-wrap %1$s"><select %2$s>%3$s</select>%4$s</span>', sanitize_html_class($tag->name), $atts, $html, $validation_error); return $html; }