Google Captcha (reCAPTCHA) by BestWebSoft - Version 1.39

Version Description

  • 20.12.2018 =
  • Update : All functionality was updated for WordPress 5.0.1.
Download this release

Release Info

Developer bestwebsoft
Plugin Icon 128x128 Google Captcha (reCAPTCHA) by BestWebSoft
Version 1.39
Comparing to
See all releases

Code changes from version 1.38 to 1.39

google-captcha.php CHANGED
@@ -6,7 +6,7 @@ Description: Protect WordPress website forms from spam entries with Google Captc
6
  Author: BestWebSoft
7
  Text Domain: google-captcha
8
  Domain Path: /languages
9
- Version: 1.38
10
  Author URI: https://bestwebsoft.com/
11
  License: GPLv3 or later
12
  */
@@ -576,11 +576,17 @@ if ( ! function_exists( 'gglcptch_display' ) ) {
576
  });
577
  </script>';
578
  } else {
579
- require_once( 'lib/recaptchalib.php' );
580
- $content .= '<div id="gglcptch_recaptcha_' . $id . '" class="gglcptch_recaptcha"></div>';
581
- $content .= gglcptch_recaptcha_get_html( $publickey, null, is_ssl() );
582
- $deps = array();
583
- }
 
 
 
 
 
 
584
  $content .= '</div>';
585
  $gglcptch_count++;
586
 
@@ -725,38 +731,43 @@ if ( ! function_exists( 'gglcptch_check' ) ) {
725
  }
726
  }
727
  } else {
728
- $gglcptch_recaptcha_challenge_field = $gglcptch_recaptcha_response_field = '';
729
-
730
- if ( ! isset( $_POST['recaptcha_challenge_field'] ) && ! isset( $_POST['recaptcha_response_field'] ) ) {
731
- $result = array(
732
- 'response' => false,
733
- 'reason' => 'RECAPTCHA_NO_RESPONSE'
734
- );
735
- } elseif ( ! empty( $_POST['recaptcha_challenge_field'] ) && empty( $_POST['recaptcha_response_field'] ) ) {
736
- $result = array(
737
- 'response' => false,
738
- 'reason' => 'RECAPTCHA_EMPTY_RESPONSE'
739
- );
740
- } else {
741
- $gglcptch_recaptcha_challenge_field = stripslashes( esc_html( $_POST['recaptcha_challenge_field'] ) );
742
- $gglcptch_recaptcha_response_field = stripslashes( esc_html( $_POST['recaptcha_response_field'] ) );
743
-
744
- require_once( 'lib/recaptchalib.php' );
745
- $response = gglcptch_recaptcha_check_answer( $privatekey, $gglcptch_remote_addr, $gglcptch_recaptcha_challenge_field, $gglcptch_recaptcha_response_field );
746
-
747
- if ( ! $response->is_valid ) {
748
- $result = array(
749
- 'response' => false,
750
- 'reason' => $debug ? $response->error : 'VERIFICATION_FAILED'
751
- );
752
- } else {
753
- $result = array(
754
- 'response' => true,
755
- 'reason' => ''
756
- );
757
- }
758
- }
759
- }
 
 
 
 
 
760
  if ( ! $result['response'] ) {
761
  $result['errors'] = new WP_Error;
762
  if ( ! $debug && ! in_array( $result['reason'], array( 'ERROR_WRONG_SECRET', 'ERROR_NO_KEYS' ) ) ) {
6
  Author: BestWebSoft
7
  Text Domain: google-captcha
8
  Domain Path: /languages
9
+ Version: 1.39
10
  Author URI: https://bestwebsoft.com/
11
  License: GPLv3 or later
12
  */
576
  });
577
  </script>';
578
  } else {
579
+ /**
580
+ * @deprecated
581
+ * @todo remove after 01.02.2019
582
+ * Also need delete lib/recaptchalib.php'
583
+ */
584
+ // require_once( 'lib/recaptchalib.php' );
585
+ // $content .= '<div id="gglcptch_recaptcha_' . $id . '" class="gglcptch_recaptcha"></div>';
586
+ // $content .= gglcptch_recaptcha_get_html( $publickey, null, is_ssl() );
587
+ // $deps = array();
588
+ /* @todo end */
589
+ }
590
  $content .= '</div>';
591
  $gglcptch_count++;
592
 
