Contact Form 7 - Version 3.0.2

Version Description

  • Show alert messages when you use it on old version of WordPress.
  • Introduce wpcf7_is_rtl() to avoid not exist error of is_rtl().
  • Take back data conversion from Contact Form 7 1.x.
  • Normalize newline characters to \n (line feed) on save (fix export/import problem).
  • Rewrite wpcf7_admin_url() and use menu_page_url() inside it.
  • Use wp_enqueue_scripts and admin_enqueue_scripts action hooks instead of wp_print_styles and admin_print_styles.
  • Use wp_safe_redirect() instead of wp_redirect().
  • Updated jquery.form.js to 2.94.
  • Translations for Esperanto has been created.
  • Translations for German, Japanese, Malay, Thai, Slovak, and Hungarian have been updated.
Download this release

Release Info

Developer takayukister
Plugin Icon 128x128 Contact Form 7
Version 3.0.2
Comparing to
See all releases

Code changes from version 3.0.1 to 3.0.2

admin/admin.php CHANGED
@@ -70,7 +70,7 @@ function wpcf7_admin_init() {
70
 
71
  $query['contactform'] = $contact_form->id;
72
  $redirect_to = wpcf7_admin_url( $query );
73
- wp_redirect( $redirect_to );
74
  exit();
75
  }
76
 
@@ -91,7 +91,7 @@ function wpcf7_admin_init() {
91
  }
92
 
93
  $redirect_to = wpcf7_admin_url( $query );
94
- wp_redirect( $redirect_to );
95
  exit();
96
  }
97
 
@@ -103,7 +103,7 @@ function wpcf7_admin_init() {
103
  $contact_form->delete();
104
 
105
  $redirect_to = wpcf7_admin_url( array( 'message' => 'deleted' ) );
106
- wp_redirect( $redirect_to );
107
  exit();
108
  }
109
  }
@@ -118,7 +118,7 @@ function wpcf7_admin_menu() {
118
  WPCF7_ADMIN_READ_CAPABILITY, 'wpcf7', 'wpcf7_admin_management_page' );
119
  }
120
 
121
- add_action( 'admin_print_styles', 'wpcf7_admin_enqueue_styles' );
122
 
123
  function wpcf7_admin_enqueue_styles() {
124
  global $plugin_page;
@@ -131,7 +131,7 @@ function wpcf7_admin_enqueue_styles() {
131
  wp_enqueue_style( 'contact-form-7-admin', wpcf7_plugin_url( 'admin/styles.css' ),
132
  array(), WPCF7_VERSION, 'all' );
133
 
134
- if ( is_rtl() ) {
135
  wp_enqueue_style( 'contact-form-7-admin-rtl',
136
  wpcf7_plugin_url( 'admin/styles-rtl.css' ), array(), WPCF7_VERSION, 'all' );
137
  }
@@ -220,7 +220,7 @@ function wpcf7_plugin_action_links( $links, $file ) {
220
  if ( $file != WPCF7_PLUGIN_BASENAME )
221
  return $links;
222
 
223
- $url = wpcf7_admin_url( array( 'page' => 'wpcf7' ) );
224
 
225
  $settings_link = '<a href="' . esc_attr( $url ) . '">'
226
  . esc_html( __( 'Settings', 'wpcf7' ) ) . '</a>';
@@ -279,7 +279,7 @@ function wpcf7_donation_link( &$contact_form ) {
279
  if ( ! WPCF7_SHOW_DONATION_LINK )
280
  return;
281
 
282
- if ( 'new' == $_GET['contactform'] || ! empty($_GET['message']) )
283
  return;
284
 
285
  $show_link = true;
@@ -307,4 +307,24 @@ function wpcf7_donation_link( &$contact_form ) {
307
  <?php
308
  }
309
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
310
  ?>
70
 
71
  $query['contactform'] = $contact_form->id;
72
  $redirect_to = wpcf7_admin_url( $query );
73
+ wp_safe_redirect( $redirect_to );
74
  exit();
75
  }
76
 
91
  }
92
 
93
  $redirect_to = wpcf7_admin_url( $query );
94
+ wp_safe_redirect( $redirect_to );
95
  exit();
96
  }
97
 
103
  $contact_form->delete();
104
 
105
  $redirect_to = wpcf7_admin_url( array( 'message' => 'deleted' ) );
106
+ wp_safe_redirect( $redirect_to );
107
  exit();
108
  }
109
  }
118
  WPCF7_ADMIN_READ_CAPABILITY, 'wpcf7', 'wpcf7_admin_management_page' );
119
  }
120
 
121
+ add_action( 'admin_enqueue_scripts', 'wpcf7_admin_enqueue_styles' );
122
 
123
  function wpcf7_admin_enqueue_styles() {
124
  global $plugin_page;
131
  wp_enqueue_style( 'contact-form-7-admin', wpcf7_plugin_url( 'admin/styles.css' ),
132
  array(), WPCF7_VERSION, 'all' );
133
 
134
+ if ( wpcf7_is_rtl() ) {
135
  wp_enqueue_style( 'contact-form-7-admin-rtl',
136
  wpcf7_plugin_url( 'admin/styles-rtl.css' ), array(), WPCF7_VERSION, 'all' );
137
  }
220
  if ( $file != WPCF7_PLUGIN_BASENAME )
221
  return $links;
222
 
223
+ $url = wpcf7_admin_url();
224
 
225
  $settings_link = '<a href="' . esc_attr( $url ) . '">'
226
  . esc_html( __( 'Settings', 'wpcf7' ) ) . '</a>';
279
  if ( ! WPCF7_SHOW_DONATION_LINK )
280
  return;
281
 
282
+ if ( 'new' == $_GET['contactform'] || ! empty( $_GET['message'] ) )
283
  return;
284
 
285
  $show_link = true;
307
  <?php
308
  }
309
 
310
+ add_action( 'admin_notices', 'wpcf7_old_wp_version_error', 9 );
311
+
312
+ function wpcf7_old_wp_version_error() {
313
+ global $plugin_page;
314
+
315
+ if ( 'wpcf7' != $plugin_page )
316
+ return;
317
+
318
+ $wp_version = get_bloginfo( 'version' );
319
+
320
+ if ( ! version_compare( $wp_version, WPCF7_REQUIRED_WP_VERSION, '<' ) )
321
+ return;
322
+
323
+ ?>
324
+ <div class="error">
325
+ <p><?php echo sprintf( __( '<strong>Contact Form 7 %1$s requires WordPress %2$s or higher.</strong> Please <a href="%3$s">update WordPress</a> first.', 'wpcf7' ), WPCF7_VERSION, WPCF7_REQUIRED_WP_VERSION, admin_url( 'update-core.php' ) ); ?></p>
326
+ </div>
327
+ <?php
328
+ }
329
+
330
  ?>
admin/scripts.js CHANGED
@@ -2,6 +2,8 @@
2
 
