User Submitted Posts - Version 20171105

Version Description

To upgrade User Submitted Posts, remove the old version and replace with the new version. Or just click "Update" from the Plugins screen and let WordPress do it for you automatically.

Important! The /custom/ directory is deprecated. If you are using a custom form template, please move it to /wp-content/your-theme/usp/. For more information, check out the "Custom Submission Form" section under Installation.

Note: uninstalling the plugin from the WP Plugins screen results in the removal of all settings from the WP database. Submitted posts are NOT removed if you deactivate the plugin, reset default options, or uninstall the plugins; that is, all submitted posts must be removed manually.

Download this release

Release Info

Developer specialk
Plugin Icon 128x128 User Submitted Posts
Version 20171105
Comparing to
See all releases

Code changes from version 20171104 to 20171105

readme.txt CHANGED
@@ -10,8 +10,8 @@ Donate link: https://m0n.co/donate
10
Contributors: specialk
11
Requires at least: 4.1
12
Tested up to: 4.9
13
- Stable tag: 20171104
14
- Version: 20171104
15
Requires PHP: 5.2
16
Text Domain: usp
17
Domain Path: /languages
@@ -591,6 +591,10 @@ Links, tweets and likes also appreciated. Thanks! :)
591
592
*Thank you to everyone who shares feedback for User Submitted Posts!*
593
594
**20171104**
595
596
* Fixes bug involving jQuery cookie functionality
10
Contributors: specialk
11
Requires at least: 4.1
12
Tested up to: 4.9
13
+ Stable tag: 20171105
14
+ Version: 20171105
15
Requires PHP: 5.2
16
Text Domain: usp
17
Domain Path: /languages
591
592
*Thank you to everyone who shares feedback for User Submitted Posts!*
593
594
+ **20171105**
595
+
596
+ - Provides Google reCAPTCHA support for older PHP versions (less than 5.3)
597
+
598
**20171104**
599
600
* Fixes bug involving jQuery cookie functionality
recaptcha/connect-new.php ADDED
@@ -0,0 +1,67 @@
1
+ <?php // Google reCAPTCHA for PHP >= 5.3.0
2
+
3
+ // PHP Global space backslash class requires >= 5.3.0
4
+
5
+ // Google reCAPTCHA 1.1.3 @ https://github.com/google/recaptcha
6
+
7
+ // Supports allow_url_fopen/file_get_contents and cURL
8
+
9
+ if (!defined('ABSPATH')) die();
10
+
11
+ require_once('autoload.php');
12
+
13
+ if (ini_get('allow_url_fopen')) {
14
+
15
+ // file_get_contents: allow_url_fopen = on
16
+ $recaptcha = new \ReCaptcha\ReCaptcha($private);
17
+
18
+ } elseif (extension_loaded('curl')) {
19
+
20
+ // cURL: allow_url_fopen = off
21
+ $recaptcha = new \ReCaptcha\ReCaptcha($private, new \ReCaptcha\RequestMethod\CurlPost());
22
+
23
+ } else {
24
+
25
+ $recaptcha = null;
26
+
27
+ error_log('WP Plugin USP: Google reCAPTCHA: allow_url_fopen and curl both disabled!', 0);
28
+
29
+ }
30
+
31
+ if (isset($recaptcha)) {
32
+
33
+ $response = $recaptcha->verify($_POST['g-recaptcha-response'], usp_get_ip_address());
34
+
35
+ } else {
36
+
37
+ $response = null;
38
+
39
+ error_log('WP Plugin USP: Google reCAPTCHA: $recaptcha variable not set!', 0);
40
+
41
+ }
42
+
43
+ if ($response->isSuccess()) {
44
+
45
+ return true;
46
+
47
+ } else {
48
+
49
+ $errors = $response->getErrorCodes();
50
+
51
+ if (!empty($errors) && is_array($errors)) {
52
+
53
+ foreach ($errors as $error) {
54
+
55
+ error_log('WP Plugin USP: Google reCAPTCHA: '. $error, 0);
56
+
57
+ }
58
+
59
+ } else {
60
+
61
+ error_log('WP Plugin USP: Google reCAPTCHA: '. $errors, 0);
62
+
63
+ }
64
+
65
+ }
66
+
67
+ return false;
recaptcha/connect-old.php ADDED
@@ -0,0 +1,62 @@
1
+ <?php // Google reCAPTCHA for PHP < 5.3.0
2
+
3
+ // PHP Global space backslash class requires >= 5.3.0
4
+
5
+ // Google reCAPTCHA 2014 version
6
+
7
+ // Requires allow_url_fopen/file_get_contents
8
+
9
+ if (!defined('ABSPATH')) die();
10
+
11
+ require_once('recaptcha-old.php');
12
+
13
+ if (ini_get('allow_url_fopen')) {
14
+
15
+ // allow_url_fopen = on
16
+ $recaptcha = new ReCaptcha($private);
17
+
18
+ } else {
19
+
20
+ $recaptcha = null;
21
+
22
+ error_log('WP Plugin USP: Google reCAPTCHA: PHP less than 5.3 and allow_url_fopen disabled!', 0);
23
+
24
+ }
25
+
26
+ if (isset($recaptcha)) {
27
+
28
+ $response = $recaptcha->verifyResponse(usp_get_ip_address(), $_POST['g-recaptcha-response']);
29
+
30
+ } else {
31
+
32
+ $response = null;
33
+
34
+ error_log('WP Plugin USP: Google reCAPTCHA: $recaptcha variable not set!', 0);
35
+
36
+ }
37
+
38
+ if ($response->success) {
39
+
40
+ return true;
41
+
42
+ } else {
43
+
44
+ $errors = $response->errorCodes;
45
+
46
+ if (!empty($errors) && is_array($errors)) {
47
+
48
+ foreach ($errors as $error) {
49
+
50
+ error_log('WP Plugin USP: Google reCAPTCHA: '. $error, 0);
51
+
52
+ }
53
+
54
+ } else {
55
+
56
+ error_log('WP Plugin USP: Google reCAPTCHA: '. $errors, 0);
57
+
58
+ }
59
+
60
+ }
61
+
62
+ return false;
recaptcha/recaptcha-old.php ADDED
@@ -0,0 +1,143 @@
1
+ <?php
2
+ /**
3
+ * This is a PHP library that handles calling reCAPTCHA.
4
+ * - Documentation and latest version
5
+ * https://developers.google.com/recaptcha/docs/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 Copyright (c) 2014, Google Inc.
12
+ * @link http://www.google.com/recaptcha
13
+ *
14
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
15
+ * of this software and associated documentation files (the "Software"), to deal
16
+ * in the Software without restriction, including without limitation the rights
17
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
18
+ * copies of the Software, and to permit persons to whom the Software is
19
+ * furnished to do so, subject to the following conditions:
20
+ *
21
+ * The above copyright notice and this permission notice shall be included in
22
+ * all copies or substantial portions of the Software.
23
+ *
24
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
29
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
30
+ * THE SOFTWARE.
31
+ */
32
+
33
+ /*
34
+
35
+ Note: changed constructor name from ReCaptcha to __construct.
36
+
37
+ */
38
+
39
+ /**
40
+ * A ReCaptchaResponse is returned from checkAnswer().
41
+ */
42
+ class ReCaptchaResponse
43
+ {
44
+ public $success;
45
+ public $errorCodes;
46
+ }
47
+
48
+ class ReCaptcha
49
+ {
50
+ private static $_signupUrl = "https://www.google.com/recaptcha/admin";
51
+ private static $_siteVerifyUrl = "https://www.google.com/recaptcha/api/siteverify?";
52
+ private $_secret;
53
+ private static $_version = "php_1.0";
54
+
55
+ /**
56
+ * Constructor.
57
+ *
58
+ * @param string $secret shared secret between site and ReCAPTCHA server.
59
+ */
60
+ function __construct($secret)
61
+ {
62
+ if ($secret == null || $secret == "") {
63
+ die("To use reCAPTCHA you must get an API key from <a href='"
64
+ . self::$_signupUrl . "'>" . self::$_signupUrl . "</a>");
65
+ }
66
+ $this->_secret=$secret;
67
+ }
68
+
69
+ /**
70
+ * Encodes the given data into a query string format.
71
+ *
72
+ * @param array $data array of string elements to be encoded.
73
+ *
74
+ * @return string - encoded request.
75
+ */
76
+ private function _encodeQS($data)
77
+ {
78
+ $req = "";
79
+ foreach ($data as $key => $value) {
80
+ $req .= $key . '=' . urlencode(stripslashes($value)) . '&';
81
+ }
82
+
83
+ // Cut the last '&'
84
+ $req=substr($req, 0, strlen($req)-1);
85
+ return $req;
86
+ }
87
+
88
+ /**
89
+ * Submits an HTTP GET to a reCAPTCHA server.
90
+ *
91
+ * @param string $path url path to recaptcha server.
92
+ * @param array $data array of parameters to be sent.
93
+ *
94
+ * @return array response
95
+ */
96
+ private function _submitHTTPGet($path, $data)
97
+ {
98
+ $req = $this->_encodeQS($data);
99
+ $response = file_get_contents($path . $req);
100
+ return $response;
101
+ }
102
+
103
+ /**
104
+ * Calls the reCAPTCHA siteverify API to verify whether the user passes
105
+ * CAPTCHA test.
106
+ *
107
+ * @param string $remoteIp IP address of end user.
108
+ * @param string $response response string from recaptcha verification.
109
+ *
110
+ * @return ReCaptchaResponse
111
+ */
112
+ public function verifyResponse($remoteIp, $response)
113
+ {
114
+ // Discard empty solution submissions
115
+ if ($response == null || strlen($response) == 0) {
116
+ $recaptchaResponse = new ReCaptchaResponse();
117
+ $recaptchaResponse->success = false;
118
+ $recaptchaResponse->errorCodes = 'missing-input';
119
+ return $recaptchaResponse;
120
+ }
121
+
122
+ $getResponse = $this->_submitHttpGet(
123
+ self::$_siteVerifyUrl,
124
+ array (
125
+ 'secret' => $this->_secret,
126
+ 'remoteip' => $remoteIp,
127
+ 'v' => self::$_version,
128
+ 'response' => $response
129
+ )
130
+ );
131
+ $answers = json_decode($getResponse, true);
132
+ $recaptchaResponse = new ReCaptchaResponse();
133
+
134
+ if (trim($answers ['success']) == true) {
135
+ $recaptchaResponse->success = true;
136
+ } else {
137
+ $recaptchaResponse->success = false;
138
+ $recaptchaResponse->errorCodes = $answers [error-codes];
139
+ }
140
+
141
+ return $recaptchaResponse;
142
+ }
143
+ }
user-submitted-posts.php CHANGED
@@ -10,8 +10,8 @@
10
Contributors: specialk
11
Requires at least: 4.1
12
Tested up to: 4.9
13
- Stable tag: 20171104
14
- Version: 20171104
15
Requires PHP: 5.2
16
Text Domain: usp
17
Domain Path: /languages
@@ -40,7 +40,7 @@ if (!defined('ABSPATH')) die();
40
41
42
define('USP_WP_VERSION', '4.1');
43
- define('USP_VERSION', '20171104');
44
define('USP_PLUGIN', esc_html__('User Submitted Posts', 'usp'));
45
define('USP_PATH', plugin_basename(__FILE__));
46
@@ -311,39 +311,13 @@ function usp_verify_recaptcha() {
311
312
if (isset($_POST['g-recaptcha-response'])) {
313
314
- // Google reCAPTCHA 1.1.3 @ https://github.com/google/recaptcha
315
- require_once(plugin_dir_path(__FILE__) .'recaptcha/autoload.php');
316
-
317
- if (ini_get('allow_url_fopen')) {
318
-
319
- // allow_url_fopen = on
320
- $recaptcha = new \ReCaptcha\ReCaptcha($private);
321
322
- } elseif (extension_loaded('curl')) {
323
-
324
- $recaptcha = new \ReCaptcha\ReCaptcha($private, new \ReCaptcha\RequestMethod\CurlPost());
325
326
} else {
327
328
- error_log('WP Plugin USP: Google reCAPTCHA: allow_url_fopen and curl both disabled!', 0);
329
-
330
- }
331
-
332
- $response = $recaptcha->verify($_POST['g-recaptcha-response'], usp_get_ip_address());
333
-
334
- if ($response->isSuccess()) {
335
-
336
- return true;
337
-
338
- } else {
339
-
340
- $errors = $response->getErrorCodes();
341
-
342
- foreach ($errors as $error) {
343
-
344
- error_log('WP Plugin USP: Google reCAPTCHA: '. $error, 0);
345
-
346
- }
347
348
}
349
10
Contributors: specialk
11
Requires at least: 4.1
12
Tested up to: 4.9
13
+ Stable tag: 20171105
14
+ Version: 20171105
15
Requires PHP: 5.2
16
Text Domain: usp
17
Domain Path: /languages
40
41
42
define('USP_WP_VERSION', '4.1');
43
+ define('USP_VERSION', '20171105');
44
define('USP_PLUGIN', esc_html__('User Submitted Posts', 'usp'));
45
define('USP_PATH', plugin_basename(__FILE__));
46
311
312
if (isset($_POST['g-recaptcha-response'])) {
313
314
+ if (version_compare(phpversion(), '5.3.0', '>=')) {
315
316
+ return require_once(plugin_dir_path(__FILE__) .'recaptcha/connect-new.php');
317
318
} else {
319
320
+ return require_once(plugin_dir_path(__FILE__) .'recaptcha/connect-old.php');
321
322
}
323