Version Description
- reCAPTCHA: Shows no warning on upgrading from v2 if the global sitekey is defined.
- reCAPTCHA: Improves the frontend JavaScript coding.
- Accessibility: Improves the response message markup.
- Fixes the regular expression pattern in
wpcf7_is_tel()
. - Fixed: Character count was not reset after a successful submission.
- Fixed: The fourth parameter of the
wpcf7_special_mail_tags
filter hook was not correctly set.
Download this release
Release Info
Developer | takayukister |
Plugin | Contact Form 7 |
Version | 5.1.8 |
Comparing to | |
See all releases |
Code changes from version 5.1.7 to 5.1.8
- admin/includes/config-validator.php +1 -1
- includes/contact-form.php +22 -7
- includes/formatting.php +7 -1
- includes/js/scripts.js +49 -38
- includes/mail.php +2 -1
- includes/submission.php +1 -1
- modules/akismet.php +4 -5
- modules/checkbox.php +8 -4
- modules/constant-contact.php +6 -2
- modules/date.php +14 -9
- modules/file.php +10 -4
- modules/flamingo.php +13 -3
- modules/number.php +11 -6
- modules/quiz.php +3 -2
- modules/really-simple-captcha.php +6 -4
- modules/recaptcha.php +52 -45
- modules/response.php +6 -2
- modules/select.php +2 -1
- modules/text.php +14 -9
- modules/textarea.php +5 -3
- readme.txt +10 -1
- settings.php +1 -1
- wp-contact-form-7.php +2 -2
admin/includes/config-validator.php
CHANGED
@@ -69,7 +69,7 @@ function wpcf7_load_bulk_validate_page( $page, $action ) {
|
|
69 |
$contact_forms = WPCF7_ContactForm::find();
|
70 |
|
71 |
$result = array(
|
72 |
-
'timestamp' =>
|
73 |
'version' => WPCF7_VERSION,
|
74 |
'count_valid' => 0,
|
75 |
'count_invalid' => 0,
|
69 |
$contact_forms = WPCF7_ContactForm::find();
|
70 |
|
71 |
$result = array(
|
72 |
+
'timestamp' => time(),
|
73 |
'version' => WPCF7_VERSION,
|
74 |
'count_valid' => 0,
|
75 |
'count_invalid' => 0,
|
includes/contact-form.php
CHANGED
@@ -520,15 +520,18 @@ class WPCF7_ContactForm {
|
|
520 |
$atts = array(
|
521 |
'class' => trim( $class ),
|
522 |
'role' => trim( $role ),
|
|
|
523 |
);
|
524 |
|
525 |
$atts = wpcf7_format_atts( $atts );
|
526 |
|
527 |
$output = sprintf( '<div %1$s>%2$s</div>',
|
528 |
-
$atts, esc_html( $content )
|
|
|
529 |
|
530 |
$output = apply_filters( 'wpcf7_form_response_output',
|
531 |
-
$output, $class, $content, $this, $status
|
|
|
532 |
|
533 |
$this->responses_count += 1;
|
534 |
|
@@ -560,7 +563,8 @@ class WPCF7_ContactForm {
|
|
560 |
$content .= sprintf( '<li>%s</li>', $link );
|
561 |
} else {
|
562 |
$content .= sprintf( '<li>%s</li>',
|
563 |
-
esc_html( $field['reason'] )
|
|
|
564 |
}
|
565 |
|
566 |
$content .= "\n";
|
@@ -572,12 +576,15 @@ class WPCF7_ContactForm {
|
|
572 |
|
573 |
$atts = array(
|
574 |
'class' => trim( $class ),
|
575 |
-
'role' => trim( $role )
|
|
|
|
|
576 |
|
577 |
$atts = wpcf7_format_atts( $atts );
|
578 |
|
579 |
$output = sprintf( '<div %1$s>%2$s</div>',
|
580 |
-
$atts, $content
|
|
|
581 |
|
582 |
return $output;
|
583 |
}
|
@@ -597,9 +604,17 @@ class WPCF7_ContactForm {
|
|
597 |
return $error;
|
598 |
}
|
599 |
|
|
|
|
|
|
|
|
|
|
|
|
|
600 |
$error = sprintf(
|
601 |
-
'<span
|
602 |
-
|
|
|
|
|
603 |
|
604 |
return apply_filters( 'wpcf7_validation_error', $error, $name, $this );
|
605 |
}
|
520 |
$atts = array(
|
521 |
'class' => trim( $class ),
|
522 |
'role' => trim( $role ),
|
523 |
+
'aria-hidden' => 'true',
|
524 |
);
|
525 |
|
526 |
$atts = wpcf7_format_atts( $atts );
|
527 |
|
528 |
$output = sprintf( '<div %1$s>%2$s</div>',
|
529 |
+
$atts, esc_html( $content )
|
530 |
+
);
|
531 |
|
532 |
$output = apply_filters( 'wpcf7_form_response_output',
|
533 |
+
$output, $class, $content, $this, $status
|
534 |
+
);
|
535 |
|
536 |
$this->responses_count += 1;
|
537 |
|
563 |
$content .= sprintf( '<li>%s</li>', $link );
|
564 |
} else {
|
565 |
$content .= sprintf( '<li>%s</li>',
|
566 |
+
esc_html( $field['reason'] )
|
567 |
+
);
|
568 |
}
|
569 |
|
570 |
$content .= "\n";
|
576 |
|
577 |
$atts = array(
|
578 |
'class' => trim( $class ),
|
579 |
+
'role' => trim( $role ),
|
580 |
+
'aria-live' => 'polite',
|
581 |
+
);
|
582 |
|
583 |
$atts = wpcf7_format_atts( $atts );
|
584 |
|
585 |
$output = sprintf( '<div %1$s>%2$s</div>',
|
586 |
+
$atts, $content
|
587 |
+
);
|
588 |
|
589 |
return $output;
|
590 |
}
|
604 |
return $error;
|
605 |
}
|
606 |
|
607 |
+
$atts = array(
|
608 |
+
'class' => 'wpcf7-not-valid-tip',
|
609 |
+
'role' => 'alert',
|
610 |
+
'aria-hidden' => 'true',
|
611 |
+
);
|
612 |
+
|
613 |
$error = sprintf(
|
614 |
+
'<span %1$s>%2$s</span>',
|
615 |
+
wpcf7_format_atts( $atts ),
|
616 |
+
esc_html( $error )
|
617 |
+
);
|
618 |
|
619 |
return apply_filters( 'wpcf7_validation_error', $error, $name, $this );
|
620 |
}
|
includes/formatting.php
CHANGED
@@ -209,7 +209,13 @@ function wpcf7_is_url( $url ) {
|
|
209 |
}
|
210 |
|
211 |
function wpcf7_is_tel( $tel ) {
|
212 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
213 |
return apply_filters( 'wpcf7_is_tel', $result, $tel );
|
214 |
}
|
215 |
|
209 |
}
|
210 |
|
211 |
function wpcf7_is_tel( $tel ) {
|
212 |
+
$pattern = '%^[+]?' // + sign
|
213 |
+
. '(?:\([0-9]+\)|[0-9]+)' // (1234) or 1234
|
214 |
+
. '(?:[/ -]*' // delimiter
|
215 |
+
. '(?:\([0-9]+\)|[0-9]+)' // (1234) or 1234
|
216 |
+
. ')*$%';
|
217 |
+
|
218 |
+
$result = preg_match( $pattern, trim( $tel ) );
|
219 |
return apply_filters( 'wpcf7_is_tel', $result, $tel );
|
220 |
}
|
221 |
|
includes/js/scripts.js
CHANGED
@@ -136,42 +136,7 @@
|
|
136 |
}
|
137 |
|
138 |
// Character Count
|
139 |
-
|
140 |
-
var $count = $( this );
|
141 |
-
var name = $count.attr( 'data-target-name' );
|
142 |
-
var down = $count.hasClass( 'down' );
|
143 |
-
var starting = parseInt( $count.attr( 'data-starting-value' ), 10 );
|
144 |
-
var maximum = parseInt( $count.attr( 'data-maximum-value' ), 10 );
|
145 |
-
var minimum = parseInt( $count.attr( 'data-minimum-value' ), 10 );
|
146 |
-
|
147 |
-
var updateCount = function( target ) {
|
148 |
-
var $target = $( target );
|
149 |
-
var length = $target.val().length;
|
150 |
-
var count = down ? starting - length : length;
|
151 |
-
$count.attr( 'data-current-value', count );
|
152 |
-
$count.text( count );
|
153 |
-
|
154 |
-
if ( maximum && maximum < length ) {
|
155 |
-
$count.addClass( 'too-long' );
|
156 |
-
} else {
|
157 |
-
$count.removeClass( 'too-long' );
|
158 |
-
}
|
159 |
-
|
160 |
-
if ( minimum && length < minimum ) {
|
161 |
-
$count.addClass( 'too-short' );
|
162 |
-
} else {
|
163 |
-
$count.removeClass( 'too-short' );
|
164 |
-
}
|
165 |
-
};
|
166 |
-
|
167 |
-
$( ':input[name="' + name + '"]', $form ).each( function() {
|
168 |
-
updateCount( this );
|
169 |
-
|
170 |
-
$( this ).keyup( function() {
|
171 |
-
updateCount( this );
|
172 |
-
} );
|
173 |
-
} );
|
174 |
-
} );
|
175 |
|
176 |
// URL Input Correction
|
177 |
$form.on( 'change', '.wpcf7-validates-as-url', function() {
|
@@ -303,6 +268,7 @@
|
|
303 |
} );
|
304 |
|
305 |
wpcf7.toggleSubmit( $form );
|
|
|
306 |
}
|
307 |
|
308 |
if ( ! wpcf7.supportHtml5.placeholder ) {
|
@@ -400,11 +366,56 @@
|
|
400 |
} );
|
401 |
};
|
402 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
403 |
wpcf7.notValidTip = function( target, message ) {
|
404 |
var $target = $( target );
|
405 |
$( '.wpcf7-not-valid-tip', $target ).remove();
|
406 |
-
|
407 |
-
|
|
|
|
|
|
|
|
|
408 |
|
409 |
if ( $target.is( '.use-floating-validation-tip *' ) ) {
|
410 |
var fadeOut = function( target ) {
|
136 |
}
|
137 |
|
138 |
// Character Count
|
139 |
+
wpcf7.resetCounter( $form );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
|
141 |
// URL Input Correction
|
142 |
$form.on( 'change', '.wpcf7-validates-as-url', function() {
|
268 |
} );
|
269 |
|
270 |
wpcf7.toggleSubmit( $form );
|
271 |
+
wpcf7.resetCounter( $form );
|
272 |
}
|
273 |
|
274 |
if ( ! wpcf7.supportHtml5.placeholder ) {
|
366 |
} );
|
367 |
};
|
368 |
|
369 |
+
wpcf7.resetCounter = function( form ) {
|
370 |
+
var $form = $( form );
|
371 |
+
|
372 |
+
$( '.wpcf7-character-count', $form ).each( function() {
|
373 |
+
var $count = $( this );
|
374 |
+
var name = $count.attr( 'data-target-name' );
|
375 |
+
var down = $count.hasClass( 'down' );
|
376 |
+
var starting = parseInt( $count.attr( 'data-starting-value' ), 10 );
|
377 |
+
var maximum = parseInt( $count.attr( 'data-maximum-value' ), 10 );
|
378 |
+
var minimum = parseInt( $count.attr( 'data-minimum-value' ), 10 );
|
379 |
+
|
380 |
+
var updateCount = function( target ) {
|
381 |
+
var $target = $( target );
|
382 |
+
var length = $target.val().length;
|
383 |
+
var count = down ? starting - length : length;
|
384 |
+
$count.attr( 'data-current-value', count );
|
385 |
+
$count.text( count );
|
386 |
+
|
387 |
+
if ( maximum && maximum < length ) {
|
388 |
+
$count.addClass( 'too-long' );
|
389 |
+
} else {
|
390 |
+
$count.removeClass( 'too-long' );
|
391 |
+
}
|
392 |
+
|
393 |
+
if ( minimum && length < minimum ) {
|
394 |
+
$count.addClass( 'too-short' );
|
395 |
+
} else {
|
396 |
+
$count.removeClass( 'too-short' );
|
397 |
+
}
|
398 |
+
};
|
399 |
+
|
400 |
+
$( ':input[name="' + name + '"]', $form ).each( function() {
|
401 |
+
updateCount( this );
|
402 |
+
|
403 |
+
$( this ).keyup( function() {
|
404 |
+
updateCount( this );
|
405 |
+
} );
|
406 |
+
} );
|
407 |
+
} );
|
408 |
+
};
|
409 |
+
|
410 |
wpcf7.notValidTip = function( target, message ) {
|
411 |
var $target = $( target );
|
412 |
$( '.wpcf7-not-valid-tip', $target ).remove();
|
413 |
+
|
414 |
+
$( '<span></span>' ).attr( {
|
415 |
+
'class': 'wpcf7-not-valid-tip',
|
416 |
+
'role': 'alert',
|
417 |
+
'aria-hidden': 'true',
|
418 |
+
} ).text( message ).appendTo( $target );
|
419 |
|
420 |
if ( $target.is( '.use-floating-validation-tip *' ) ) {
|
421 |
var fadeOut = function( target ) {
|
includes/mail.php
CHANGED
@@ -353,7 +353,8 @@ class WPCF7_MailTaggedText {
|
|
353 |
}
|
354 |
|
355 |
$special = apply_filters( 'wpcf7_special_mail_tags', null,
|
356 |
-
$mail_tag->tag_name(), $html, $mail_tag
|
|
|
357 |
|
358 |
if ( null !== $special ) {
|
359 |
$this->replaced_tags[$tag] = $special;
|
353 |
}
|
354 |
|
355 |
$special = apply_filters( 'wpcf7_special_mail_tags', null,
|
356 |
+
$mail_tag->tag_name(), $html, $mail_tag
|
357 |
+
);
|
358 |
|
359 |
if ( null !== $special ) {
|
360 |
$this->replaced_tags[$tag] = $special;
|
includes/submission.php
CHANGED
@@ -170,7 +170,7 @@ class WPCF7_Submission {
|
|
170 |
'user_agent' => isset( $_SERVER['HTTP_USER_AGENT'] )
|
171 |
? substr( $_SERVER['HTTP_USER_AGENT'], 0, 254 ) : '',
|
172 |
'url' => $this->get_request_url(),
|
173 |
-
'timestamp' =>
|
174 |
'unit_tag' =>
|
175 |
isset( $_POST['_wpcf7_unit_tag'] ) ? $_POST['_wpcf7_unit_tag'] : '',
|
176 |
'container_post_id' => isset( $_POST['_wpcf7_container_post'] )
|
170 |
'user_agent' => isset( $_SERVER['HTTP_USER_AGENT'] )
|
171 |
? substr( $_SERVER['HTTP_USER_AGENT'], 0, 254 ) : '',
|
172 |
'url' => $this->get_request_url(),
|
173 |
+
'timestamp' => time(),
|
174 |
'unit_tag' =>
|
175 |
isset( $_POST['_wpcf7_unit_tag'] ) ? $_POST['_wpcf7_unit_tag'] : '',
|
176 |
'container_post_id' => isset( $_POST['_wpcf7_container_post'] )
|
modules/akismet.php
CHANGED
@@ -15,7 +15,9 @@ function wpcf7_akismet( $spam ) {
|
|
15 |
return false;
|
16 |
}
|
17 |
|
18 |
-
|
|
|
|
|
19 |
return false;
|
20 |
}
|
21 |
|
@@ -32,9 +34,8 @@ function wpcf7_akismet( $spam ) {
|
|
32 |
$c['user_ip'] = $_SERVER['REMOTE_ADDR'];
|
33 |
$c['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
|
34 |
$c['referrer'] = $_SERVER['HTTP_REFERER'];
|
35 |
-
|
36 |
-
// http://blog.akismet.com/2012/06/19/pro-tip-tell-us-your-comment_type/
|
37 |
$c['comment_type'] = 'contact-form';
|
|
|
38 |
|
39 |
if ( $permalink = get_permalink() ) {
|
40 |
$c['permalink'] = $permalink;
|
@@ -51,8 +52,6 @@ function wpcf7_akismet( $spam ) {
|
|
51 |
if ( wpcf7_akismet_comment_check( $c ) ) {
|
52 |
$spam = true;
|
53 |
|
54 |
-
$submission = WPCF7_Submission::get_instance();
|
55 |
-
|
56 |
$submission->add_spam_log( array(
|
57 |
'agent' => 'akismet',
|
58 |
'reason' => __( "Akismet returns a spam response.", 'contact-form-7' ),
|
15 |
return false;
|
16 |
}
|
17 |
|
18 |
+
$submission = WPCF7_Submission::get_instance();
|
19 |
+
|
20 |
+
if ( ! $submission or ! $params = wpcf7_akismet_submitted_params() ) {
|
21 |
return false;
|
22 |
}
|
23 |
|
34 |
$c['user_ip'] = $_SERVER['REMOTE_ADDR'];
|
35 |
$c['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
|
36 |
$c['referrer'] = $_SERVER['HTTP_REFERER'];
|
|
|
|
|
37 |
$c['comment_type'] = 'contact-form';
|
38 |
+
$c['comment_date_gmt'] = $submission->get_meta( 'timestamp' );
|
39 |
|
40 |
if ( $permalink = get_permalink() ) {
|
41 |
$c['permalink'] = $permalink;
|
52 |
if ( wpcf7_akismet_comment_check( $c ) ) {
|
53 |
$spam = true;
|
54 |
|
|
|
|
|
55 |
$submission->add_spam_log( array(
|
56 |
'agent' => 'akismet',
|
57 |
'reason' => __( "Akismet returns a spam response.", 'contact-form-7' ),
|
modules/checkbox.php
CHANGED
@@ -112,11 +112,13 @@ function wpcf7_checkbox_form_tag_handler( $tag ) {
|
|
112 |
if ( $label_first ) { // put label first, input last
|
113 |
$item = sprintf(
|
114 |
'<span class="wpcf7-list-item-label">%1$s</span><input %2$s />',
|
115 |
-
esc_html( $label ), $item_atts
|
|
|
116 |
} else {
|
117 |
$item = sprintf(
|
118 |
'<input %2$s /><span class="wpcf7-list-item-label">%1$s</span>',
|
119 |
-
esc_html( $label ), $item_atts
|
|
|
120 |
}
|
121 |
|
122 |
if ( $use_label_element ) {
|
@@ -140,7 +142,8 @@ function wpcf7_checkbox_form_tag_handler( $tag ) {
|
|
140 |
|
141 |
if ( $free_text ) {
|
142 |
$free_text_name = sprintf(
|
143 |
-
'_wpcf7_%1$s_free_text_%2$s', $tag->basetype, $tag->name
|
|
|
144 |
|
145 |
$free_text_atts = array(
|
146 |
'name' => $free_text_name,
|
@@ -170,7 +173,8 @@ function wpcf7_checkbox_form_tag_handler( $tag ) {
|
|
170 |
|
171 |
$html = sprintf(
|
172 |
'<span class="wpcf7-form-control-wrap %1$s"><span %2$s>%3$s</span>%4$s</span>',
|
173 |
-
sanitize_html_class( $tag->name ), $atts, $html, $validation_error
|
|
|
174 |
|
175 |
return $html;
|
176 |
}
|
112 |
if ( $label_first ) { // put label first, input last
|
113 |
$item = sprintf(
|
114 |
'<span class="wpcf7-list-item-label">%1$s</span><input %2$s />',
|
115 |
+
esc_html( $label ), $item_atts
|
116 |
+
);
|
117 |
} else {
|
118 |
$item = sprintf(
|
119 |
'<input %2$s /><span class="wpcf7-list-item-label">%1$s</span>',
|
120 |
+
esc_html( $label ), $item_atts
|
121 |
+
);
|
122 |
}
|
123 |
|
124 |
if ( $use_label_element ) {
|
142 |
|
143 |
if ( $free_text ) {
|
144 |
$free_text_name = sprintf(
|
145 |
+
'_wpcf7_%1$s_free_text_%2$s', $tag->basetype, $tag->name
|
146 |
+
);
|
147 |
|
148 |
$free_text_atts = array(
|
149 |
'name' => $free_text_name,
|
173 |
|
174 |
$html = sprintf(
|
175 |
'<span class="wpcf7-form-control-wrap %1$s"><span %2$s>%3$s</span>%4$s</span>',
|
176 |
+
sanitize_html_class( $tag->name ), $atts, $html, $validation_error
|
177 |
+
);
|
178 |
|
179 |
return $html;
|
180 |
}
|
modules/constant-contact.php
CHANGED
@@ -316,7 +316,10 @@ class WPCF7_ConstantContact extends WPCF7_Service_OAuth2 {
|
|
316 |
|
317 |
public function email_exists( $email ) {
|
318 |
$endpoint = add_query_arg(
|
319 |
-
array(
|
|
|
|
|
|
|
320 |
'https://api.cc.email/v3/contacts'
|
321 |
);
|
322 |
|
@@ -884,9 +887,10 @@ class WPCF7_ConstantContact_ContactPostRequest {
|
|
884 |
public function add_phone_number( $phone_number, $kind = 'home' ) {
|
885 |
$phone_number = trim( $phone_number );
|
886 |
|
887 |
-
if (
|
888 |
or ! wpcf7_is_tel( $phone_number )
|
889 |
or 25 < $this->strlen( $phone_number )
|
|
|
890 |
or ! in_array( $kind, array( 'home', 'work', 'other' ) ) ) {
|
891 |
return false;
|
892 |
}
|
316 |
|
317 |
public function email_exists( $email ) {
|
318 |
$endpoint = add_query_arg(
|
319 |
+
array(
|
320 |
+
'email' => $email,
|
321 |
+
'status' => 'all',
|
322 |
+
),
|
323 |
'https://api.cc.email/v3/contacts'
|
324 |
);
|
325 |
|
887 |
public function add_phone_number( $phone_number, $kind = 'home' ) {
|
888 |
$phone_number = trim( $phone_number );
|
889 |
|
890 |
+
if ( empty( $phone_number )
|
891 |
or ! wpcf7_is_tel( $phone_number )
|
892 |
or 25 < $this->strlen( $phone_number )
|
893 |
+
or 2 <= count( $this->phone_numbers )
|
894 |
or ! in_array( $kind, array( 'home', 'work', 'other' ) ) ) {
|
895 |
return false;
|
896 |
}
|
modules/date.php
CHANGED
@@ -10,7 +10,11 @@ add_action( 'wpcf7_init', 'wpcf7_add_form_tag_date', 10, 0 );
|
|
10 |
|
11 |
function wpcf7_add_form_tag_date() {
|
12 |
wpcf7_add_form_tag( array( 'date', 'date*' ),
|
13 |
-
'wpcf7_date_form_tag_handler',
|
|
|
|
|
|
|
|
|
14 |
}
|
15 |
|
16 |
function wpcf7_date_form_tag_handler( $tag ) {
|
@@ -73,7 +77,8 @@ function wpcf7_date_form_tag_handler( $tag ) {
|
|
73 |
|
74 |
$html = sprintf(
|
75 |
'<span class="wpcf7-form-control-wrap %1$s"><input %2$s />%3$s</span>',
|
76 |
-
sanitize_html_class( $tag->name ), $atts, $validation_error
|
|
|
77 |
|
78 |
return $html;
|
79 |
}
|
@@ -94,13 +99,13 @@ function wpcf7_date_validation_filter( $result, $tag ) {
|
|
94 |
? trim( strtr( (string) $_POST[$name], "\n", " " ) )
|
95 |
: '';
|
96 |
|
97 |
-
if ( $tag->is_required() and ''
|
98 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) );
|
99 |
-
} elseif ( ''
|
100 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_date' ) );
|
101 |
-
} elseif ( ''
|
102 |
$result->invalidate( $tag, wpcf7_get_message( 'date_too_early' ) );
|
103 |
-
} elseif ( ''
|
104 |
$result->invalidate( $tag, wpcf7_get_message( 'date_too_late' ) );
|
105 |
}
|
106 |
|
@@ -116,17 +121,17 @@ function wpcf7_date_messages( $messages ) {
|
|
116 |
return array_merge( $messages, array(
|
117 |
'invalid_date' => array(
|
118 |
'description' => __( "Date format that the sender entered is invalid", 'contact-form-7' ),
|
119 |
-
'default' => __( "The date format is incorrect.", 'contact-form-7' )
|
120 |
),
|
121 |
|
122 |
'date_too_early' => array(
|
123 |
'description' => __( "Date is earlier than minimum limit", 'contact-form-7' ),
|
124 |
-
'default' => __( "The date is before the earliest one allowed.", 'contact-form-7' )
|
125 |
),
|
126 |
|
127 |
'date_too_late' => array(
|
128 |
'description' => __( "Date is later than maximum limit", 'contact-form-7' ),
|
129 |
-
'default' => __( "The date is after the latest one allowed.", 'contact-form-7' )
|
130 |
),
|
131 |
) );
|
132 |
}
|
10 |
|
11 |
function wpcf7_add_form_tag_date() {
|
12 |
wpcf7_add_form_tag( array( 'date', 'date*' ),
|
13 |
+
'wpcf7_date_form_tag_handler',
|
14 |
+
array(
|
15 |
+
'name-attr' => true,
|
16 |
+
)
|
17 |
+
);
|
18 |
}
|
19 |
|
20 |
function wpcf7_date_form_tag_handler( $tag ) {
|
77 |
|
78 |
$html = sprintf(
|
79 |
'<span class="wpcf7-form-control-wrap %1$s"><input %2$s />%3$s</span>',
|
80 |
+
sanitize_html_class( $tag->name ), $atts, $validation_error
|
81 |
+
);
|
82 |
|
83 |
return $html;
|
84 |
}
|
99 |
? trim( strtr( (string) $_POST[$name], "\n", " " ) )
|
100 |
: '';
|
101 |
|
102 |
+
if ( $tag->is_required() and '' === $value ) {
|
103 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) );
|
104 |
+
} elseif ( '' !== $value and ! wpcf7_is_date( $value ) ) {
|
105 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_date' ) );
|
106 |
+
} elseif ( '' !== $value and ! empty( $min ) and $value < $min ) {
|
107 |
$result->invalidate( $tag, wpcf7_get_message( 'date_too_early' ) );
|
108 |
+
} elseif ( '' !== $value and ! empty( $max ) and $max < $value ) {
|
109 |
$result->invalidate( $tag, wpcf7_get_message( 'date_too_late' ) );
|
110 |
}
|
111 |
|
121 |
return array_merge( $messages, array(
|
122 |
'invalid_date' => array(
|
123 |
'description' => __( "Date format that the sender entered is invalid", 'contact-form-7' ),
|
124 |
+
'default' => __( "The date format is incorrect.", 'contact-form-7' ),
|
125 |
),
|
126 |
|
127 |
'date_too_early' => array(
|
128 |
'description' => __( "Date is earlier than minimum limit", 'contact-form-7' ),
|
129 |
+
'default' => __( "The date is before the earliest one allowed.", 'contact-form-7' ),
|
130 |
),
|
131 |
|
132 |
'date_too_late' => array(
|
133 |
'description' => __( "Date is later than maximum limit", 'contact-form-7' ),
|
134 |
+
'default' => __( "The date is after the latest one allowed.", 'contact-form-7' ),
|
135 |
),
|
136 |
) );
|
137 |
}
|
modules/file.php
CHANGED
@@ -9,7 +9,11 @@ add_action( 'wpcf7_init', 'wpcf7_add_form_tag_file', 10, 0 );
|
|
9 |
|
10 |
function wpcf7_add_form_tag_file() {
|
11 |
wpcf7_add_form_tag( array( 'file', 'file*' ),
|
12 |
-
'wpcf7_file_form_tag_handler',
|
|
|
|
|
|
|
|
|
13 |
}
|
14 |
|
15 |
function wpcf7_file_form_tag_handler( $tag ) {
|
@@ -48,7 +52,8 @@ function wpcf7_file_form_tag_handler( $tag ) {
|
|
48 |
|
49 |
$html = sprintf(
|
50 |
'<span class="wpcf7-form-control-wrap %1$s"><input %2$s />%3$s</span>',
|
51 |
-
sanitize_html_class( $tag->name ), $atts, $validation_error
|
|
|
52 |
|
53 |
return $html;
|
54 |
}
|
@@ -60,7 +65,8 @@ add_filter( 'wpcf7_form_enctype', 'wpcf7_file_form_enctype_filter', 10, 1 );
|
|
60 |
|
61 |
function wpcf7_file_form_enctype_filter( $enctype ) {
|
62 |
$multipart = (bool) wpcf7_scan_form_tags(
|
63 |
-
array( 'type' => array( 'file', 'file*' ) )
|
|
|
64 |
|
65 |
if ( $multipart ) {
|
66 |
$enctype = 'multipart/form-data';
|
@@ -81,7 +87,7 @@ function wpcf7_file_validation_filter( $result, $tag ) {
|
|
81 |
|
82 |
$file = isset( $_FILES[$name] ) ? $_FILES[$name] : null;
|
83 |
|
84 |
-
if ( $file['error'] and UPLOAD_ERR_NO_FILE
|
85 |
$result->invalidate( $tag, wpcf7_get_message( 'upload_failed_php_error' ) );
|
86 |
return $result;
|
87 |
}
|
9 |
|
10 |
function wpcf7_add_form_tag_file() {
|
11 |
wpcf7_add_form_tag( array( 'file', 'file*' ),
|
12 |
+
'wpcf7_file_form_tag_handler',
|
13 |
+
array(
|
14 |
+
'name-attr' => true,
|
15 |
+
)
|
16 |
+
);
|
17 |
}
|
18 |
|
19 |
function wpcf7_file_form_tag_handler( $tag ) {
|
52 |
|
53 |
$html = sprintf(
|
54 |
'<span class="wpcf7-form-control-wrap %1$s"><input %2$s />%3$s</span>',
|
55 |
+
sanitize_html_class( $tag->name ), $atts, $validation_error
|
56 |
+
);
|
57 |
|
58 |
return $html;
|
59 |
}
|
65 |
|
66 |
function wpcf7_file_form_enctype_filter( $enctype ) {
|
67 |
$multipart = (bool) wpcf7_scan_form_tags(
|
68 |
+
array( 'type' => array( 'file', 'file*' ) )
|
69 |
+
);
|
70 |
|
71 |
if ( $multipart ) {
|
72 |
$enctype = 'multipart/form-data';
|
87 |
|
88 |
$file = isset( $_FILES[$name] ) ? $_FILES[$name] : null;
|
89 |
|
90 |
+
if ( $file['error'] and UPLOAD_ERR_NO_FILE !== $file['error'] ) {
|
91 |
$result->invalidate( $tag, wpcf7_get_message( 'upload_failed_php_error' ) );
|
92 |
return $result;
|
93 |
}
|
modules/flamingo.php
CHANGED
@@ -63,11 +63,21 @@ function wpcf7_flamingo_submit( $contact_form, $result ) {
|
|
63 |
'user_agent', 'url', 'date', 'time', 'post_id', 'post_name',
|
64 |
'post_title', 'post_url', 'post_author', 'post_author_email',
|
65 |
'site_title', 'site_description', 'site_url', 'site_admin_email',
|
66 |
-
'user_login', 'user_email', 'user_display_name'
|
|
|
67 |
|
68 |
foreach ( $special_mail_tags as $smt ) {
|
69 |
-
$
|
70 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
}
|
72 |
|
73 |
$akismet = isset( $submission->akismet )
|
63 |
'user_agent', 'url', 'date', 'time', 'post_id', 'post_name',
|
64 |
'post_title', 'post_url', 'post_author', 'post_author_email',
|
65 |
'site_title', 'site_description', 'site_url', 'site_admin_email',
|
66 |
+
'user_login', 'user_email', 'user_display_name',
|
67 |
+
);
|
68 |
|
69 |
foreach ( $special_mail_tags as $smt ) {
|
70 |
+
$tagname = sprintf( '_%s', $smt );
|
71 |
+
|
72 |
+
$mail_tag = new WPCF7_MailTag(
|
73 |
+
sprintf( '[%s]', $tagname ),
|
74 |
+
$tagname,
|
75 |
+
''
|
76 |
+
);
|
77 |
+
|
78 |
+
$meta[$smt] = apply_filters( 'wpcf7_special_mail_tags', null,
|
79 |
+
$tagname, false, $mail_tag
|
80 |
+
);
|
81 |
}
|
82 |
|
83 |
$akismet = isset( $submission->akismet )
|
modules/number.php
CHANGED
@@ -11,7 +11,11 @@ add_action( 'wpcf7_init', 'wpcf7_add_form_tag_number', 10, 0 );
|
|
11 |
|
12 |
function wpcf7_add_form_tag_number() {
|
13 |
wpcf7_add_form_tag( array( 'number', 'number*', 'range', 'range*' ),
|
14 |
-
'wpcf7_number_form_tag_handler',
|
|
|
|
|
|
|
|
|
15 |
}
|
16 |
|
17 |
function wpcf7_number_form_tag_handler( $tag ) {
|
@@ -74,7 +78,8 @@ function wpcf7_number_form_tag_handler( $tag ) {
|
|
74 |
|
75 |
$html = sprintf(
|
76 |
'<span class="wpcf7-form-control-wrap %1$s"><input %2$s />%3$s</span>',
|
77 |
-
sanitize_html_class( $tag->name ), $atts, $validation_error
|
|
|
78 |
|
79 |
return $html;
|
80 |
}
|
@@ -97,13 +102,13 @@ function wpcf7_number_validation_filter( $result, $tag ) {
|
|
97 |
$min = $tag->get_option( 'min', 'signed_int', true );
|
98 |
$max = $tag->get_option( 'max', 'signed_int', true );
|
99 |
|
100 |
-
if ( $tag->is_required() and ''
|
101 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) );
|
102 |
-
} elseif ( ''
|
103 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_number' ) );
|
104 |
-
} elseif ( ''
|
105 |
$result->invalidate( $tag, wpcf7_get_message( 'number_too_small' ) );
|
106 |
-
} elseif ( ''
|
107 |
$result->invalidate( $tag, wpcf7_get_message( 'number_too_large' ) );
|
108 |
}
|
109 |
|
11 |
|
12 |
function wpcf7_add_form_tag_number() {
|
13 |
wpcf7_add_form_tag( array( 'number', 'number*', 'range', 'range*' ),
|
14 |
+
'wpcf7_number_form_tag_handler',
|
15 |
+
array(
|
16 |
+
'name-attr' => true,
|
17 |
+
)
|
18 |
+
);
|
19 |
}
|
20 |
|
21 |
function wpcf7_number_form_tag_handler( $tag ) {
|
78 |
|
79 |
$html = sprintf(
|
80 |
'<span class="wpcf7-form-control-wrap %1$s"><input %2$s />%3$s</span>',
|
81 |
+
sanitize_html_class( $tag->name ), $atts, $validation_error
|
82 |
+
);
|
83 |
|
84 |
return $html;
|
85 |
}
|
102 |
$min = $tag->get_option( 'min', 'signed_int', true );
|
103 |
$max = $tag->get_option( 'max', 'signed_int', true );
|
104 |
|
105 |
+
if ( $tag->is_required() and '' === $value ) {
|
106 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) );
|
107 |
+
} elseif ( '' !== $value and ! wpcf7_is_number( $value ) ) {
|
108 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_number' ) );
|
109 |
+
} elseif ( '' !== $value and '' !== $min and (float) $value < (float) $min ) {
|
110 |
$result->invalidate( $tag, wpcf7_get_message( 'number_too_small' ) );
|
111 |
+
} elseif ( '' !== $value and '' !== $max and (float) $max < (float) $value ) {
|
112 |
$result->invalidate( $tag, wpcf7_get_message( 'number_too_large' ) );
|
113 |
}
|
114 |
|
modules/quiz.php
CHANGED
@@ -73,7 +73,8 @@ function wpcf7_quiz_form_tag_handler( $tag ) {
|
|
73 |
'<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>',
|
74 |
sanitize_html_class( $tag->name ),
|
75 |
esc_html( $question ), $atts, $tag->name,
|
76 |
-
wp_hash( $answer, 'wpcf7_quiz' ), $validation_error
|
|
|
77 |
|
78 |
return $html;
|
79 |
}
|
@@ -95,7 +96,7 @@ function wpcf7_quiz_validation_filter( $result, $tag ) {
|
|
95 |
? (string) $_POST['_wpcf7_quiz_answer_' . $name]
|
96 |
: '';
|
97 |
|
98 |
-
if ( $answer_hash
|
99 |
$result->invalidate( $tag, wpcf7_get_message( 'quiz_answer_not_correct' ) );
|
100 |
}
|
101 |
|
73 |
'<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>',
|
74 |
sanitize_html_class( $tag->name ),
|
75 |
esc_html( $question ), $atts, $tag->name,
|
76 |
+
wp_hash( $answer, 'wpcf7_quiz' ), $validation_error
|
77 |
+
);
|
78 |
|
79 |
return $html;
|
80 |
}
|
96 |
? (string) $_POST['_wpcf7_quiz_answer_' . $name]
|
97 |
: '';
|
98 |
|
99 |
+
if ( $answer_hash !== $expected_hash ) {
|
100 |
$result->invalidate( $tag, wpcf7_get_message( 'quiz_answer_not_correct' ) );
|
101 |
}
|
102 |
|
modules/really-simple-captcha.php
CHANGED
@@ -83,7 +83,8 @@ function wpcf7_captchac_form_tag_handler( $tag ) {
|
|
83 |
|
84 |
$html = sprintf(
|
85 |
'<input type="hidden" name="_wpcf7_captcha_challenge_%1$s" value="%2$s" /><img %3$s />',
|
86 |
-
$tag->name, esc_attr( $prefix ), $atts
|
|
|
87 |
|
88 |
return $html;
|
89 |
}
|
@@ -138,7 +139,8 @@ function wpcf7_captchar_form_tag_handler( $tag ) {
|
|
138 |
|
139 |
$html = sprintf(
|
140 |
'<span class="wpcf7-form-control-wrap %1$s"><input %2$s />%3$s</span>',
|
141 |
-
sanitize_html_class( $tag->name ), $atts, $validation_error
|
|
|
142 |
|
143 |
return $html;
|
144 |
}
|
@@ -159,12 +161,12 @@ function wpcf7_captcha_validation_filter( $result, $tag ) {
|
|
159 |
$response = isset( $_POST[$name] ) ? (string) $_POST[$name] : '';
|
160 |
$response = wpcf7_canonicalize( $response );
|
161 |
|
162 |
-
if ( 0
|
163 |
or ! wpcf7_check_captcha( $prefix, $response ) ) {
|
164 |
$result->invalidate( $tag, wpcf7_get_message( 'captcha_not_match' ) );
|
165 |
}
|
166 |
|
167 |
-
if ( 0
|
168 |
wpcf7_remove_captcha( $prefix );
|
169 |
}
|
170 |
|
83 |
|
84 |
$html = sprintf(
|
85 |
'<input type="hidden" name="_wpcf7_captcha_challenge_%1$s" value="%2$s" /><img %3$s />',
|
86 |
+
$tag->name, esc_attr( $prefix ), $atts
|
87 |
+
);
|
88 |
|
89 |
return $html;
|
90 |
}
|
139 |
|
140 |
$html = sprintf(
|
141 |
'<span class="wpcf7-form-control-wrap %1$s"><input %2$s />%3$s</span>',
|
142 |
+
sanitize_html_class( $tag->name ), $atts, $validation_error
|
143 |
+
);
|
144 |
|
145 |
return $html;
|
146 |
}
|
161 |
$response = isset( $_POST[$name] ) ? (string) $_POST[$name] : '';
|
162 |
$response = wpcf7_canonicalize( $response );
|
163 |
|
164 |
+
if ( 0 === strlen( $prefix )
|
165 |
or ! wpcf7_check_captcha( $prefix, $response ) ) {
|
166 |
$result->invalidate( $tag, wpcf7_get_message( 'captcha_not_match' ) );
|
167 |
}
|
168 |
|
169 |
+
if ( 0 !== strlen( $prefix ) ) {
|
170 |
wpcf7_remove_captcha( $prefix );
|
171 |
}
|
172 |
|
modules/recaptcha.php
CHANGED
@@ -70,56 +70,63 @@ function wpcf7_recaptcha_onload_script() {
|
|
70 |
|
71 |
?>
|
72 |
<script type="text/javascript">
|
73 |
-
( function(
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
}
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
|
|
|
|
|
|
|
|
|
|
102 |
|
103 |
-
|
104 |
-
wpcf7recaptcha.
|
105 |
-
|
106 |
|
107 |
-
|
|
|
|
|
108 |
|
109 |
-
|
110 |
-
wpcf7recaptcha.executeOnHomepage
|
111 |
-
);
|
112 |
|
113 |
-
document.addEventListener( '
|
114 |
-
|
115 |
-
|
|
|
116 |
|
117 |
-
|
118 |
-
|
119 |
-
|
|
|
|
|
120 |
|
121 |
} )(
|
122 |
-
grecaptcha,
|
123 |
'<?php echo esc_js( $service->get_sitekey() ); ?>',
|
124 |
<?php echo json_encode( $actions ), "\n"; ?>
|
125 |
);
|
@@ -194,7 +201,7 @@ function wpcf7_upgrade_recaptcha_v2_v3( $new_ver, $old_ver ) {
|
|
194 |
|
195 |
$service = WPCF7_RECAPTCHA::get_instance();
|
196 |
|
197 |
-
if ( ! $service->is_active() ) {
|
198 |
return;
|
199 |
}
|
200 |
|
@@ -419,7 +426,7 @@ class WPCF7_RECAPTCHA extends WPCF7_Service {
|
|
419 |
$url = menu_page_url( 'wpcf7-integration', false );
|
420 |
$url = add_query_arg( array( 'service' => 'recaptcha' ), $url );
|
421 |
|
422 |
-
if ( ! empty( $args) ) {
|
423 |
$url = add_query_arg( $args, $url );
|
424 |
}
|
425 |
|
70 |
|
71 |
?>
|
72 |
<script type="text/javascript">
|
73 |
+
( function( sitekey, actions ) {
|
74 |
+
|
75 |
+
document.addEventListener( 'DOMContentLoaded', function( event ) {
|
76 |
+
var wpcf7recaptcha = {
|
77 |
+
|
78 |
+
execute: function( action ) {
|
79 |
+
grecaptcha.execute(
|
80 |
+
sitekey,
|
81 |
+
{ action: action }
|
82 |
+
).then( function( token ) {
|
83 |
+
var event = new CustomEvent( 'wpcf7grecaptchaexecuted', {
|
84 |
+
detail: {
|
85 |
+
action: action,
|
86 |
+
token: token,
|
87 |
+
},
|
88 |
+
} );
|
89 |
+
|
90 |
+
document.dispatchEvent( event );
|
91 |
+
} );
|
92 |
+
},
|
93 |
+
|
94 |
+
executeOnHomepage: function() {
|
95 |
+
wpcf7recaptcha.execute( actions[ 'homepage' ] );
|
96 |
+
},
|
97 |
+
|
98 |
+
executeOnContactform: function() {
|
99 |
+
wpcf7recaptcha.execute( actions[ 'contactform' ] );
|
100 |
+
},
|
101 |
+
|
102 |
+
};
|
103 |
+
|
104 |
+
grecaptcha.ready(
|
105 |
+
wpcf7recaptcha.executeOnHomepage
|
106 |
+
);
|
107 |
|
108 |
+
document.addEventListener( 'change',
|
109 |
+
wpcf7recaptcha.executeOnContactform, false
|
110 |
+
);
|
111 |
|
112 |
+
document.addEventListener( 'wpcf7submit',
|
113 |
+
wpcf7recaptcha.executeOnHomepage, false
|
114 |
+
);
|
115 |
|
116 |
+
} );
|
|
|
|
|
117 |
|
118 |
+
document.addEventListener( 'wpcf7grecaptchaexecuted', function( event ) {
|
119 |
+
var fields = document.querySelectorAll(
|
120 |
+
"form.wpcf7-form input[name='g-recaptcha-response']"
|
121 |
+
);
|
122 |
|
123 |
+
for ( var i = 0; i < fields.length; i++ ) {
|
124 |
+
var field = fields[ i ];
|
125 |
+
field.setAttribute( 'value', event.detail.token );
|
126 |
+
}
|
127 |
+
} );
|
128 |
|
129 |
} )(
|
|
|
130 |
'<?php echo esc_js( $service->get_sitekey() ); ?>',
|
131 |
<?php echo json_encode( $actions ), "\n"; ?>
|
132 |
);
|
201 |
|
202 |
$service = WPCF7_RECAPTCHA::get_instance();
|
203 |
|
204 |
+
if ( ! $service->is_active() or $service->get_global_sitekey() ) {
|
205 |
return;
|
206 |
}
|
207 |
|
426 |
$url = menu_page_url( 'wpcf7-integration', false );
|
427 |
$url = add_query_arg( array( 'service' => 'recaptcha' ), $url );
|
428 |
|
429 |
+
if ( ! empty( $args ) ) {
|
430 |
$url = add_query_arg( $args, $url );
|
431 |
}
|
432 |
|
modules/response.php
CHANGED
@@ -8,8 +8,12 @@
|
|
8 |
add_action( 'wpcf7_init', 'wpcf7_add_form_tag_response', 10, 0 );
|
9 |
|
10 |
function wpcf7_add_form_tag_response() {
|
11 |
-
wpcf7_add_form_tag( 'response',
|
12 |
-
|
|
|
|
|
|
|
|
|
13 |
}
|
14 |
|
15 |
function wpcf7_response_form_tag_handler( $tag ) {
|
8 |
add_action( 'wpcf7_init', 'wpcf7_add_form_tag_response', 10, 0 );
|
9 |
|
10 |
function wpcf7_add_form_tag_response() {
|
11 |
+
wpcf7_add_form_tag( 'response',
|
12 |
+
'wpcf7_response_form_tag_handler',
|
13 |
+
array(
|
14 |
+
'display-block' => true,
|
15 |
+
)
|
16 |
+
);
|
17 |
}
|
18 |
|
19 |
function wpcf7_response_form_tag_handler( $tag ) {
|
modules/select.php
CHANGED
@@ -112,7 +112,8 @@ function wpcf7_select_form_tag_handler( $tag ) {
|
|
112 |
|
113 |
$html = sprintf(
|
114 |
'<span class="wpcf7-form-control-wrap %1$s"><select %2$s>%3$s</select>%4$s</span>',
|
115 |
-
sanitize_html_class( $tag->name ), $atts, $html, $validation_error
|
|
|
116 |
|
117 |
return $html;
|
118 |
}
|
112 |
|
113 |
$html = sprintf(
|
114 |
'<span class="wpcf7-form-control-wrap %1$s"><select %2$s>%3$s</select>%4$s</span>',
|
115 |
+
sanitize_html_class( $tag->name ), $atts, $html, $validation_error
|
116 |
+
);
|
117 |
|
118 |
return $html;
|
119 |
}
|
modules/text.php
CHANGED
@@ -14,7 +14,11 @@ add_action( 'wpcf7_init', 'wpcf7_add_form_tag_text', 10, 0 );
|
|
14 |
function wpcf7_add_form_tag_text() {
|
15 |
wpcf7_add_form_tag(
|
16 |
array( 'text', 'text*', 'email', 'email*', 'url', 'url*', 'tel', 'tel*' ),
|
17 |
-
'wpcf7_text_form_tag_handler',
|
|
|
|
|
|
|
|
|
18 |
}
|
19 |
|
20 |
function wpcf7_text_form_tag_handler( $tag ) {
|
@@ -88,7 +92,8 @@ function wpcf7_text_form_tag_handler( $tag ) {
|
|
88 |
|
89 |
$html = sprintf(
|
90 |
'<span class="wpcf7-form-control-wrap %1$s"><input %2$s />%3$s</span>',
|
91 |
-
sanitize_html_class( $tag->name ), $atts, $validation_error
|
|
|
92 |
|
93 |
return $html;
|
94 |
}
|
@@ -113,31 +118,31 @@ function wpcf7_text_validation_filter( $result, $tag ) {
|
|
113 |
: '';
|
114 |
|
115 |
if ( 'text' == $tag->basetype ) {
|
116 |
-
if ( $tag->is_required() and ''
|
117 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) );
|
118 |
}
|
119 |
}
|
120 |
|
121 |
if ( 'email' == $tag->basetype ) {
|
122 |
-
if ( $tag->is_required() and ''
|
123 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) );
|
124 |
-
} elseif ( ''
|
125 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_email' ) );
|
126 |
}
|
127 |
}
|
128 |
|
129 |
if ( 'url' == $tag->basetype ) {
|
130 |
-
if ( $tag->is_required() and ''
|
131 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) );
|
132 |
-
} elseif ( ''
|
133 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_url' ) );
|
134 |
}
|
135 |
}
|
136 |
|
137 |
if ( 'tel' == $tag->basetype ) {
|
138 |
-
if ( $tag->is_required() and ''
|
139 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) );
|
140 |
-
} elseif ( ''
|
141 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_tel' ) );
|
142 |
}
|
143 |
}
|
14 |
function wpcf7_add_form_tag_text() {
|
15 |
wpcf7_add_form_tag(
|
16 |
array( 'text', 'text*', 'email', 'email*', 'url', 'url*', 'tel', 'tel*' ),
|
17 |
+
'wpcf7_text_form_tag_handler',
|
18 |
+
array(
|
19 |
+
'name-attr' => true,
|
20 |
+
)
|
21 |
+
);
|
22 |
}
|
23 |
|
24 |
function wpcf7_text_form_tag_handler( $tag ) {
|
92 |
|
93 |
$html = sprintf(
|
94 |
'<span class="wpcf7-form-control-wrap %1$s"><input %2$s />%3$s</span>',
|
95 |
+
sanitize_html_class( $tag->name ), $atts, $validation_error
|
96 |
+
);
|
97 |
|
98 |
return $html;
|
99 |
}
|
118 |
: '';
|
119 |
|
120 |
if ( 'text' == $tag->basetype ) {
|
121 |
+
if ( $tag->is_required() and '' === $value ) {
|
122 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) );
|
123 |
}
|
124 |
}
|
125 |
|
126 |
if ( 'email' == $tag->basetype ) {
|
127 |
+
if ( $tag->is_required() and '' === $value ) {
|
128 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) );
|
129 |
+
} elseif ( '' !== $value and ! wpcf7_is_email( $value ) ) {
|
130 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_email' ) );
|
131 |
}
|
132 |
}
|
133 |
|
134 |
if ( 'url' == $tag->basetype ) {
|
135 |
+
if ( $tag->is_required() and '' === $value ) {
|
136 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) );
|
137 |
+
} elseif ( '' !== $value and ! wpcf7_is_url( $value ) ) {
|
138 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_url' ) );
|
139 |
}
|
140 |
}
|
141 |
|
142 |
if ( 'tel' == $tag->basetype ) {
|
143 |
+
if ( $tag->is_required() and '' === $value ) {
|
144 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) );
|
145 |
+
} elseif ( '' !== $value and ! wpcf7_is_tel( $value ) ) {
|
146 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_tel' ) );
|
147 |
}
|
148 |
}
|
modules/textarea.php
CHANGED
@@ -9,7 +9,8 @@ add_action( 'wpcf7_init', 'wpcf7_add_form_tag_textarea', 10, 0 );
|
|
9 |
|
10 |
function wpcf7_add_form_tag_textarea() {
|
11 |
wpcf7_add_form_tag( array( 'textarea', 'textarea*' ),
|
12 |
-
'wpcf7_textarea_form_tag_handler', array( 'name-attr' => true )
|
|
|
13 |
}
|
14 |
|
15 |
function wpcf7_textarea_form_tag_handler( $tag ) {
|
@@ -75,7 +76,8 @@ function wpcf7_textarea_form_tag_handler( $tag ) {
|
|
75 |
$html = sprintf(
|
76 |
'<span class="wpcf7-form-control-wrap %1$s"><textarea %2$s>%3$s</textarea>%4$s</span>',
|
77 |
sanitize_html_class( $tag->name ), $atts,
|
78 |
-
esc_textarea( $value ), $validation_error
|
|
|
79 |
|
80 |
return $html;
|
81 |
}
|
@@ -94,7 +96,7 @@ function wpcf7_textarea_validation_filter( $result, $tag ) {
|
|
94 |
|
95 |
$value = isset( $_POST[$name] ) ? (string) $_POST[$name] : '';
|
96 |
|
97 |
-
if ( $tag->is_required() and ''
|
98 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) );
|
99 |
}
|
100 |
|
9 |
|
10 |
function wpcf7_add_form_tag_textarea() {
|
11 |
wpcf7_add_form_tag( array( 'textarea', 'textarea*' ),
|
12 |
+
'wpcf7_textarea_form_tag_handler', array( 'name-attr' => true )
|
13 |
+
);
|
14 |
}
|
15 |
|
16 |
function wpcf7_textarea_form_tag_handler( $tag ) {
|
76 |
$html = sprintf(
|
77 |
'<span class="wpcf7-form-control-wrap %1$s"><textarea %2$s>%3$s</textarea>%4$s</span>',
|
78 |
sanitize_html_class( $tag->name ), $atts,
|
79 |
+
esc_textarea( $value ), $validation_error
|
80 |
+
);
|
81 |
|
82 |
return $html;
|
83 |
}
|
96 |
|
97 |
$value = isset( $_POST[$name] ) ? (string) $_POST[$name] : '';
|
98 |
|
99 |
+
if ( $tag->is_required() and '' === $value ) {
|
100 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) );
|
101 |
}
|
102 |
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: https://contactform7.com/donate/
|
|
4 |
Tags: contact, form, contact form, feedback, email, ajax, captcha, akismet, multilingual
|
5 |
Requires at least: 4.9
|
6 |
Tested up to: 5.4
|
7 |
-
Stable tag: 5.1.
|
8 |
License: GPLv2 or later
|
9 |
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -75,6 +75,15 @@ Do you have questions or issues with Contact Form 7? Use these support channels
|
|
75 |
|
76 |
For more information, see [Releases](https://contactform7.com/category/releases/).
|
77 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
= 5.1.7 =
|
79 |
|
80 |
* CSS: Adds an explicit LTR direction style rule for code inputs.
|
4 |
Tags: contact, form, contact form, feedback, email, ajax, captcha, akismet, multilingual
|
5 |
Requires at least: 4.9
|
6 |
Tested up to: 5.4
|
7 |
+
Stable tag: 5.1.8
|
8 |
License: GPLv2 or later
|
9 |
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
75 |
|
76 |
For more information, see [Releases](https://contactform7.com/category/releases/).
|
77 |
|
78 |
+
= 5.1.8 =
|
79 |
+
|
80 |
+
* reCAPTCHA: Shows no warning on upgrading from v2 if the global sitekey is defined.
|
81 |
+
* reCAPTCHA: Improves the frontend JavaScript coding.
|
82 |
+
* Accessibility: Improves the response message markup.
|
83 |
+
* Fixes the regular expression pattern in `wpcf7_is_tel()`.
|
84 |
+
* Fixed: Character count was not reset after a successful submission.
|
85 |
+
* Fixed: The fourth parameter of the `wpcf7_special_mail_tags` filter hook was not correctly set.
|
86 |
+
|
87 |
= 5.1.7 =
|
88 |
|
89 |
* CSS: Adds an explicit LTR direction style rule for code inputs.
|
settings.php
CHANGED
@@ -149,7 +149,7 @@ function wpcf7_install() {
|
|
149 |
|
150 |
WPCF7::update_option( 'bulk_validate',
|
151 |
array(
|
152 |
-
'timestamp' =>
|
153 |
'version' => WPCF7_VERSION,
|
154 |
'count_valid' => 1,
|
155 |
'count_invalid' => 0,
|
149 |
|
150 |
WPCF7::update_option( 'bulk_validate',
|
151 |
array(
|
152 |
+
'timestamp' => time(),
|
153 |
'version' => WPCF7_VERSION,
|
154 |
'count_valid' => 1,
|
155 |
'count_invalid' => 0,
|
wp-contact-form-7.php
CHANGED
@@ -7,10 +7,10 @@ Author: Takayuki Miyoshi
|
|
7 |
Author URI: https://ideasilo.wordpress.com/
|
8 |
Text Domain: contact-form-7
|
9 |
Domain Path: /languages/
|
10 |
-
Version: 5.1.
|
11 |
*/
|
12 |
|
13 |
-
define( 'WPCF7_VERSION', '5.1.
|
14 |
|
15 |
define( 'WPCF7_REQUIRED_WP_VERSION', '4.9' );
|
16 |
|
7 |
Author URI: https://ideasilo.wordpress.com/
|
8 |
Text Domain: contact-form-7
|
9 |
Domain Path: /languages/
|
10 |
+
Version: 5.1.8
|
11 |
*/
|
12 |
|
13 |
+
define( 'WPCF7_VERSION', '5.1.8' );
|
14 |
|
15 |
define( 'WPCF7_REQUIRED_WP_VERSION', '4.9' );
|
16 |
|