Version Description
- Fixed: "0" input could pass the
minlength
validation. - Fixed:
exclude_blank
option was applied to all mail fields, not only to the message body. - Fixed:
wpcf7_autop()
incorrectly inserted<br />
around hidden and block-type form-tags. - Fixed: Applying
strtolower()
to uploaded file names was unnecessary and could cause troubles in a non-English environment.
Download this release
Release Info
Developer | takayukister |
Plugin | Contact Form 7 |
Version | 4.6.1 |
Comparing to | |
See all releases |
Code changes from version 4.6 to 4.6.1
- includes/formatting.php +18 -4
- includes/mail.php +16 -11
- license.txt +1 -1
- modules/file.php +8 -5
- modules/text.php +1 -1
- modules/textarea.php +1 -1
- readme.txt +9 -20
- wp-contact-form-7.php +2 -2
includes/formatting.php
CHANGED
@@ -54,11 +54,20 @@ function wpcf7_autop( $pee, $br = 1 ) {
|
|
54 |
$pee = preg_replace_callback( '/<(script|style|textarea).*?<\/\\1>/s', create_function( '$matches', 'return str_replace("\n", "<WPPreserveNewline />", $matches[0]);' ), $pee );
|
55 |
$pee = preg_replace( '|(?<!<br />)\s*\n|', "<br />\n", $pee ); // optionally make line breaks
|
56 |
$pee = str_replace( '<WPPreserveNewline />', "\n", $pee );
|
|
|
|
|
|
|
|
|
57 |
}
|
|
|
58 |
$pee = preg_replace( '!(</?' . $allblocks . '[^>]*>)\s*<br />!', "$1", $pee );
|
59 |
$pee = preg_replace( '!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $pee );
|
60 |
-
|
61 |
-
|
|
|
|
|
|
|
|
|
62 |
$pee = preg_replace( "|\n</p>$|", '</p>', $pee );
|
63 |
|
64 |
return $pee;
|
@@ -142,13 +151,18 @@ function wpcf7_strip_newline( $str ) {
|
|
142 |
return trim( $str );
|
143 |
}
|
144 |
|
145 |
-
function wpcf7_canonicalize( $text ) {
|
146 |
if ( function_exists( 'mb_convert_kana' )
|
147 |
&& 'UTF-8' == get_option( 'blog_charset' ) ) {
|
148 |
$text = mb_convert_kana( $text, 'asKV', 'UTF-8' );
|
149 |
}
|
150 |
|
151 |
-
|
|
|
|
|
|
|
|
|
|
|
152 |
$text = trim( $text );
|
153 |
return $text;
|
154 |
}
|
54 |
$pee = preg_replace_callback( '/<(script|style|textarea).*?<\/\\1>/s', create_function( '$matches', 'return str_replace("\n", "<WPPreserveNewline />", $matches[0]);' ), $pee );
|
55 |
$pee = preg_replace( '|(?<!<br />)\s*\n|', "<br />\n", $pee ); // optionally make line breaks
|
56 |
$pee = str_replace( '<WPPreserveNewline />', "\n", $pee );
|
57 |
+
|
58 |
+
/* wpcf7: remove extra <br /> just added before [response], [recaptcha], and [hidden] tags */
|
59 |
+
$pee = preg_replace( '!<br />\n(\[' . $block_hidden_form_tags . '[^]]*\])!',
|
60 |
+
"\n$1", $pee );
|
61 |
}
|
62 |
+
|
63 |
$pee = preg_replace( '!(</?' . $allblocks . '[^>]*>)\s*<br />!', "$1", $pee );
|
64 |
$pee = preg_replace( '!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $pee );
|
65 |
+
|
66 |
+
if ( strpos( $pee, '<pre' ) !== false ) {
|
67 |
+
$pee = preg_replace_callback( '!(<pre[^>]*>)(.*?)</pre>!is',
|
68 |
+
'clean_pre', $pee );
|
69 |
+
}
|
70 |
+
|
71 |
$pee = preg_replace( "|\n</p>$|", '</p>', $pee );
|
72 |
|
73 |
return $pee;
|
151 |
return trim( $str );
|
152 |
}
|
153 |
|
154 |
+
function wpcf7_canonicalize( $text, $strto = 'lower' ) {
|
155 |
if ( function_exists( 'mb_convert_kana' )
|
156 |
&& 'UTF-8' == get_option( 'blog_charset' ) ) {
|
157 |
$text = mb_convert_kana( $text, 'asKV', 'UTF-8' );
|
158 |
}
|
159 |
|
160 |
+
if ( 'lower' == $strto ) {
|
161 |
+
$text = strtolower( $text );
|
162 |
+
} elseif ( 'upper' == $strto ) {
|
163 |
+
$text = strtoupper( $text );
|
164 |
+
}
|
165 |
+
|
166 |
$text = trim( $text );
|
167 |
return $text;
|
168 |
}
|
includes/mail.php
CHANGED
@@ -35,18 +35,19 @@ class WPCF7_Mail {
|
|
35 |
|
36 |
public function get( $component, $replace_tags = false ) {
|
37 |
$use_html = ( $this->use_html && 'body' == $component );
|
|
|
|
|
38 |
$template = $this->template;
|
39 |
$component = isset( $template[$component] ) ? $template[$component] : '';
|
40 |
|
41 |
if ( $replace_tags ) {
|
42 |
-
|
43 |
-
|
|
|
44 |
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
} else {
|
49 |
-
$component = $this->replace_tags( $component );
|
50 |
}
|
51 |
}
|
52 |
|
@@ -110,10 +111,14 @@ class WPCF7_Mail {
|
|
110 |
return wp_mail( $recipient, $subject, $body, $headers, $attachments );
|
111 |
}
|
112 |
|
113 |
-
public function replace_tags( $content, $
|
114 |
-
$args
|
115 |
-
'html' =>
|
116 |
-
|
|
|
|
|
|
|
|
|
117 |
|
118 |
return wpcf7_mail_replace_tags( $content, $args );
|
119 |
}
|
35 |
|
36 |
public function get( $component, $replace_tags = false ) {
|
37 |
$use_html = ( $this->use_html && 'body' == $component );
|
38 |
+
$exclude_blank = ( $this->exclude_blank && 'body' == $component );
|
39 |
+
|
40 |
$template = $this->template;
|
41 |
$component = isset( $template[$component] ) ? $template[$component] : '';
|
42 |
|
43 |
if ( $replace_tags ) {
|
44 |
+
$component = $this->replace_tags( $component, array(
|
45 |
+
'html' => $use_html,
|
46 |
+
'exclude_blank' => $exclude_blank ) );
|
47 |
|
48 |
+
if ( $use_html
|
49 |
+
&& ! preg_match( '%<html[>\s].*</html>%is', $component ) ) {
|
50 |
+
$component = $this->htmlize( $component );
|
|
|
|
|
51 |
}
|
52 |
}
|
53 |
|
111 |
return wp_mail( $recipient, $subject, $body, $headers, $attachments );
|
112 |
}
|
113 |
|
114 |
+
public function replace_tags( $content, $args = '' ) {
|
115 |
+
if ( true === $args ) {
|
116 |
+
$args = array( 'html' => true );
|
117 |
+
}
|
118 |
+
|
119 |
+
$args = wp_parse_args( $args, array(
|
120 |
+
'html' => false,
|
121 |
+
'exclude_blank' => false ) );
|
122 |
|
123 |
return wpcf7_mail_replace_tags( $content, $args );
|
124 |
}
|
license.txt
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
Contact Form 7 WordPress Plugin, 2007-
|
2 |
Contact Form 7 is distributed under the terms of the GNU GPL
|
3 |
|
4 |
This program is free software; you can redistribute it and/or modify
|
1 |
+
Contact Form 7 WordPress Plugin, 2007-2017 Takayuki Miyoshi
|
2 |
Contact Form 7 is distributed under the terms of the GNU GPL
|
3 |
|
4 |
This program is free software; you can redistribute it and/or modify
|
modules/file.php
CHANGED
@@ -91,8 +91,9 @@ function wpcf7_file_validation_filter( $result, $tag ) {
|
|
91 |
return $result;
|
92 |
}
|
93 |
|
94 |
-
if ( ! is_uploaded_file( $file['tmp_name'] ) )
|
95 |
return $result;
|
|
|
96 |
|
97 |
$allowed_file_types = array();
|
98 |
|
@@ -124,10 +125,11 @@ function wpcf7_file_validation_filter( $result, $tag ) {
|
|
124 |
if ( ! empty( $matches[2] ) ) {
|
125 |
$kbmb = strtolower( $matches[2] );
|
126 |
|
127 |
-
if ( 'kb' == $kbmb )
|
128 |
$allowed_size *= 1024;
|
129 |
-
elseif ( 'mb' == $kbmb )
|
130 |
$allowed_size *= 1024 * 1024;
|
|
|
131 |
}
|
132 |
|
133 |
break;
|
@@ -138,8 +140,9 @@ function wpcf7_file_validation_filter( $result, $tag ) {
|
|
138 |
/* File type validation */
|
139 |
|
140 |
// Default file-type restriction
|
141 |
-
if ( '' == $file_type_pattern )
|
142 |
$file_type_pattern = 'jpg|jpeg|png|gif|pdf|doc|docx|ppt|pptx|odt|avi|ogg|m4a|mov|mp3|mp4|mpg|wav|wmv';
|
|
|
143 |
|
144 |
$file_type_pattern = trim( $file_type_pattern, '|' );
|
145 |
$file_type_pattern = '(' . $file_type_pattern . ')';
|
@@ -162,7 +165,7 @@ function wpcf7_file_validation_filter( $result, $tag ) {
|
|
162 |
$uploads_dir = wpcf7_maybe_add_random_dir( $uploads_dir );
|
163 |
|
164 |
$filename = $file['name'];
|
165 |
-
$filename = wpcf7_canonicalize( $filename );
|
166 |
$filename = sanitize_file_name( $filename );
|
167 |
$filename = wpcf7_antiscript_file_name( $filename );
|
168 |
$filename = wp_unique_filename( $uploads_dir, $filename );
|
91 |
return $result;
|
92 |
}
|
93 |
|
94 |
+
if ( ! is_uploaded_file( $file['tmp_name'] ) ) {
|
95 |
return $result;
|
96 |
+
}
|
97 |
|
98 |
$allowed_file_types = array();
|
99 |
|
125 |
if ( ! empty( $matches[2] ) ) {
|
126 |
$kbmb = strtolower( $matches[2] );
|
127 |
|
128 |
+
if ( 'kb' == $kbmb ) {
|
129 |
$allowed_size *= 1024;
|
130 |
+
} elseif ( 'mb' == $kbmb ) {
|
131 |
$allowed_size *= 1024 * 1024;
|
132 |
+
}
|
133 |
}
|
134 |
|
135 |
break;
|
140 |
/* File type validation */
|
141 |
|
142 |
// Default file-type restriction
|
143 |
+
if ( '' == $file_type_pattern ) {
|
144 |
$file_type_pattern = 'jpg|jpeg|png|gif|pdf|doc|docx|ppt|pptx|odt|avi|ogg|m4a|mov|mp3|mp4|mpg|wav|wmv';
|
145 |
+
}
|
146 |
|
147 |
$file_type_pattern = trim( $file_type_pattern, '|' );
|
148 |
$file_type_pattern = '(' . $file_type_pattern . ')';
|
165 |
$uploads_dir = wpcf7_maybe_add_random_dir( $uploads_dir );
|
166 |
|
167 |
$filename = $file['name'];
|
168 |
+
$filename = wpcf7_canonicalize( $filename, 'as-is' );
|
169 |
$filename = sanitize_file_name( $filename );
|
170 |
$filename = wpcf7_antiscript_file_name( $filename );
|
171 |
$filename = wp_unique_filename( $uploads_dir, $filename );
|
modules/text.php
CHANGED
@@ -145,7 +145,7 @@ function wpcf7_text_validation_filter( $result, $tag ) {
|
|
145 |
}
|
146 |
}
|
147 |
|
148 |
-
if (
|
149 |
$maxlength = $tag->get_maxlength_option();
|
150 |
$minlength = $tag->get_minlength_option();
|
151 |
|
145 |
}
|
146 |
}
|
147 |
|
148 |
+
if ( '' !== $value ) {
|
149 |
$maxlength = $tag->get_maxlength_option();
|
150 |
$minlength = $tag->get_minlength_option();
|
151 |
|
modules/textarea.php
CHANGED
@@ -98,7 +98,7 @@ function wpcf7_textarea_validation_filter( $result, $tag ) {
|
|
98 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) );
|
99 |
}
|
100 |
|
101 |
-
if (
|
102 |
$maxlength = $tag->get_maxlength_option();
|
103 |
$minlength = $tag->get_minlength_option();
|
104 |
|
98 |
$result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) );
|
99 |
}
|
100 |
|
101 |
+
if ( '' !== $value ) {
|
102 |
$maxlength = $tag->get_maxlength_option();
|
103 |
$minlength = $tag->get_minlength_option();
|
104 |
|
readme.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: takayukister
|
|
3 |
Donate link: http://contactform7.com/donate/
|
4 |
Tags: contact, form, contact form, feedback, email, ajax, captcha, akismet, multilingual
|
5 |
Requires at least: 4.5
|
6 |
-
Tested up to: 4.7
|
7 |
-
Stable tag: 4.6
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -62,6 +62,13 @@ Do you have questions or issues with Contact Form 7? Use these support channels
|
|
62 |
|
63 |
For more information, see [Releases](http://contactform7.com/category/releases/).
|
64 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
= 4.6 =
|
66 |
|
67 |
* Ajax loader: HTML markup changed to `<span>` to be easily customizable with CSS.
|
@@ -71,21 +78,3 @@ For more information, see [Releases](http://contactform7.com/category/releases/)
|
|
71 |
* `default:shortcode_attr` form-tag option.
|
72 |
* `WPCF7_Shortcode`, `WPCF7_ShortcodeManager`, `wpcf7_add_shortcode()`, `wpcf7_scan_shortcode()`, and some other classes and functions have become deprecated.
|
73 |
* Removed all language files from the _languages_ folder. Translations have moved to [translate.wordpress.org](https://translate.wordpress.org/projects/wp-plugins/contact-form-7).
|
74 |
-
|
75 |
-
= 4.5.1 =
|
76 |
-
|
77 |
-
* Avoids JavaScript strict-mode errors seen with ill-designed themes.
|
78 |
-
* Fixed a bug around reCAPTCHA's callback and expired-callback options.
|
79 |
-
* Specifies cursor style for file uploading fields.
|
80 |
-
* Corrects language tags for locale codes with modifying suffix like '_formal'.
|
81 |
-
* Corrects wpcf7_is_rtl() output. Added 5 locales to the RTL locales list.
|
82 |
-
* Language Packs: Language files for Portuguese (Brazil) (pt_BR) and Hebrew (he_IL) have been removed.
|
83 |
-
|
84 |
-
= 4.5 =
|
85 |
-
|
86 |
-
* The default contact form template is revised.
|
87 |
-
* reCAPTCHA: Run grecaptcha.reset() after a submission.
|
88 |
-
* The autocomplete option for form-tags and wpcf7_form_autocomplete filter hook are introduced to manage autocomplete attribute.
|
89 |
-
* The config validator is revised. The wpcf7_config_validator_validate action hook is introduced to allow 3rd-party to cut in.
|
90 |
-
* A bug in character count form-tag is fixed.
|
91 |
-
* Language Packs: Language files for Danish (da_DK), Polish (pl_PL), and Czech (cs_CZ) have been removed from the plugin package.
|
3 |
Donate link: http://contactform7.com/donate/
|
4 |
Tags: contact, form, contact form, feedback, email, ajax, captcha, akismet, multilingual
|
5 |
Requires at least: 4.5
|
6 |
+
Tested up to: 4.7.1
|
7 |
+
Stable tag: 4.6.1
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
62 |
|
63 |
For more information, see [Releases](http://contactform7.com/category/releases/).
|
64 |
|
65 |
+
= 4.6.1 =
|
66 |
+
|
67 |
+
* Fixed: "0" input could pass the `minlength` validation.
|
68 |
+
* Fixed: `exclude_blank` option was applied to all mail fields, not only to the message body.
|
69 |
+
* Fixed: `wpcf7_autop()` incorrectly inserted `<br />` around hidden and block-type form-tags.
|
70 |
+
* Fixed: Applying `strtolower()` to uploaded file names was unnecessary and could cause troubles in a non-English environment.
|
71 |
+
|
72 |
= 4.6 =
|
73 |
|
74 |
* Ajax loader: HTML markup changed to `<span>` to be easily customizable with CSS.
|
78 |
* `default:shortcode_attr` form-tag option.
|
79 |
* `WPCF7_Shortcode`, `WPCF7_ShortcodeManager`, `wpcf7_add_shortcode()`, `wpcf7_scan_shortcode()`, and some other classes and functions have become deprecated.
|
80 |
* Removed all language files from the _languages_ folder. Translations have moved to [translate.wordpress.org](https://translate.wordpress.org/projects/wp-plugins/contact-form-7).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
wp-contact-form-7.php
CHANGED
@@ -7,10 +7,10 @@ Author: Takayuki Miyoshi
|
|
7 |
Author URI: http://ideasilo.wordpress.com/
|
8 |
Text Domain: contact-form-7
|
9 |
Domain Path: /languages/
|
10 |
-
Version: 4.6
|
11 |
*/
|
12 |
|
13 |
-
define( 'WPCF7_VERSION', '4.6' );
|
14 |
|
15 |
define( 'WPCF7_REQUIRED_WP_VERSION', '4.5' );
|
16 |
|
7 |
Author URI: http://ideasilo.wordpress.com/
|
8 |
Text Domain: contact-form-7
|
9 |
Domain Path: /languages/
|
10 |
+
Version: 4.6.1
|
11 |
*/
|
12 |
|
13 |
+
define( 'WPCF7_VERSION', '4.6.1' );
|
14 |
|
15 |
define( 'WPCF7_REQUIRED_WP_VERSION', '4.5' );
|
16 |
|