731
  }
732
  }
733
  } else {
734
+ /**
735
+ * @deprecated *
736
+ * @todo remove after 01.02.2019
737
+ */
738
+ // $gglcptch_recaptcha_challenge_field = $gglcptch_recaptcha_response_field = '';
739
+ //
740
+ // if ( ! isset( $_POST['recaptcha_challenge_field'] ) && ! isset( $_POST['recaptcha_response_field'] ) ) {
741
+ // $result = array(
742
+ // 'response' => false,
743
+ // 'reason' => 'RECAPTCHA_NO_RESPONSE'
744
+ // );
745
+ // } elseif ( ! empty( $_POST['recaptcha_challenge_field'] ) && empty( $_POST['recaptcha_response_field'] ) ) {
746
+ // $result = array(
747
+ // 'response' => false,
748
+ // 'reason' => 'RECAPTCHA_EMPTY_RESPONSE'
749
+ // );
750
+ // } else {
751
+ // $gglcptch_recaptcha_challenge_field = stripslashes( esc_html( $_POST['recaptcha_challenge_field'] ) );
752
+ // $gglcptch_recaptcha_response_field = stripslashes( esc_html( $_POST['recaptcha_response_field'] ) );
753
+ //
754
+ // require_once( 'lib/recaptchalib.php' );
755
+ // $response = gglcptch_recaptcha_check_answer( $privatekey, $gglcptch_remote_addr, $gglcptch_recaptcha_challenge_field, $gglcptch_recaptcha_response_field );
756
+ //
757
+ // if ( ! $response->is_valid ) {
758
+ // $result = array(
759
+ // 'response' => false,
760
+ // 'reason' => $debug ? $response->error : 'VERIFICATION_FAILED'
761
+ // );
762
+ // } else {
763
+ // $result = array(
764
+ // 'response' => true,
765
+ // 'reason' => ''
766
+ // );
767
+ // }
768
+ // }
769
+ /* @todo end */
770
+ }
771
  if ( ! $result['response'] ) {
772
  $result['errors'] = new WP_Error;
773
  if ( ! $debug && ! in_array( $result['reason'], array( 'ERROR_WRONG_SECRET', 'ERROR_NO_KEYS' ) ) ) {
languages/google-captcha-es_ES.mo CHANGED
Binary file
languages/google-captcha-es_ES.po CHANGED
@@ -20,7 +20,7 @@ msgstr ""
20
  #: google-captcha.php:38 google-captcha.php:40 google-captcha.php:451
21
  #: includes/class-gglcptch-settings-tabs.php:147
22
  msgid "Google Captcha Settings"
23
- msgstr "Googe Captcha Ajustes"
24
 
25
  #: google-captcha.php:40 google-captcha.php:1060 google-captcha.php:1073
26
  #: includes/class-gglcptch-settings-tabs.php:25
20
  #: google-captcha.php:38 google-captcha.php:40 google-captcha.php:451
21
  #: includes/class-gglcptch-settings-tabs.php:147
22
  msgid "Google Captcha Settings"
23
+ msgstr "Google Captcha Ajustes"
24
 
25
  #: google-captcha.php:40 google-captcha.php:1060 google-captcha.php:1073
26
  #: includes/class-gglcptch-settings-tabs.php:25
lib/license.txt DELETED
@@ -1,22 +0,0 @@
1
- Copyright (c) 2007 reCAPTCHA -- http://recaptcha.net
2
- AUTHORS:
3
- Mike Crawford
4
- Ben Maurer
5
-
6
- Permission is hereby granted, free of charge, to any person obtaining a copy
7
- of this software and associated documentation files (the "Software"), to deal
8
- in the Software without restriction, including without limitation the rights
9
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- copies of the Software, and to permit persons to whom the Software is
11
- furnished to do so, subject to the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be included in
14
- all copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
- THE SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/recaptchalib.php DELETED
@@ -1,258 +0,0 @@
1
- <?php
2
- /*
3
- * This is a PHP library that handles calling reCAPTCHA.
4
- * - Documentation and latest version
5
- * http://recaptcha.net/plugins/php/
6
- * - Get a reCAPTCHA API Key
7
- * https://www.google.com/recaptcha/admin/create
8
- * - Discussion group
9
- * http://groups.google.com/group/recaptcha
10
- *
11
- * Copyright (c) 2007 reCAPTCHA -- http://recaptcha.net
12
- * AUTHORS:
13
- * Mike Crawford
14
- * Ben Maurer
15
- *
16
- * Permission is hereby granted, free of charge, to any person obtaining a copy
17
- * of this software and associated documentation files (the "Software"), to deal
18
- * in the Software without restriction, including without limitation the rights
19
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
20
- * copies of the Software, and to permit persons to whom the Software is
21
- * furnished to do so, subject to the following conditions:
22
- *
23
- * The above copyright notice and this permission notice shall be included in
24
- * all copies or substantial portions of the Software.
25
- *
26
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
27
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
29
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
30
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
31
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
32
- * THE SOFTWARE.
33
- */
34
-
35
- /**
36
- * Encodes the given data into a query string format
37
- * @param $data - array of string elements to be encoded
38
- * @return string - encoded request
39
- */
40
- function gglcptch_recaptcha_qsencode ($data) {
41
- $req = "";
42
- foreach ( $data as $key => $value )
43
- $req .= $key . '=' . urlencode( stripslashes($value) ) . '&';
44
-
45
- // Cut the last '&'
46
- $req=substr($req,0,strlen($req)-1);
47
- return $req;
48
- }
49
-
50
- /**
51
- * Submits an HTTP POST to a reCAPTCHA server
52
- * @param string $host
53
- * @param string $path
54
- * @param array $data
55
- * @param int port
56
- * @return array response
57
- */
58
- function gglcptch_recaptcha_http_post($host, $path, $data, $port = 80) {
59
-
60
- $req = gglcptch_recaptcha_qsencode ($data);
61
-
62
- $http_request = "POST $path HTTP/1.0\r\n";
63
- $http_request .= "Host: $host\r\n";
64
- $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
65
- $http_request .= "Content-Length: " . strlen($req) . "\r\n";
66
- $http_request .= "User-Agent: reCAPTCHA/PHP\r\n";
67
- $http_request .= "\r\n";
68
- $http_request .= $req;
69
-
70
- $response = '';
71
- if( false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) {
72
- die ('Could not open socket');
73
- }
74
-
75
- fwrite($fs, $http_request);
76
-
77
- while ( !feof($fs) )
78
- $response .= fgets($fs, 1160); // One TCP-IP packet
79
- fclose($fs);
80
- $response = explode("\r\n\r\n", $response, 2);
81
-
82
- return $response;
83
- }
84
-
85
- /**
86
- * Gets the challenge HTML (javascript and non-javascript version).
87
- * This is called from the browser, and the resulting reCAPTCHA HTML widget
88
- * is embedded within the HTML form it was called from.
89
- * @param string $pubkey A public key for reCAPTCHA
90
- * @param string $error The error given by reCAPTCHA (optional, default is null)
91
- * @param boolean $use_ssl Should the request be made over ssl? (optional, default is false)
92
- * @return string - The HTML to be embedded in the user's form.
93
- */
94
- function gglcptch_recaptcha_get_html ($pubkey, $error = null, $use_ssl = false)
95
- {
96
- if ($pubkey == null || $pubkey == '') {
97
- die ("To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>");
98
- }
99
-
100
- if ($use_ssl) {
101
- $server = "https://www.google.com/recaptcha/api";
102
- } else {
103
- $server = "http://www.google.com/recaptcha/api";
104
- }
105
-
106
- $errorpart = "";
107
- if ($error) {
108
- $errorpart = "&amp;error=" . $error;
109
- }
110
- return '<noscript>
111
- <iframe src="'. $server . '/noscript?k=' . $pubkey . $errorpart . '" height="300" width="320" frameborder="0"></iframe><br/>
112
- <textarea name="recaptcha_challenge_field" rows="3" cols="40" style="width: 320px !important; border: 1px solid #333 !important; resize: none !important;"></textarea>
113
- <input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>
114
- </noscript>';
115
- }
116
-
117
- /**
118
- * A gglcptch_ReCaptchaResponse is returned from gglcptch_recaptcha_check_answer()
119
- */
120
- class gglcptch_ReCaptchaResponse {
121
- var $is_valid;
122
- var $error;
123
- }
124
-
125
- /**
126
- * Calls an HTTP POST function to verify if the user's guess was correct
127
- * @param string $privkey
128
- * @param string $remoteip
129
- * @param string $challenge
130
- * @param string $response
131
- * @param array $extra_params an array of extra variables to post to the server
132
- * @return gglcptch_ReCaptchaResponse
133
- */
134
- function gglcptch_recaptcha_check_answer ($privkey, $remoteip, $challenge, $response, $extra_params = array())
135
- {
136
- if ($privkey == null || $privkey == '') {
137
- die ("To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>");
138
- }
139
-
140
- if ($remoteip == null || $remoteip == '') {
141
- die ("For security reasons, you must pass the remote ip to reCAPTCHA");
142
- }
143
-
144
-
145
-
146
- //discard spam submissions
147
- if ($challenge == null || strlen($challenge) == 0 || $response == null || strlen($response) == 0) {
148
- $recaptcha_response = new gglcptch_ReCaptchaResponse();
149
- $recaptcha_response->is_valid = false;
150
- $recaptcha_response->error = 'incorrect-captcha-sol';
151
- return $recaptcha_response;
152
- }
153
-
154
- $response = gglcptch_recaptcha_http_post ("www.google.com", "/recaptcha/api/verify",
155
- array (
156
- 'privatekey' => $privkey,
157
- 'remoteip' => $remoteip,
158
- 'challenge' => $challenge,
159
- 'response' => $response
160
- ) + $extra_params
161
- );
162
-
163
- $answers = explode ("\n", $response [1]);
164
- $recaptcha_response = new gglcptch_ReCaptchaResponse();
165
-
166
- if (trim ($answers [0]) == 'true') {
167
- $recaptcha_response->is_valid = true;
168
- }
169
- else {
170
- $recaptcha_response->is_valid = false;
171
- $recaptcha_response->error = $answers [1];
172
- }
173
- return $recaptcha_response;
174
-
175
- }
176
-
177
- /**
178
- * gets a URL where the user can sign up for reCAPTCHA. If your application
179
- * has a configuration page where you enter a key, you should provide a link
180
- * using this function.
181
- * @param string $domain The domain where the page is hosted
182
- * @param string $appname The name of your application
183
- */
184
- function gglcptch_recaptcha_get_signup_url ($domain = null, $appname = null) {
185
- return "https://www.google.com/recaptcha/admin/create?" . gglcptch_recaptcha_qsencode (array ('domains' => $domain, 'app' => $appname));
186
- }
187
-
188
- function gglcptch_recaptcha_aes_pad($val) {
189
- $block_size = 16;
190
- $numpad = $block_size - (strlen ($val) % $block_size);
191
- return str_pad($val, strlen ($val) + $numpad, chr($numpad));
192
- }
193
-
194
- /* Mailhide related code */
195
-
196
- function gglcptch_recaptcha_aes_encrypt($val,$ky) {
197
- if (! function_exists ("mcrypt_encrypt")) {
198
- die ("To use reCAPTCHA Mailhide, you need to have the mcrypt php module installed.");
199
- }
200
- $mode=MCRYPT_MODE_CBC;
201
- $enc=MCRYPT_RIJNDAEL_128;
202
- $val=gglcptch_recaptcha_aes_pad($val);
203
- return mcrypt_encrypt($enc, $ky, $val, $mode, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");
204
- }
205
-
206
-
207
- function gglcptch_recaptcha_mailhide_urlbase64 ($x) {
208
- return strtr(base64_encode ($x), '+/', '-_');
209
- }
210
-
211
- /* gets the reCAPTCHA Mailhide url for a given email, public key and private key */
212
- function gglcptch_recaptcha_mailhide_url($pubkey, $privkey, $email) {
213
- if ($pubkey == '' || $pubkey == null || $privkey == "" || $privkey == null) {
214
- die ("To use reCAPTCHA Mailhide, you have to sign up for a public and private key, " .
215
- "you can do so at <a href='http://www.google.com/recaptcha/mailhide/apikey'>http://www.google.com/recaptcha/mailhide/apikey</a>");
216
- }
217
-
218
-
219
- $ky = pack('H*', $privkey);
220
- $cryptmail = gglcptch_recaptcha_aes_encrypt ($email, $ky);
221
-
222
- return "http://www.google.com/recaptcha/mailhide/d?k=" . $pubkey . "&c=" . gglcptch_recaptcha_mailhide_urlbase64 ($cryptmail);
223
- }
224
-
225
- /**
226
- * gets the parts of the email to expose to the user.
227
- * eg, given johndoe@example,com return ["john", "example.com"].
228
- * the email is then displayed as john...@example.com
229
- */
230
- function gglcptch_recaptcha_mailhide_email_parts ($email) {
231
- $arr = preg_split("/@/", $email );
232
-
233
- if (strlen ($arr[0]) <= 4) {
234
- $arr[0] = substr ($arr[0], 0, 1);
235
- } else if (strlen ($arr[0]) <= 6) {
236
- $arr[0] = substr ($arr[0], 0, 3);
237
- } else {
238
- $arr[0] = substr ($arr[0], 0, 4);
239
- }
240
- return $arr;
241
- }
242
-
243
- /**
244
- * Gets html to display an email address given a public an private key.
245
- * to get a key, go to:
246
- *
247
- * http://www.google.com/recaptcha/mailhide/apikey
248
- */
249
- function gglcptch_recaptcha_mailhide_html($pubkey, $privkey, $email) {
250
- $emailparts = gglcptch_recaptcha_mailhide_email_parts ($email);
251
- $url = gglcptch_recaptcha_mailhide_url ($pubkey, $privkey, $email);
252
-
253
- return htmlentities($emailparts[0]) . "<a href='" . htmlentities ($url) .
254
- "' onclick=\"window.open('" . htmlentities ($url) . "', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;\" title=\"Reveal this e-mail address\">...</a>@" . htmlentities ($emailparts [1]);
255
-
256
- }
257
-
258
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: bestwebsoft
3
  Donate link: https://bestwebsoft.com/donate/
4
  Tags: anti-spam security, antispam, recaptcha, captcha, captha, Invisible reCaptcha, Invisible captcha, Invisibl reCaptcha, comment, cpatcha, google catcha, Invisible re captcha, recaptcha version3
5
  Requires at least: 3.9
6
- Tested up to: 5.0
7
- Stable tag: 1.38
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -45,7 +45,7 @@ http://www.youtube.com/watch?v=qwHsW3IJ7gQ
45
  * Hide Google Captcha (reCAPTCHA) in your forms for certain user roles
46
  * Supports Google Captcha (reCAPTCHA):
47
  * Version 2
48
- * Version 3 [NEW]
49
  * Invisible reCAPTCHA
50
  * Add custom code via plugin settings page
51
  * Compatible with latest WordPress version
@@ -259,6 +259,9 @@ Please make sure that the problem hasn't been discussed yet on our forum (<https
259
 
260
  == Changelog ==
261
 
 
 
 
262
  = V1.38 - 26.11.2018 =
263
  * NEW : Google Captcha (reCAPTCHA) Version 3 has been added.
264
 
@@ -431,6 +434,9 @@ Please make sure that the problem hasn't been discussed yet on our forum (<https
431
 
432
  == Upgrade Notice ==
433
 
 
 
 
434
  = V1.38 =
435
  * New features added.
436
 
3
  Donate link: https://bestwebsoft.com/donate/
4
  Tags: anti-spam security, antispam, recaptcha, captcha, captha, Invisible reCaptcha, Invisible captcha, Invisibl reCaptcha, comment, cpatcha, google catcha, Invisible re captcha, recaptcha version3
5
  Requires at least: 3.9
6
+ Tested up to: 5.0.1
7
+ Stable tag: 1.39
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
45
  * Hide Google Captcha (reCAPTCHA) in your forms for certain user roles
46
  * Supports Google Captcha (reCAPTCHA):
47
  * Version 2
48
+ * Version 3
49
  * Invisible reCAPTCHA
50
  * Add custom code via plugin settings page
51
  * Compatible with latest WordPress version
259
 
260
  == Changelog ==
261
 
262
+ = V1.39 - 20.12.2018 =
263
+ * Update : All functionality was updated for WordPress 5.0.1.
264
+
265
  = V1.38 - 26.11.2018 =
266
  * NEW : Google Captcha (reCAPTCHA) Version 3 has been added.
267
 
434
 
435
  == Upgrade Notice ==
436
 
437
+ = V1.39 =
438
+ * The compatibility with new WordPress version updated.
439
+
440
  = V1.38 =
441
  * New features added.
442
 
screenshot-7.png CHANGED
Binary file
screenshot-8.png CHANGED
Binary file