3
  $(function() {
4
  try {
 
 
5
  $.extend($.tgPanes, _wpcf7.tagGenerators);
6
  $('#taggenerator').tagGenerator(_wpcf7L10n.generateTag,
7
  { dropdownIconUrl: _wpcf7.pluginUrl + '/images/dropdown.gif' });
2
 
3
  $(function() {
4
  try {
5
+ $('div.cf7com-links').insertAfter($('div.wrap h2:first'));
6
+
7
  $.extend($.tgPanes, _wpcf7.tagGenerators);
8
  $('#taggenerator').tagGenerator(_wpcf7L10n.generateTag,
9
  { dropdownIconUrl: _wpcf7.pluginUrl + '/images/dropdown.gif' });
admin/styles.css CHANGED
@@ -1,6 +1,6 @@
1
  div.wrap div.cf7com-links {
2
  text-align: right;
3
- font-size: .8em;
4
  margin-top: -1.6em;
5
  }
6
 
@@ -13,8 +13,6 @@ div.wrap div.donation {
13
  border-style: solid;
14
  padding: 0 0.6em;
15
  margin: 5px 0 15px;
16
- -moz-border-radius: 3px;
17
- -khtml-border-radius: 3px;
18
  -webkit-border-radius: 3px;
19
  border-radius: 3px;
20
  background-color: #ffffe0;
@@ -125,8 +123,6 @@ input#contact-form-anchor-text, input#contact-form-anchor-text-old {
125
  background: #7e4e0b;
126
  border: none;
127
  width: 100%;
128
- -moz-border-radius: 6px;
129
- -khtml-border-radius: 6px;
130
  -webkit-border-radius: 6px;
131
  border-radius: 6px;
132
  }
@@ -181,8 +177,6 @@ div.tg-pane {
181
  background: #f1f1f1;
182
  margin: 1ex 0 0 0;
183
  padding: 10px;
184
- -moz-border-radius: 6px;
185
- -khtml-border-radius: 6px;
186
  -webkit-border-radius: 6px;
187
  border-radius: 6px;
188
  line-height: 140%;
@@ -216,8 +210,6 @@ div.tg-pane input.tag, div.tg-pane input.mail-tag {
216
  border: none;
217
  color: #fff;
218
  background-color: #7e4e0b;
219
- -moz-border-radius: 6px;
220
- -khtml-border-radius: 6px;
221
  -webkit-border-radius: 6px;
222
  border-radius: 6px;
223
  }
1
  div.wrap div.cf7com-links {
2
  text-align: right;
3
+ font-size: .9em;
4
  margin-top: -1.6em;
5
  }
6
 
13
  border-style: solid;
14
  padding: 0 0.6em;
15
  margin: 5px 0 15px;
 
 
16
  -webkit-border-radius: 3px;
17
  border-radius: 3px;
18
  background-color: #ffffe0;
123
  background: #7e4e0b;
124
  border: none;
125
  width: 100%;
 
 
126
  -webkit-border-radius: 6px;
127
  border-radius: 6px;
128
  }
177
  background: #f1f1f1;
178
  margin: 1ex 0 0 0;
179
  padding: 10px;
 
 
180
  -webkit-border-radius: 6px;
181
  border-radius: 6px;
182
  line-height: 140%;
210
  border: none;
211
  color: #fff;
212
  background-color: #7e4e0b;
 
 
213
  -webkit-border-radius: 6px;
214
  border-radius: 6px;
215
  }
includes/classes.php CHANGED
@@ -410,11 +410,10 @@ class WPCF7_ContactForm {
410
  $post_id = wp_insert_post( $postarr );
411
 
412
  if ( $post_id ) {
413
- update_post_meta( $post_id, 'form', $this->form );
414
- update_post_meta( $post_id, 'mail', $this->mail );
415
- update_post_meta( $post_id, 'mail_2', $this->mail_2 );
416
- update_post_meta( $post_id, 'messages', $this->messages );
417
- update_post_meta( $post_id, 'additional_settings', $this->additional_settings );
418
 
419
  if ( $this->initial ) {
420
  $this->initial = false;
410
  $post_id = wp_insert_post( $postarr );
411
 
412
  if ( $post_id ) {
413
+ $metas = array( 'form', 'mail', 'mail_2', 'messages', 'additional_settings' );
414
+
415
+ foreach ( $metas as $meta )
416
+ update_post_meta( $post_id, $meta, wpcf7_normalize_newline_deep( $this->{$meta} ) );
 
417
 
418
  if ( $this->initial ) {
419
  $this->initial = false;
includes/controller.php CHANGED
@@ -313,13 +313,13 @@ function wpcf7_script_is() {
313
  }
314
 
315
  if ( WPCF7_LOAD_CSS )
316
- add_action( 'wp_print_styles', 'wpcf7_enqueue_styles' );
317
 
318
  function wpcf7_enqueue_styles() {
319
  wp_enqueue_style( 'contact-form-7', wpcf7_plugin_url( 'styles.css' ),
320
  array(), WPCF7_VERSION, 'all' );
321
 
322
- if ( is_rtl() ) {
323
  wp_enqueue_style( 'contact-form-7-rtl', wpcf7_plugin_url( 'styles-rtl.css' ),
324
  array(), WPCF7_VERSION, 'all' );
325
  }
313
  }
314
 
315
  if ( WPCF7_LOAD_CSS )
316
+ add_action( 'wp_enqueue_scripts', 'wpcf7_enqueue_styles' );
317
 
318
  function wpcf7_enqueue_styles() {
319
  wp_enqueue_style( 'contact-form-7', wpcf7_plugin_url( 'styles.css' ),
320
  array(), WPCF7_VERSION, 'all' );
321
 
322
+ if ( wpcf7_is_rtl() ) {
323
  wp_enqueue_style( 'contact-form-7-rtl', wpcf7_plugin_url( 'styles-rtl.css' ),
324
  array(), WPCF7_VERSION, 'all' );
325
  }
includes/formatting.php CHANGED
@@ -47,10 +47,12 @@ function wpcf7_autop( $pee, $br = 1 ) {
47
 
48
  function wpcf7_strip_quote( $text ) {
49
  $text = trim( $text );
 
50
  if ( preg_match( '/^"(.*)"$/', $text, $matches ) )
51
  $text = $matches[1];
52
  elseif ( preg_match( "/^'(.*)'$/", $text, $matches ) )
53
  $text = $matches[1];
 
54
  return $text;
55
  }
56
 
@@ -60,9 +62,33 @@ function wpcf7_strip_quote_deep( $arr ) {
60
 
61
  if ( is_array( $arr ) ) {
62
  $result = array();
63
- foreach ( $arr as $key => $text ) {
64
- $result[$key] = wpcf7_strip_quote( $text );
65
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  return $result;
67
  }
68
  }
47
 
48
  function wpcf7_strip_quote( $text ) {
49
  $text = trim( $text );
50
+
51
  if ( preg_match( '/^"(.*)"$/', $text, $matches ) )
52
  $text = $matches[1];
53
  elseif ( preg_match( "/^'(.*)'$/", $text, $matches ) )
54
  $text = $matches[1];
55
+
56
  return $text;
57
  }
58
 
62
 
63
  if ( is_array( $arr ) ) {
64
  $result = array();
65
+
66
+ foreach ( $arr as $key => $text )
67
+ $result[$key] = wpcf7_strip_quote_deep( $text );
68
+
69
+ return $result;
70
+ }
71
+ }
72
+
73
+ function wpcf7_normalize_newline( $text, $to = "\n" ) {
74
+ $nls = array( "\r\n", "\r", "\n" );
75
+
76
+ if ( ! in_array( $to, $nls ) )
77
+ return $text;
78
+
79
+ return str_replace( $nls, $to, $text );
80
+ }
81
+
82
+ function wpcf7_normalize_newline_deep( $arr, $to = "\n" ) {
83
+ if ( is_string( $arr ) )
84
+ return wpcf7_normalize_newline( $arr, $to );
85
+
86
+ if ( is_array( $arr ) ) {
87
+ $result = array();
88
+
89
+ foreach ( $arr as $key => $text )
90
+ $result[$key] = wpcf7_normalize_newline_deep( $text, $to );
91
+
92
  return $result;
93
  }
94
  }
includes/functions.php CHANGED
@@ -1,5 +1,25 @@
1
  <?php
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  function wpcf7_messages() {
4
  $messages = array(
5
  'mail_sent_ok' => array(
@@ -179,6 +199,7 @@ function wpcf7_l10n() {
179
  'da_DK' => __( 'Danish', 'wpcf7' ),
180
  'nl_NL' => __( 'Dutch', 'wpcf7' ),
181
  'en_US' => __( 'English', 'wpcf7' ),
 
182
  'et' => __( 'Estonian', 'wpcf7' ),
183
  'fi' => __( 'Finnish', 'wpcf7' ),
184
  'fr_FR' => __( 'French', 'wpcf7' ),
@@ -207,7 +228,7 @@ function wpcf7_l10n() {
207
  'ro_RO' => __( 'Romanian', 'wpcf7' ),
208
  'sr_RS' => __( 'Serbian', 'wpcf7' ),
209
  'si_LK' => __( 'Sinhala', 'wpcf7' ),
210
- 'sk' => __( 'Slovak', 'wpcf7' ),
211
  'sl_SI' => __( 'Slovene', 'wpcf7' ),
212
  'es_ES' => __( 'Spanish', 'wpcf7' ),
213
  'sv_SE' => __( 'Swedish', 'wpcf7' ),
@@ -222,4 +243,11 @@ function wpcf7_l10n() {
222
  return $l10n;
223
  }
224
 
 
 
 
 
 
 
 
225
  ?>
1
  <?php
2
 
3
+ function wpcf7_plugin_path( $path = '' ) {
4
+ return path_join( WPCF7_PLUGIN_DIR, trim( $path, '/' ) );
5
+ }
6
+
7
+ function wpcf7_plugin_url( $path = '' ) {
8
+ return plugins_url( $path, WPCF7_PLUGIN_BASENAME );
9
+ }
10
+
11
+ function wpcf7_admin_url( $args = array() ) {
12
+ $defaults = array( 'page' => 'wpcf7' );
13
+ $args = wp_parse_args( $args, $defaults );
14
+
15
+ $url = menu_page_url( $args['page'], false );
16
+ unset( $args['page'] );
17
+
18
+ $url = add_query_arg( $args, $url );
19
+
20
+ return esc_url_raw( $url );
21
+ }
22
+
23
  function wpcf7_messages() {
24
  $messages = array(
25
  'mail_sent_ok' => array(
199
  'da_DK' => __( 'Danish', 'wpcf7' ),
200
  'nl_NL' => __( 'Dutch', 'wpcf7' ),
201
  'en_US' => __( 'English', 'wpcf7' ),
202
+ 'eo_EO' => __( 'Esperanto', 'wpcf7' ),
203
  'et' => __( 'Estonian', 'wpcf7' ),
204
  'fi' => __( 'Finnish', 'wpcf7' ),
205
  'fr_FR' => __( 'French', 'wpcf7' ),
228
  'ro_RO' => __( 'Romanian', 'wpcf7' ),
229
  'sr_RS' => __( 'Serbian', 'wpcf7' ),
230
  'si_LK' => __( 'Sinhala', 'wpcf7' ),
231
+ 'sk_SK' => __( 'Slovak', 'wpcf7' ),
232
  'sl_SI' => __( 'Slovene', 'wpcf7' ),
233
  'es_ES' => __( 'Spanish', 'wpcf7' ),
234
  'sv_SE' => __( 'Swedish', 'wpcf7' ),
243
  return $l10n;
244
  }
245
 
246
+ function wpcf7_is_rtl() {
247
+ if ( function_exists( 'is_rtl' ) )
248
+ return is_rtl();
249
+
250
+ return false;
251
+ }
252
+
253
  ?>
jquery.form.js CHANGED
@@ -1,12 +1,12 @@
1
  /*!
2
  * jQuery Form Plugin
3
- * version: 2.87 (20-OCT-2011)
4
  * @requires jQuery v1.3.2 or later
5
  *
6
  * Examples and documentation at: http://malsup.com/jquery/form/
7
  * Dual licensed under the MIT and GPL licenses:
8
- * http://www.opensource.org/licenses/mit-license.php
9
- * http://www.gnu.org/licenses/gpl.html
10
  */
11
  ;(function($) {
12
 
@@ -87,15 +87,15 @@ $.fn.ajaxSubmit = function(options) {
87
  return this;
88
  }
89
 
90
- var traditional = options.traditional;
91
- if ( traditional === undefined ) {
92
- traditional = $.ajaxSettings.traditional;
93
- }
94
-
95
  var qx,n,v,a = this.formToArray(options.semantic);
96
  if (options.data) {
97
  options.extraData = options.data;
98
- qx = $.param(options.data, traditional);
99
  }
100
 
101
  // give pre-submit callback an opportunity to abort the submit
@@ -112,9 +112,9 @@ $.fn.ajaxSubmit = function(options) {
112
  }
113
 
114
  var q = $.param(a, traditional);
115
- if (qx)
116
- q = ( q ? (q + '&' + qx) : qx );
117
-
118
  if (options.type.toUpperCase() == 'GET') {
119
  options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
120
  options.data = null; // data is null for 'get'
@@ -144,63 +144,116 @@ $.fn.ajaxSubmit = function(options) {
144
  }
145
 
146
  options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
147
- var context = options.context || options; // jQuery 1.4+ supports scope context
148
  for (var i=0, max=callbacks.length; i < max; i++) {
149
  callbacks[i].apply(context, [data, status, xhr || $form, $form]);
150
  }
151
  };
152
 
153
  // are there files to upload?
154
- var fileInputs = $('input:file', this).length > 0;
 
155
  var mp = 'multipart/form-data';
156
  var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);
157
 
 
 
 
 
158
  // options.iframe allows user to force iframe mode
159
  // 06-NOV-09: now defaulting to iframe mode if file input is detected
160
- if (options.iframe !== false && (fileInputs || options.iframe || multipart)) {
161
- // hack to fix Safari hang (thanks to Tim Molendijk for this)
162
- // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
163
- if (options.closeKeepAlive) {
164
- $.get(options.closeKeepAlive, function() { fileUpload(a); });
 
 
165
  }
166
- else {
167
- fileUpload(a);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
168
  }
169
- }
170
- else {
171
- // IE7 massage (see issue 57)
172
- if ($.browser.msie && method == 'get' && typeof options.type === "undefined") {
173
- var ieMeth = $form[0].getAttribute('method');
174
- if (typeof ieMeth === 'string')
175
- options.type = ieMeth;
 
 
 
 
 
176
  }
177
- $.ajax(options);
178
- }
179
 
180
- // fire 'notify' event
181
- this.trigger('form-submit-notify', [this, options]);
182
- return this;
183
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
184
 
185
  // private function for handling file uploads (hat tip to YAHOO!)
186
- function fileUpload(a) {
187
  var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle;
188
- var useProp = !!$.fn.prop;
189
-
190
- if (a) {
191
- if ( useProp ) {
192
- // ensure that every serialized input is still enabled
193
- for (i=0; i < a.length; i++) {
194
- el = $(form[a[i].name]);
195
- el.prop('disabled', false);
196
- }
197
- } else {
198
- for (i=0; i < a.length; i++) {
199
- el = $(form[a[i].name]);
200
- el.removeAttr('disabled');
201
- }
202
- };
203
- }
204
 
205
  if ($(':input[name=submit],:input[id=submit]', form).length) {
206
  // if there is an input with a name or id of 'submit' then we won't be
@@ -289,6 +342,14 @@ $.fn.ajaxSubmit = function(options) {
289
  return doc;
290
  }
291
 
 
 
 
 
 
 
 
 
292
  // take a breath so that pending repaints get some cpu time before the upload starts
293
  function doSubmit() {
294
  // make sure form attrs are set
@@ -338,7 +399,7 @@ $.fn.ajaxSubmit = function(options) {
338
  if (s.extraData) {
339
  for (var n in s.extraData) {
340
  extraInputs.push(
341
- $('<input type="hidden" name="'+n+'" />').attr('value',s.extraData[n])
342
  .appendTo(form)[0]);
343
  }
344
  }
@@ -346,7 +407,7 @@ $.fn.ajaxSubmit = function(options) {
346
  if (!s.iframeTarget) {
347
  // add iframe to doc and submit the form
348
  $io.appendTo('body');
349
- io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);
350
  }
351
  setTimeout(checkState,15);
352
  form.submit();
@@ -397,7 +458,7 @@ $.fn.ajaxSubmit = function(options) {
397
  if (!timedOut)
398
  return;
399
  }
400
- io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);
401
 
402
  var status = 'success', errMsg;
403
  try {
@@ -421,8 +482,8 @@ $.fn.ajaxSubmit = function(options) {
421
  }
422
 
423
  //log('response detected');
424
- var docRoot = doc.body ? doc.body : doc.documentElement;
425
- xhr.responseText = docRoot ? docRoot.innerHTML : null;
426
  xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
427
  if (isXml)
428
  s.dataType = 'xml';
@@ -430,11 +491,11 @@ $.fn.ajaxSubmit = function(options) {
430
  var headers = {'content-type': s.dataType};
431
  return headers[header];
432
  };
433
- // support for XHR 'status' & 'statusText' emulation :
434
- if (docRoot) {
435
- xhr.status = Number( docRoot.getAttribute('status') ) || xhr.status;
436
- xhr.statusText = docRoot.getAttribute('statusText') || xhr.statusText;
437
- }
438
 
439
  var dt = (s.dataType || '').toLowerCase();
440
  var scr = /(json|script|text)/.test(dt);
@@ -443,9 +504,9 @@ $.fn.ajaxSubmit = function(options) {
443
  var ta = doc.getElementsByTagName('textarea')[0];
444
  if (ta) {
445
  xhr.responseText = ta.value;
446
- // support for XHR 'status' & 'statusText' emulation :
447
- xhr.status = Number( ta.getAttribute('status') ) || xhr.status;
448
- xhr.statusText = ta.getAttribute('statusText') || xhr.statusText;
449
  }
450
  else if (scr) {
451
  // account for browsers injecting pre around json response
@@ -463,18 +524,18 @@ $.fn.ajaxSubmit = function(options) {
463
  xhr.responseXML = toXml(xhr.responseText);
464
  }
465
 
466
- try {
467
- data = httpData(xhr, dt, s);
468
- }
469
- catch (e) {
470
- status = 'parsererror';
471
- xhr.error = errMsg = (e || status);
472
- }
473
  }
474
  catch (e) {
475
  log('error caught: ',e);
476
  status = 'error';
477
- xhr.error = errMsg = (e || status);
478
  }
479
 
480
  if (xhr.aborted) {
@@ -482,21 +543,21 @@ $.fn.ajaxSubmit = function(options) {
482
  status = null;
483
  }
484
 
485
- if (xhr.status) { // we've set xhr.status
486
- status = (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) ? 'success' : 'error';
487
- }
488
 
489
  // ordering of these callbacks/triggers is odd, but that's how $.ajax does it
490
  if (status === 'success') {
491
  s.success && s.success.call(s.context, data, 'success', xhr);
492
  g && $.event.trigger("ajaxSuccess", [xhr, s]);
493
  }
494
- else if (status) {
495
  if (errMsg == undefined)
496
  errMsg = xhr.statusText;
497
  s.error && s.error.call(s.context, xhr, status, errMsg);
498
  g && $.event.trigger("ajaxError", [xhr, s, errMsg]);
499
- }
500
 
501
  g && $.event.trigger("ajaxComplete", [xhr, s]);
502
 
@@ -663,7 +724,7 @@ $.fn.formToArray = function(semantic) {
663
  if (semantic && form.clk && el.type == "image") {
664
  // handle image inputs on the fly when semantic == true
665
  if(!el.disabled && form.clk == el) {
666
- a.push({name: n, value: $(el).val()});
667
  a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
668
  }
669
  continue;
@@ -676,7 +737,7 @@ $.fn.formToArray = function(semantic) {
676
  }
677
  }
678
  else if (v !== null && typeof v != 'undefined') {
679
- a.push({name: n, value: v});
680
  }
681
  }
682
 
@@ -762,7 +823,7 @@ $.fn.fieldSerialize = function(successful) {
762
  * for each element is returned.
763
  *
764
  * Note: This method *always* returns an array. If no valid value can be determined the
765
- * array will be empty, otherwise it will contain one or more values.
766
  */
767
  $.fn.fieldValue = function(successful) {
768
  for (var val=[], i=0, max=this.length; i < max; i++) {
1
  /*!
2
  * jQuery Form Plugin
3
+ * version: 2.94 (13-DEC-2011)
4
  * @requires jQuery v1.3.2 or later
5
  *
6
  * Examples and documentation at: http://malsup.com/jquery/form/
7
  * Dual licensed under the MIT and GPL licenses:
8
+ * http://www.opensource.org/licenses/mit-license.php
9
+ * http://www.gnu.org/licenses/gpl.html
10
  */
11
  ;(function($) {
12
 
87
  return this;
88
  }
89
 
90
+ var traditional = options.traditional;
91
+ if ( traditional === undefined ) {
92
+ traditional = $.ajaxSettings.traditional;
93
+ }
94
+
95
  var qx,n,v,a = this.formToArray(options.semantic);
96
  if (options.data) {
97
  options.extraData = options.data;
98
+ qx = $.param(options.data, traditional);
99
  }
100
 
101
  // give pre-submit callback an opportunity to abort the submit
112
  }
113
 
114
  var q = $.param(a, traditional);
115
+ if (qx) {
116
+ q = ( q ? (q + '&' + qx) : qx );
117
+ }
118
  if (options.type.toUpperCase() == 'GET') {
119
  options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
120
  options.data = null; // data is null for 'get'
144
  }
145
 
146
  options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
147
+ var context = options.context || options; // jQuery 1.4+ supports scope context
148
  for (var i=0, max=callbacks.length; i < max; i++) {
149
  callbacks[i].apply(context, [data, status, xhr || $form, $form]);
150
  }
151
  };
152
 
153
  // are there files to upload?
154
+ var fileInputs = $('input:file:enabled[value]', this); // [value] (issue #113)
155
+ var hasFileInputs = fileInputs.length > 0;
156
  var mp = 'multipart/form-data';
157
  var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);
158
 
159
+ var fileAPI = !!(hasFileInputs && fileInputs.get(0).files && window.FormData);
160
+ log("fileAPI :" + fileAPI);
161
+ var shouldUseFrame = (hasFileInputs || multipart) && !fileAPI;
162
+
163
  // options.iframe allows user to force iframe mode
164
  // 06-NOV-09: now defaulting to iframe mode if file input is detected
165
+ if (options.iframe !== false && (options.iframe || shouldUseFrame)) {
166
+ // hack to fix Safari hang (thanks to Tim Molendijk for this)
167
+ // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
168
+ if (options.closeKeepAlive) {
169
+ $.get(options.closeKeepAlive, function() {
170
+ fileUploadIframe(a);
171
+ });
172
  }
173
+ else {
174
+ fileUploadIframe(a);
175
+ }
176
+ }
177
+ else if ((hasFileInputs || multipart) && fileAPI) {
178
+ options.progress = options.progress || $.noop;
179
+ fileUploadXhr(a);
180
+ }
181
+ else {
182
+ $.ajax(options);
183
+ }
184
+
185
+ // fire 'notify' event
186
+ this.trigger('form-submit-notify', [this, options]);
187
+ return this;
188
+
189
+ // XMLHttpRequest Level 2 file uploads (big hat tip to francois2metz)
190
+ function fileUploadXhr(a) {
191
+ var formdata = new FormData();
192
+
193
+ for (var i=0; i < a.length; i++) {
194
+ if (a[i].type == 'file')
195
+ continue;
196
+ formdata.append(a[i].name, a[i].value);
197
  }
198
+
199
+ $form.find('input:file:enabled').each(function(){
200
+ var name = $(this).attr('name'), files = this.files;
201
+ if (name) {
202
+ for (var i=0; i < files.length; i++)
203
+ formdata.append(name, files[i]);
204
+ }
205
+ });
206
+
207
+ if (options.extraData) {
208
+ for (var k in options.extraData)
209
+ formdata.append(k, options.extraData[k])
210
  }
 
 
211
 
212
+ options.data = null;
 
 
213
 
214
+ var s = $.extend(true, {}, $.ajaxSettings, options, {
215
+ contentType: false,
216
+ processData: false,
217
+ cache: false,
218
+ type: 'POST'
219
+ });
220
+
221
+ s.context = s.context || s;
222
+
223
+ s.data = null;
224
+ var beforeSend = s.beforeSend;
225
+ s.beforeSend = function(xhr, o) {
226
+ o.data = formdata;
227
+ if(xhr.upload) { // unfortunately, jQuery doesn't expose this prop (http://bugs.jquery.com/ticket/10190)
228
+ xhr.upload.onprogress = function(event) {
229
+ o.progress(event.position, event.total);
230
+ };
231
+ }
232
+ if(beforeSend)
233
+ beforeSend.call(o, xhr, options);
234
+ };
235
+ $.ajax(s);
236
+ }
237
 
238
  // private function for handling file uploads (hat tip to YAHOO!)
239
+ function fileUploadIframe(a) {
240
  var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle;
241
+ var useProp = !!$.fn.prop;
242
+
243
+ if (a) {
244
+ if ( useProp ) {
245
+ // ensure that every serialized input is still enabled
246
+ for (i=0; i < a.length; i++) {
247
+ el = $(form[a[i].name]);
248
+ el.prop('disabled', false);
249
+ }
250
+ } else {
251
+ for (i=0; i < a.length; i++) {
252
+ el = $(form[a[i].name]);
253
+ el.removeAttr('disabled');
254
+ }
255
+ };
256
+ }
257
 
258
  if ($(':input[name=submit],:input[id=submit]', form).length) {
259
  // if there is an input with a name or id of 'submit' then we won't be
342
  return doc;
343
  }
344
 
345
+ // Rails CSRF hack (thanks to Yvan Barthelemy)
346
+ var csrf_token = $('meta[name=csrf-token]').attr('content');
347
+ var csrf_param = $('meta[name=csrf-param]').attr('content');
348
+ if (csrf_param && csrf_token) {
349
+ s.extraData = s.extraData || {};
350
+ s.extraData[csrf_param] = csrf_token;
351
+ }
352
+
353
  // take a breath so that pending repaints get some cpu time before the upload starts
354
  function doSubmit() {
355
  // make sure form attrs are set
399
  if (s.extraData) {
400
  for (var n in s.extraData) {
401
  extraInputs.push(
402
+ $('<input type="hidden" name="'+n+'">').attr('value',s.extraData[n])
403
  .appendTo(form)[0]);
404
  }
405
  }
407
  if (!s.iframeTarget) {
408
  // add iframe to doc and submit the form
409
  $io.appendTo('body');
410
+ io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);
411
  }
412
  setTimeout(checkState,15);
413
  form.submit();
458
  if (!timedOut)
459
  return;
460
  }
461
+ io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);
462
 
463
  var status = 'success', errMsg;
464
  try {
482
  }
483
 
484
  //log('response detected');
485
+ var docRoot = doc.body ? doc.body : doc.documentElement;
486
+ xhr.responseText = docRoot ? docRoot.innerHTML : null;
487
  xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
488
  if (isXml)
489
  s.dataType = 'xml';
491
  var headers = {'content-type': s.dataType};
492
  return headers[header];
493
  };
494
+ // support for XHR 'status' & 'statusText' emulation :
495
+ if (docRoot) {
496
+ xhr.status = Number( docRoot.getAttribute('status') ) || xhr.status;
497
+ xhr.statusText = docRoot.getAttribute('statusText') || xhr.statusText;
498
+ }
499
 
500
  var dt = (s.dataType || '').toLowerCase();
501
  var scr = /(json|script|text)/.test(dt);
504
  var ta = doc.getElementsByTagName('textarea')[0];
505
  if (ta) {
506
  xhr.responseText = ta.value;
507
+ // support for XHR 'status' & 'statusText' emulation :
508
+ xhr.status = Number( ta.getAttribute('status') ) || xhr.status;
509
+ xhr.statusText = ta.getAttribute('statusText') || xhr.statusText;
510
  }
511
  else if (scr) {
512
  // account for browsers injecting pre around json response
524
  xhr.responseXML = toXml(xhr.responseText);
525
  }
526
 
527
+ try {
528
+ data = httpData(xhr, dt, s);
529
+ }
530
+ catch (e) {
531
+ status = 'parsererror';
532
+ xhr.error = errMsg = (e || status);
533
+ }
534
  }
535
  catch (e) {
536
  log('error caught: ',e);
537
  status = 'error';
538
+ xhr.error = errMsg = (e || status);
539
  }
540
 
541
  if (xhr.aborted) {
543
  status = null;
544
  }
545
 
546
+ if (xhr.status) { // we've set xhr.status
547
+ status = (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) ? 'success' : 'error';
548
+ }
549
 
550
  // ordering of these callbacks/triggers is odd, but that's how $.ajax does it
551
  if (status === 'success') {
552
  s.success && s.success.call(s.context, data, 'success', xhr);
553
  g && $.event.trigger("ajaxSuccess", [xhr, s]);
554
  }
555
+ else if (status) {
556
  if (errMsg == undefined)
557
  errMsg = xhr.statusText;
558
  s.error && s.error.call(s.context, xhr, status, errMsg);
559
  g && $.event.trigger("ajaxError", [xhr, s, errMsg]);
560
+ }
561
 
562
  g && $.event.trigger("ajaxComplete", [xhr, s]);
563
 
724
  if (semantic && form.clk && el.type == "image") {
725
  // handle image inputs on the fly when semantic == true
726
  if(!el.disabled && form.clk == el) {
727
+ a.push({name: n, value: $(el).val(), type: el.type });
728
  a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
729
  }
730
  continue;
737
  }
738
  }
739
  else if (v !== null && typeof v != 'undefined') {
740
+ a.push({name: n, value: v, type: el.type});
741
  }
742
  }
743
 
823
  * for each element is returned.
824
  *
825
  * Note: This method *always* returns an array. If no valid value can be determined the
826
+ * array will be empty, otherwise it will contain one or more values.
827
  */
828
  $.fn.fieldValue = function(successful) {
829
  for (var val=[], i=0, max=this.length; i < max; i++) {
languages/wpcf7-de_DE.mo CHANGED
Binary file
languages/wpcf7-eo_EO.mo ADDED
Binary file
languages/wpcf7-hu_HU.mo CHANGED
Binary file
languages/wpcf7-ja.mo CHANGED
Binary file
languages/wpcf7-ms_MY.mo CHANGED
Binary file
languages/wpcf7-sk.mo DELETED
Binary file
languages/wpcf7-sk_SK.mo ADDED
Binary file
languages/wpcf7-th.mo CHANGED
Binary file
languages/wpcf7.pot CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Contact Form 7\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2011-11-02 23:11+0900\n"
6
- "PO-Revision-Date: 2011-11-02 23:12+0900\n"
7
  "Last-Translator: Takayuki Miyoshi <takayukister@gmail.com>\n"
8
  "Language-Team: \n"
9
  "MIME-Version: 1.0\n"
@@ -19,15 +19,15 @@ msgstr ""
19
  msgid "Just another contact form plugin. Simple but flexible."
20
  msgstr ""
21
 
22
- #: contact-form-7/settings.php:99
23
  msgid "Contact Forms"
24
  msgstr ""
25
 
26
- #: contact-form-7/settings.php:100
27
  msgid "Contact Form"
28
  msgstr ""
29
 
30
- #: contact-form-7/settings.php:191
31
  #, php-format
32
  msgid "Contact form %d"
33
  msgstr ""
@@ -117,6 +117,11 @@ msgstr ""
117
  msgid "Donate"
118
  msgstr ""
119
 
 
 
 
 
 
120
  #: contact-form-7/admin/edit.php:20
121
  #: contact-form-7/admin/edit.php:142
122
  #: contact-form-7/admin/edit.php:155
@@ -211,325 +216,329 @@ msgid "Use HTML content type"
211
  msgstr ""
212
 
213
  #: contact-form-7/admin/includes/meta-boxes.php:80
214
- #: contact-form-7/includes/functions.php:88
215
  msgid "Message body:"
216
  msgstr ""
217
 
218
- #: contact-form-7/includes/classes.php:524
219
  msgid "Untitled"
220
  msgstr ""
221
 
222
- #: contact-form-7/includes/functions.php:6
223
  msgid "Sender's message was sent successfully"
224
  msgstr ""
225
 
226
- #: contact-form-7/includes/functions.php:7
227
  msgid "Your message was sent successfully. Thanks."
228
  msgstr ""
229
 
230
- #: contact-form-7/includes/functions.php:11
231
  msgid "Sender's message was failed to send"
232
  msgstr ""
233
 
234
- #: contact-form-7/includes/functions.php:12
235
  #: contact-form-7/modules/akismet.php:101
236
  msgid "Failed to send your message. Please try later or contact the administrator by another method."
237
  msgstr ""
238
 
239
- #: contact-form-7/includes/functions.php:16
240
  msgid "Validation errors occurred"
241
  msgstr ""
242
 
243
- #: contact-form-7/includes/functions.php:17
244
  msgid "Validation errors occurred. Please confirm the fields and submit it again."
245
  msgstr ""
246
 
247
- #: contact-form-7/includes/functions.php:21
248
  msgid "There are terms that the sender must accept"
249
  msgstr ""
250
 
251
- #: contact-form-7/includes/functions.php:22
252
  msgid "Please accept the terms to proceed."
253
  msgstr ""
254
 
255
- #: contact-form-7/includes/functions.php:26
256
  msgid "Email address that the sender entered is invalid"
257
  msgstr ""
258
 
259
- #: contact-form-7/includes/functions.php:27
260
  msgid "Email address seems invalid."
261
  msgstr ""
262
 
263
- #: contact-form-7/includes/functions.php:31
264
  msgid "There is a field that the sender must fill in"
265
  msgstr ""
266
 
267
- #: contact-form-7/includes/functions.php:32
268
  msgid "Please fill the required field."
269
  msgstr ""
270
 
271
- #: contact-form-7/includes/functions.php:56
272
  msgid "Your Name"
273
  msgstr ""
274
 
275
- #: contact-form-7/includes/functions.php:56
276
- #: contact-form-7/includes/functions.php:58
277
  msgid "(required)"
278
  msgstr ""
279
 
280
- #: contact-form-7/includes/functions.php:58
281
  msgid "Your Email"
282
  msgstr ""
283
 
284
- #: contact-form-7/includes/functions.php:60
285
  msgid "Subject"
286
  msgstr ""
287
 
288
- #: contact-form-7/includes/functions.php:62
289
  msgid "Your Message"
290
  msgstr ""
291
 
292
- #: contact-form-7/includes/functions.php:64
293
  msgid "Send"
294
  msgstr ""
295
 
296
- #: contact-form-7/includes/functions.php:72
297
  #, php-format
298
  msgid "From: %s"
299
  msgstr ""
300
 
301
- #: contact-form-7/includes/functions.php:73
302
  #, php-format
303
  msgid "Subject: %s"
304
  msgstr ""
305
 
306
- #: contact-form-7/includes/functions.php:74
307
  msgid "Message Body:"
308
  msgstr ""
309
 
310
- #: contact-form-7/includes/functions.php:75
311
- #: contact-form-7/includes/functions.php:89
312
  #, php-format
313
  msgid "This mail is sent via contact form on %1$s %2$s"
314
  msgstr ""
315
 
316
- #: contact-form-7/includes/functions.php:165
317
  msgid "Afrikaans"
318
  msgstr ""
319
 
320
- #: contact-form-7/includes/functions.php:166
321
  msgid "Albanian"
322
  msgstr ""
323
 
324
- #: contact-form-7/includes/functions.php:167
325
  msgid "Arabic"
326
  msgstr ""
327
 
328
- #: contact-form-7/includes/functions.php:168
329
  msgid "Armenian"
330
  msgstr ""
331
 
332
- #: contact-form-7/includes/functions.php:169
333
  msgid "Bangla"
334
  msgstr ""
335
 
336
- #: contact-form-7/includes/functions.php:170
337
  msgid "Belarusian"
338
  msgstr ""
339
 
340
- #: contact-form-7/includes/functions.php:171
341
  msgid "Bosnian"
342
  msgstr ""
343
 
344
- #: contact-form-7/includes/functions.php:172
345
  msgid "Brazilian Portuguese"
346
  msgstr ""
347
 
348
- #: contact-form-7/includes/functions.php:173
349
  msgid "Bulgarian"
350
  msgstr ""
351
 
352
- #: contact-form-7/includes/functions.php:174
353
  msgid "Catalan"
354
  msgstr ""
355
 
356
- #: contact-form-7/includes/functions.php:175
357
  msgid "Chinese (Simplified)"
358
  msgstr ""
359
 
360
- #: contact-form-7/includes/functions.php:176
361
  msgid "Chinese (Traditional)"
362
  msgstr ""
363
 
364
- #: contact-form-7/includes/functions.php:177
365
  msgid "Croatian"
366
  msgstr ""
367
 
368
- #: contact-form-7/includes/functions.php:178
369
  msgid "Czech"
370
  msgstr ""
371
 
372
- #: contact-form-7/includes/functions.php:179
373
  msgid "Danish"
374
  msgstr ""
375
 
376
- #: contact-form-7/includes/functions.php:180
377
  msgid "Dutch"
378
  msgstr ""
379
 
380
- #: contact-form-7/includes/functions.php:181
381
  msgid "English"
382
  msgstr ""
383
 
384
- #: contact-form-7/includes/functions.php:182
 
 
 
 
385
  msgid "Estonian"
386
  msgstr ""
387
 
388
- #: contact-form-7/includes/functions.php:183
389
  msgid "Finnish"
390
  msgstr ""
391
 
392
- #: contact-form-7/includes/functions.php:184
393
  msgid "French"
394
  msgstr ""
395
 
396
- #: contact-form-7/includes/functions.php:185
397
  msgid "Galician"
398
  msgstr ""
399
 
400
- #: contact-form-7/includes/functions.php:186
401
  msgid "Georgian"
402
  msgstr ""
403
 
404
- #: contact-form-7/includes/functions.php:187
405
  msgid "German"
406
  msgstr ""
407
 
408
- #: contact-form-7/includes/functions.php:188
409
  msgid "Greek"
410
  msgstr ""
411
 
412
- #: contact-form-7/includes/functions.php:189
413
  msgid "Hebrew"
414
  msgstr ""
415
 
416
- #: contact-form-7/includes/functions.php:190
417
  msgid "Hindi"
418
  msgstr ""
419
 
420
- #: contact-form-7/includes/functions.php:191
421
  msgid "Hungarian"
422
  msgstr ""
423
 
424
- #: contact-form-7/includes/functions.php:192
425
  msgid "Indonesian"
426
  msgstr ""
427
 
428
- #: contact-form-7/includes/functions.php:193
429
  msgid "Italian"
430
  msgstr ""
431
 
432
- #: contact-form-7/includes/functions.php:194
433
  msgid "Japanese"
434
  msgstr ""
435
 
436
- #: contact-form-7/includes/functions.php:195
437
  msgid "Korean"
438
  msgstr ""
439
 
440
- #: contact-form-7/includes/functions.php:196
441
  msgid "Latvian"
442
  msgstr ""
443
 
444
- #: contact-form-7/includes/functions.php:197
445
  msgid "Lithuanian"
446
  msgstr ""
447
 
448
- #: contact-form-7/includes/functions.php:198
449
  msgid "Macedonian"
450
  msgstr ""
451
 
452
- #: contact-form-7/includes/functions.php:199
453
  msgid "Malay"
454
  msgstr ""
455
 
456
- #: contact-form-7/includes/functions.php:200
457
  msgid "Malayalam"
458
  msgstr ""
459
 
460
- #: contact-form-7/includes/functions.php:201
461
  msgid "Maltese"
462
  msgstr ""
463
 
464
- #: contact-form-7/includes/functions.php:202
465
  msgid "Norwegian"
466
  msgstr ""
467
 
468
- #: contact-form-7/includes/functions.php:203
469
  msgid "Persian"
470
  msgstr ""
471
 
472
- #: contact-form-7/includes/functions.php:204
473
  msgid "Polish"
474
  msgstr ""
475
 
476
- #: contact-form-7/includes/functions.php:205
477
  msgid "Portuguese"
478
  msgstr ""
479
 
480
- #: contact-form-7/includes/functions.php:206
481
  msgid "Russian"
482
  msgstr ""
483
 
484
- #: contact-form-7/includes/functions.php:207
485
  msgid "Romanian"
486
  msgstr ""
487
 
488
- #: contact-form-7/includes/functions.php:208
489
  msgid "Serbian"
490
  msgstr ""
491
 
492
- #: contact-form-7/includes/functions.php:209
493
  msgid "Sinhala"
494
  msgstr ""
495
 
496
- #: contact-form-7/includes/functions.php:210
497
  msgid "Slovak"
498
  msgstr ""
499
 
500
- #: contact-form-7/includes/functions.php:211
501
  msgid "Slovene"
502
  msgstr ""
503
 
504
- #: contact-form-7/includes/functions.php:212
505
  msgid "Spanish"
506
  msgstr ""
507
 
508
- #: contact-form-7/includes/functions.php:213
509
  msgid "Swedish"
510
  msgstr ""
511
 
512
- #: contact-form-7/includes/functions.php:214
513
  msgid "Tamil"
514
  msgstr ""
515
 
516
- #: contact-form-7/includes/functions.php:215
517
  msgid "Thai"
518
  msgstr ""
519
 
520
- #: contact-form-7/includes/functions.php:216
521
  msgid "Tagalog"
522
  msgstr ""
523
 
524
- #: contact-form-7/includes/functions.php:217
525
  msgid "Turkish"
526
  msgstr ""
527
 
528
- #: contact-form-7/includes/functions.php:218
529
  msgid "Ukrainian"
530
  msgstr ""
531
 
532
- #: contact-form-7/includes/functions.php:219
533
  msgid "Vietnamese"
534
  msgstr ""
535
 
2
  msgstr ""
3
  "Project-Id-Version: Contact Form 7\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2011-12-18 19:40+0900\n"
6
+ "PO-Revision-Date: 2011-12-18 19:40+0900\n"
7
  "Last-Translator: Takayuki Miyoshi <takayukister@gmail.com>\n"
8
  "Language-Team: \n"
9
  "MIME-Version: 1.0\n"
19
  msgid "Just another contact form plugin. Simple but flexible."
20
  msgstr ""
21
 
22
+ #: contact-form-7/settings.php:75
23
  msgid "Contact Forms"
24
  msgstr ""
25
 
26
+ #: contact-form-7/settings.php:76
27
  msgid "Contact Form"
28
  msgstr ""
29
 
30
+ #: contact-form-7/settings.php:173
31
  #, php-format
32
  msgid "Contact form %d"
33
  msgstr ""
117
  msgid "Donate"
118
  msgstr ""
119
 
120
+ #: contact-form-7/admin/admin.php:325
121
+ #, php-format
122
+ msgid "<strong>Contact Form 7 %1$s requires WordPress %2$s or higher.</strong> Please <a href=\"%3$s\">update WordPress</a> first."
123
+ msgstr ""
124
+
125
  #: contact-form-7/admin/edit.php:20
126
  #: contact-form-7/admin/edit.php:142
127
  #: contact-form-7/admin/edit.php:155
216
  msgstr ""
217
 
218
  #: contact-form-7/admin/includes/meta-boxes.php:80
219
+ #: contact-form-7/includes/functions.php:108
220
  msgid "Message body:"
221
  msgstr ""
222
 
223
+ #: contact-form-7/includes/classes.php:523
224
  msgid "Untitled"
225
  msgstr ""
226
 
227
+ #: contact-form-7/includes/functions.php:26
228
  msgid "Sender's message was sent successfully"
229
  msgstr ""
230
 
231
+ #: contact-form-7/includes/functions.php:27
232
  msgid "Your message was sent successfully. Thanks."
233
  msgstr ""
234
 
235
+ #: contact-form-7/includes/functions.php:31
236
  msgid "Sender's message was failed to send"
237
  msgstr ""
238
 
239
+ #: contact-form-7/includes/functions.php:32
240
  #: contact-form-7/modules/akismet.php:101
241
  msgid "Failed to send your message. Please try later or contact the administrator by another method."
242
  msgstr ""
243
 
244
+ #: contact-form-7/includes/functions.php:36
245
  msgid "Validation errors occurred"
246
  msgstr ""
247
 
248
+ #: contact-form-7/includes/functions.php:37
249
  msgid "Validation errors occurred. Please confirm the fields and submit it again."
250
  msgstr ""
251
 
252
+ #: contact-form-7/includes/functions.php:41
253
  msgid "There are terms that the sender must accept"
254
  msgstr ""
255
 
256
+ #: contact-form-7/includes/functions.php:42
257
  msgid "Please accept the terms to proceed."
258
  msgstr ""
259
 
260
+ #: contact-form-7/includes/functions.php:46
261
  msgid "Email address that the sender entered is invalid"
262
  msgstr ""
263
 
264
+ #: contact-form-7/includes/functions.php:47
265
  msgid "Email address seems invalid."
266
  msgstr ""
267
 
268
+ #: contact-form-7/includes/functions.php:51
269
  msgid "There is a field that the sender must fill in"
270
  msgstr ""
271
 
272
+ #: contact-form-7/includes/functions.php:52
273
  msgid "Please fill the required field."
274
  msgstr ""
275
 
276
+ #: contact-form-7/includes/functions.php:76
277
  msgid "Your Name"
278
  msgstr ""
279
 
280
+ #: contact-form-7/includes/functions.php:76
281
+ #: contact-form-7/includes/functions.php:78
282
  msgid "(required)"
283
  msgstr ""
284
 
285
+ #: contact-form-7/includes/functions.php:78
286
  msgid "Your Email"
287
  msgstr ""
288
 
289
+ #: contact-form-7/includes/functions.php:80
290
  msgid "Subject"
291
  msgstr ""
292
 
293
+ #: contact-form-7/includes/functions.php:82
294
  msgid "Your Message"
295
  msgstr ""
296
 
297
+ #: contact-form-7/includes/functions.php:84
298
  msgid "Send"
299
  msgstr ""
300
 
301
+ #: contact-form-7/includes/functions.php:92
302
  #, php-format
303
  msgid "From: %s"
304
  msgstr ""
305
 
306
+ #: contact-form-7/includes/functions.php:93
307
  #, php-format
308
  msgid "Subject: %s"
309
  msgstr ""
310
 
311
+ #: contact-form-7/includes/functions.php:94
312
  msgid "Message Body:"
313
  msgstr ""
314
 
315
+ #: contact-form-7/includes/functions.php:95
316
+ #: contact-form-7/includes/functions.php:109
317
  #, php-format
318
  msgid "This mail is sent via contact form on %1$s %2$s"
319
  msgstr ""
320
 
321
+ #: contact-form-7/includes/functions.php:185
322
  msgid "Afrikaans"
323
  msgstr ""
324
 
325
+ #: contact-form-7/includes/functions.php:186
326
  msgid "Albanian"
327
  msgstr ""
328
 
329
+ #: contact-form-7/includes/functions.php:187
330
  msgid "Arabic"
331
  msgstr ""
332
 
333
+ #: contact-form-7/includes/functions.php:188
334
  msgid "Armenian"
335
  msgstr ""
336
 
337
+ #: contact-form-7/includes/functions.php:189
338
  msgid "Bangla"
339
  msgstr ""
340
 
341
+ #: contact-form-7/includes/functions.php:190
342
  msgid "Belarusian"
343
  msgstr ""
344
 
345
+ #: contact-form-7/includes/functions.php:191
346
  msgid "Bosnian"
347
  msgstr ""
348
 
349
+ #: contact-form-7/includes/functions.php:192
350
  msgid "Brazilian Portuguese"
351
  msgstr ""
352
 
353
+ #: contact-form-7/includes/functions.php:193
354
  msgid "Bulgarian"
355
  msgstr ""
356
 
357
+ #: contact-form-7/includes/functions.php:194
358
  msgid "Catalan"
359
  msgstr ""
360
 
361
+ #: contact-form-7/includes/functions.php:195
362
  msgid "Chinese (Simplified)"
363
  msgstr ""
364
 
365
+ #: contact-form-7/includes/functions.php:196
366
  msgid "Chinese (Traditional)"
367
  msgstr ""
368
 
369
+ #: contact-form-7/includes/functions.php:197
370
  msgid "Croatian"
371
  msgstr ""
372
 
373
+ #: contact-form-7/includes/functions.php:198
374
  msgid "Czech"
375
  msgstr ""
376
 
377
+ #: contact-form-7/includes/functions.php:199
378
  msgid "Danish"
379
  msgstr ""
380
 
381
+ #: contact-form-7/includes/functions.php:200
382
  msgid "Dutch"
383
  msgstr ""
384
 
385
+ #: contact-form-7/includes/functions.php:201
386
  msgid "English"
387
  msgstr ""
388
 
389
+ #: contact-form-7/includes/functions.php:202
390
+ msgid "Esperanto"
391
+ msgstr ""
392
+
393
+ #: contact-form-7/includes/functions.php:203
394
  msgid "Estonian"
395
  msgstr ""
396
 
397
+ #: contact-form-7/includes/functions.php:204
398
  msgid "Finnish"
399
  msgstr ""
400
 
401
+ #: contact-form-7/includes/functions.php:205
402
  msgid "French"
403
  msgstr ""
404
 
405
+ #: contact-form-7/includes/functions.php:206
406
  msgid "Galician"
407
  msgstr ""
408
 
409
+ #: contact-form-7/includes/functions.php:207
410
  msgid "Georgian"
411
  msgstr ""
412
 
413
+ #: contact-form-7/includes/functions.php:208
414
  msgid "German"
415
  msgstr ""
416
 
417
+ #: contact-form-7/includes/functions.php:209
418
  msgid "Greek"
419
  msgstr ""
420
 
421
+ #: contact-form-7/includes/functions.php:210
422
  msgid "Hebrew"
423
  msgstr ""
424
 
425
+ #: contact-form-7/includes/functions.php:211
426
  msgid "Hindi"
427
  msgstr ""
428
 
429
+ #: contact-form-7/includes/functions.php:212
430
  msgid "Hungarian"
431
  msgstr ""
432
 
433
+ #: contact-form-7/includes/functions.php:213
434
  msgid "Indonesian"
435
  msgstr ""
436
 
437
+ #: contact-form-7/includes/functions.php:214
438
  msgid "Italian"
439
  msgstr ""
440
 
441
+ #: contact-form-7/includes/functions.php:215
442
  msgid "Japanese"
443
  msgstr ""
444
 
445
+ #: contact-form-7/includes/functions.php:216
446
  msgid "Korean"
447
  msgstr ""
448
 
449
+ #: contact-form-7/includes/functions.php:217
450
  msgid "Latvian"
451
  msgstr ""
452
 
453
+ #: contact-form-7/includes/functions.php:218
454
  msgid "Lithuanian"
455
  msgstr ""
456
 
457
+ #: contact-form-7/includes/functions.php:219
458
  msgid "Macedonian"
459
  msgstr ""
460
 
461
+ #: contact-form-7/includes/functions.php:220
462
  msgid "Malay"
463
  msgstr ""
464
 
465
+ #: contact-form-7/includes/functions.php:221
466
  msgid "Malayalam"
467
  msgstr ""
468
 
469
+ #: contact-form-7/includes/functions.php:222
470
  msgid "Maltese"
471
  msgstr ""
472
 
473
+ #: contact-form-7/includes/functions.php:223
474
  msgid "Norwegian"
475
  msgstr ""
476
 
477
+ #: contact-form-7/includes/functions.php:224
478
  msgid "Persian"
479
  msgstr ""
480
 
481
+ #: contact-form-7/includes/functions.php:225
482
  msgid "Polish"
483
  msgstr ""
484
 
485
+ #: contact-form-7/includes/functions.php:226
486
  msgid "Portuguese"
487
  msgstr ""
488
 
489
+ #: contact-form-7/includes/functions.php:227
490
  msgid "Russian"
491
  msgstr ""
492
 
493
+ #: contact-form-7/includes/functions.php:228
494
  msgid "Romanian"
495
  msgstr ""
496
 
497
+ #: contact-form-7/includes/functions.php:229
498
  msgid "Serbian"
499
  msgstr ""
500
 
501
+ #: contact-form-7/includes/functions.php:230
502
  msgid "Sinhala"
503
  msgstr ""
504
 
505
+ #: contact-form-7/includes/functions.php:231
506
  msgid "Slovak"
507
  msgstr ""
508
 
509
+ #: contact-form-7/includes/functions.php:232
510
  msgid "Slovene"
511
  msgstr ""
512
 
513
+ #: contact-form-7/includes/functions.php:233
514
  msgid "Spanish"
515
  msgstr ""
516
 
517
+ #: contact-form-7/includes/functions.php:234
518
  msgid "Swedish"
519
  msgstr ""
520
 
521
+ #: contact-form-7/includes/functions.php:235
522
  msgid "Tamil"
523
  msgstr ""
524
 
525
+ #: contact-form-7/includes/functions.php:236
526
  msgid "Thai"
527
  msgstr ""
528
 
529
+ #: contact-form-7/includes/functions.php:237
530
  msgid "Tagalog"
531
  msgstr ""
532
 
533
+ #: contact-form-7/includes/functions.php:238
534
  msgid "Turkish"
535
  msgstr ""
536
 
537
+ #: contact-form-7/includes/functions.php:239
538
  msgid "Ukrainian"
539
  msgstr ""
540
 
541
+ #: contact-form-7/includes/functions.php:240
542
  msgid "Vietnamese"
543
  msgstr ""
544
 
modules/special-mail-tags.php CHANGED
@@ -17,7 +17,7 @@ function wpcf7_special_mail_tag( $output, $name ) {
17
  $url = untrailingslashit( home_url() );
18
  $url = preg_replace( '%(?<!:|/)/.*$%', '', $url );
19
  $url .= wpcf7_get_request_uri();
20
- $output = $url;
21
  }
22
 
23
  elseif ( '_date' == $name )
17
  $url = untrailingslashit( home_url() );
18
  $url = preg_replace( '%(?<!:|/)/.*$%', '', $url );
19
  $url .= wpcf7_get_request_uri();
20
+ $output = esc_url( $url );
21
  }
22
 
23
  elseif ( '_date' == $name )
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: 3.2
6
- Tested up to: 3.2.1
7
- Stable tag: 3.0
8
 
9
  Just another contact form plugin. Simple but flexible.
10
 
@@ -40,6 +40,7 @@ It is hard to continue development and support for this plugin without contribut
40
  * Czech (cs_CZ) - Korry, [Radovan Fiser](http://algymsa.cz/), [Tomas Vesely](http://www.mcmotylek.cz/)
41
  * Danish (da_DK) - [Jens Griebel](http://www.kompas-it.dk/), [Georg S. Adamsen](http://wordpress.blogos.dk/)
42
  * Dutch (nl_NL) - [Chris Devriese](http://www.100it.be/), [Martin Hein](http://www.split-a-pixel.nl/), [Rene](http://wpwebshop.com/)
 
43
  * Estonian (et) - [Peeter Rahuvarm](http://www.kraabus.ee), Egon Elbre
44
  * Finnish (fi) - [Miika Turunen](http://www.webwork.fi/), [Mediajalostamo](http://www.mediajalostamo.fi/)
45
  * French (fr_FR) - [Jillij](http://www.jillij.com/), [Oncle Tom](http://case.oncle-tom.net/), [Maître Mô](http://maitremo.fr/)
@@ -68,13 +69,13 @@ It is hard to continue development and support for this plugin without contribut
68
  * Romanian (ro_RO) - [Stas Sushkov](http://stas.nerd.ro/), [Anunturi Jibo](http://www.jibo.ro/)
69
  * Serbian (sr_RS) - [Vedran](http://www.seorabbit.com/), [Aleksandar Urošević](http://blog.urosevic.net/)
70
  * Sinhala (si_LK) - [Nitin Aggarwal](http://offshoreally.com/)
71
- * Slovak (sk) - [Patrik Bóna](http://www.mrhead.sk/)
72
  * Slovene (sl_SI) - [Mihael Simonič](http://smihael.bplaced.net)
73
  * Spanish (es_ES) - [Jordi Sancho](http://www.qasolutions.net/blog), [Vladimir Prieto](http://vladimir.prie.to/), [Federico Mikaelian](http://www.fedemika.com.ar/), [Matias Baldanza](http://matiasbaldanza.com/), [Carlos Agnese](http://albumdecarlitos.com.ar/)
74
  * Swedish (sv_SE) - [Fredrik Jonsson](http://www.fredda-o-ac.se/), [the Swedish community](http://wp-support.se/)
75
  * Tagalog (tl) - [Rupert Agnew Lanuza](http://wheretobuy.com.ph/)
76
  * Tamil (ta) - [Nitin Aggarwal](http://offshoreally.com/)
77
- * Thai (th) - [kazama](http://blog.wordthai.com/)
78
  * Turkish (tr_TR) - [Roman Neumuller](http://katpatuka.wordpress.com), [Hasan Yılmaz](http://hedefturkce.com/), [Emin Buğra Saral](http://www.rahmetli.info/)
79
  * Ukrainian (uk) - [Andrey Kovba](http://myserver.com.ua/), [Ukrainian WordPress localization team](http://wordpress.co.ua/plugins/contact-form-7.html)
80
  * Vietnamese (vi) - Thanh Hải, Hà, [Khang Minh](http://betterwp.net/)
@@ -107,6 +108,19 @@ Do you have questions or issues with Contact Form 7? Use these support channels
107
 
108
  == Changelog ==
109
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  = 3.0.1 =
111
 
112
  * Removed unused icl.php file from modules folder.
3
  Donate link: http://contactform7.com/donate/
4
  Tags: contact, form, contact form, feedback, email, ajax, captcha, akismet, multilingual
5
  Requires at least: 3.2
6
+ Tested up to: 3.3
7
+ Stable tag: 3.0.2
8
 
9
  Just another contact form plugin. Simple but flexible.
10
 
40
  * Czech (cs_CZ) - Korry, [Radovan Fiser](http://algymsa.cz/), [Tomas Vesely](http://www.mcmotylek.cz/)
41
  * Danish (da_DK) - [Jens Griebel](http://www.kompas-it.dk/), [Georg S. Adamsen](http://wordpress.blogos.dk/)
42
  * Dutch (nl_NL) - [Chris Devriese](http://www.100it.be/), [Martin Hein](http://www.split-a-pixel.nl/), [Rene](http://wpwebshop.com/)
43
+ * Esperanto (eo_EO) - Arkadiusz Zychewicz
44
  * Estonian (et) - [Peeter Rahuvarm](http://www.kraabus.ee), Egon Elbre
45
  * Finnish (fi) - [Miika Turunen](http://www.webwork.fi/), [Mediajalostamo](http://www.mediajalostamo.fi/)
46
  * French (fr_FR) - [Jillij](http://www.jillij.com/), [Oncle Tom](http://case.oncle-tom.net/), [Maître Mô](http://maitremo.fr/)
69
  * Romanian (ro_RO) - [Stas Sushkov](http://stas.nerd.ro/), [Anunturi Jibo](http://www.jibo.ro/)
70
  * Serbian (sr_RS) - [Vedran](http://www.seorabbit.com/), [Aleksandar Urošević](http://blog.urosevic.net/)
71
  * Sinhala (si_LK) - [Nitin Aggarwal](http://offshoreally.com/)
72
+ * Slovak (sk_SK) - [Patrik Bóna](http://www.mrhead.sk/)
73
  * Slovene (sl_SI) - [Mihael Simonič](http://smihael.bplaced.net)
74
  * Spanish (es_ES) - [Jordi Sancho](http://www.qasolutions.net/blog), [Vladimir Prieto](http://vladimir.prie.to/), [Federico Mikaelian](http://www.fedemika.com.ar/), [Matias Baldanza](http://matiasbaldanza.com/), [Carlos Agnese](http://albumdecarlitos.com.ar/)
75
  * Swedish (sv_SE) - [Fredrik Jonsson](http://www.fredda-o-ac.se/), [the Swedish community](http://wp-support.se/)
76
  * Tagalog (tl) - [Rupert Agnew Lanuza](http://wheretobuy.com.ph/)
77
  * Tamil (ta) - [Nitin Aggarwal](http://offshoreally.com/)
78
+ * Thai (th) - [kazama](http://blog.wordthai.com/), [ToshiK](http://www.tuntikorn.com/)
79
  * Turkish (tr_TR) - [Roman Neumuller](http://katpatuka.wordpress.com), [Hasan Yılmaz](http://hedefturkce.com/), [Emin Buğra Saral](http://www.rahmetli.info/)
80
  * Ukrainian (uk) - [Andrey Kovba](http://myserver.com.ua/), [Ukrainian WordPress localization team](http://wordpress.co.ua/plugins/contact-form-7.html)
81
  * Vietnamese (vi) - Thanh Hải, Hà, [Khang Minh](http://betterwp.net/)
108
 
109
  == Changelog ==
110
 
111
+ = 3.0.2 =
112
+
113
+ * Show alert messages when you use it on old version of WordPress.
114
+ * Introduce wpcf7_is_rtl() to avoid “not exist” error of is_rtl().
115
+ * Take back data conversion from Contact Form 7 1.x.
116
+ * Normalize newline characters to \n (line feed) on save (fix export/import problem).
117
+ * Rewrite wpcf7_admin_url() and use menu_page_url() inside it.
118
+ * Use wp_enqueue_scripts and admin_enqueue_scripts action hooks instead of wp_print_styles and admin_print_styles.
119
+ * Use wp_safe_redirect() instead of wp_redirect().
120
+ * Updated jquery.form.js to 2.94.
121
+ * Translations for Esperanto has been created.
122
+ * Translations for German, Japanese, Malay, Thai, Slovak, and Hungarian have been updated.
123
+
124
  = 3.0.1 =
125
 
126
  * Removed unused icl.php file from modules folder.
settings.php CHANGED
@@ -1,29 +1,5 @@
1
  <?php
2
 
3
- function wpcf7_plugin_path( $path = '' ) {
4
- return path_join( WPCF7_PLUGIN_DIR, trim( $path, '/' ) );
5
- }
6
-
7
- function wpcf7_plugin_url( $path = '' ) {
8
- return plugins_url( $path, WPCF7_PLUGIN_BASENAME );
9
- }
10
-
11
- function wpcf7_admin_url( $query = array() ) {
12
- global $plugin_page;
13
-
14
- if ( ! isset( $query['page'] ) )
15
- $query['page'] = $plugin_page;
16
-
17
- $path = 'admin.php';
18
-
19
- if ( $query = build_query( $query ) )
20
- $path .= '?' . $query;
21
-
22
- $url = admin_url( $path );
23
-
24
- return esc_url_raw( $url );
25
- }
26
-
27
  function wpcf7() {
28
  global $wpdb, $wpcf7;
29
 
@@ -124,11 +100,6 @@ function wpcf7_upgrade() {
124
  $opt['version'] = $new_ver;
125
 
126
  update_option( 'wpcf7', $opt );
127
-
128
- if ( is_admin() && isset( $_GET['page'] ) && 'wpcf7' == $_GET['page'] ) {
129
- wp_redirect( wpcf7_admin_url( array( 'page' => 'wpcf7' ) ) );
130
- exit();
131
- }
132
  }
133
 
134
  add_action( 'wpcf7_upgrade', 'wpcf7_convert_to_cpt', 10, 2 );
@@ -139,14 +110,19 @@ function wpcf7_convert_to_cpt( $new_ver, $old_ver ) {
139
  if ( ! version_compare( $old_ver, '3.0-dev', '<' ) )
140
  return;
141
 
142
- $table_name = $wpdb->prefix . "contact_form_7";
143
 
144
- if ( ! $wpdb->get_var( "SHOW TABLES LIKE '$table_name'" ) )
145
- return;
146
 
147
- $old_rows = $wpdb->get_results( "SELECT * FROM $table_name" );
 
 
 
 
 
 
148
 
149
- foreach ( $old_rows as $row ) {
150
  $q = "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_old_cf7_unit_id'"
151
  . $wpdb->prepare( " AND meta_value = %d", $row->cf7_unit_id );
152
 
@@ -162,12 +138,13 @@ function wpcf7_convert_to_cpt( $new_ver, $old_ver ) {
162
 
163
  if ( $post_id ) {
164
  update_post_meta( $post_id, '_old_cf7_unit_id', $row->cf7_unit_id );
165
- update_post_meta( $post_id, 'form', maybe_unserialize( $row->form ) );
166
- update_post_meta( $post_id, 'mail', maybe_unserialize( $row->mail ) );
167
- update_post_meta( $post_id, 'mail_2', maybe_unserialize( $row->mail_2 ) );
168
- update_post_meta( $post_id, 'messages', maybe_unserialize( $row->messages ) );
169
- update_post_meta( $post_id, 'additional_settings',
170
- maybe_unserialize( $row->additional_settings ) );
 
171
  }
172
  }
173
  }
1
  <?php
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  function wpcf7() {
4
  global $wpdb, $wpcf7;
5
 
100
  $opt['version'] = $new_ver;
101
 
102
  update_option( 'wpcf7', $opt );
 
 
 
 
 
103
  }
104
 
105
  add_action( 'wpcf7_upgrade', 'wpcf7_convert_to_cpt', 10, 2 );
110
  if ( ! version_compare( $old_ver, '3.0-dev', '<' ) )
111
  return;
112
 
113
+ $old_rows = array();
114
 
115
+ $table_name = $wpdb->prefix . "contact_form_7";
 
116
 
117
+ if ( $wpdb->get_var( "SHOW TABLES LIKE '$table_name'" ) ) {
118
+ $old_rows = $wpdb->get_results( "SELECT * FROM $table_name" );
119
+ } elseif ( ( $opt = get_option( 'wpcf7' ) ) && ! empty( $opt['contact_forms'] ) ) {
120
+ foreach ( (array) $opt['contact_forms'] as $key => $value ) {
121
+ $old_rows[] = (object) array_merge( $value, array( 'cf7_unit_id' => $key ) );
122
+ }
123
+ }
124
 
125
+ foreach ( (array) $old_rows as $row ) {
126
  $q = "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_old_cf7_unit_id'"
127
  . $wpdb->prepare( " AND meta_value = %d", $row->cf7_unit_id );
128
 
138
 
139
  if ( $post_id ) {
140
  update_post_meta( $post_id, '_old_cf7_unit_id', $row->cf7_unit_id );
141
+
142
+ $metas = array( 'form', 'mail', 'mail_2', 'messages', 'additional_settings' );
143
+
144
+ foreach ( $metas as $meta ) {
145
+ update_post_meta( $post_id, $meta,
146
+ wpcf7_normalize_newline_deep( maybe_unserialize( $row->{$meta} ) ) );
147
+ }
148
  }
149
  }
150
  }
wp-contact-form-7.php CHANGED
@@ -7,7 +7,7 @@ Author: Takayuki Miyoshi
7
  Author URI: http://ideasilo.wordpress.com/
8
  Text Domain: wpcf7
9
  Domain Path: /languages/
10
- Version: 3.0.1
11
  */
12
 
13
  /* Copyright 2007-2011 Takayuki Miyoshi (email: takayukister at gmail.com)
@@ -27,7 +27,9 @@ Version: 3.0.1
27
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28
  */
29
 
30
- define( 'WPCF7_VERSION', '3.0.1' );
 
 
31
 
32
  if ( ! defined( 'WPCF7_PLUGIN_BASENAME' ) )
33
  define( 'WPCF7_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
7
  Author URI: http://ideasilo.wordpress.com/
8
  Text Domain: wpcf7
9
  Domain Path: /languages/
10
+ Version: 3.0.2
11
  */
12
 
13
  /* Copyright 2007-2011 Takayuki Miyoshi (email: takayukister at gmail.com)
27
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28
  */
29
 
30
+ define( 'WPCF7_VERSION', '3.0.2' );
31
+
32
+ define( 'WPCF7_REQUIRED_WP_VERSION', '3.2' );
33
 
34
  if ( ! defined( 'WPCF7_PLUGIN_BASENAME' ) )
35
  define( 'WPCF7_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );