Version Description
March 16 2020 = * New: Setting which disallow sub-sites administrators to manage plugin settings. * New: Add custom title for message. * Mod: New headers for spam scan tabs. * Fix: ARM form login check. * Fix: For GET requests in HTTP API. * Fix: Getting variables in Get and Server classes. * Fix: SFW update system. * Fix: Empty connection error in Cleantalk/Antispam/API.
Download this release
Release Info
Developer | shagimuratov |
Plugin | Spam protection, AntiSpam, FireWall by CleanTalk |
Version | 5.135 |
Comparing to | |
See all releases |
Code changes from version 5.134 to 5.135
- cleantalk.php +11 -7
- css/cleantalk-admin-settings-page.min.css +1 -1
- inc/cleantalk-admin.php +9 -3
- inc/cleantalk-ajax.php +3 -1
- inc/cleantalk-common.php +16 -2
- inc/cleantalk-find-spam.php +2 -2
- inc/cleantalk-public.php +3 -3
- inc/cleantalk-settings.php +18 -21
- inc/find-spam/ClassCleantalkFindSpamPage.php +2 -2
- lib/Cleantalk/Antispam/API.php +8 -6
- lib/Cleantalk/Antispam/Helper.php +1 -0
- lib/Cleantalk/Antispam/Integrations/ElfsightContactForm.php +23 -0
- lib/Cleantalk/Common/Get.php +1 -1
- lib/Cleantalk/Common/Server.php +2 -2
- lib/CleantalkState.php +3 -2
- readme.txt +14 -4
cleantalk.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Anti-Spam by CleanTalk
|
4 |
Plugin URI: https://cleantalk.org
|
5 |
Description: Max power, all-in-one, no Captcha, premium anti-spam plugin. No comment spam, no registration spam, no contact spam, protects any WordPress forms.
|
6 |
-
Version: 5.
|
7 |
Author: СleanTalk <welcome@cleantalk.org>
|
8 |
Author URI: https://cleantalk.org
|
9 |
Text Domain: cleantalk
|
@@ -187,8 +187,9 @@ if( !defined( 'CLEANTALK_PLUGIN_DIR' ) ){
|
|
187 |
}
|
188 |
|
189 |
$apbct_active_integrations = array(
|
190 |
-
'ContactBank'
|
191 |
-
'FluentForm'
|
|
|
192 |
);
|
193 |
new \Cleantalk\Antispam\Integrations( $apbct_active_integrations );
|
194 |
|
@@ -327,8 +328,10 @@ if( !defined( 'CLEANTALK_PLUGIN_DIR' ) ){
|
|
327 |
// Check AJAX requests
|
328 |
// if User is not logged in
|
329 |
// if Unknown action or Known action with mandatory check
|
330 |
-
if( (!apbct_is_user_logged_in() || $apbct->settings['protect_logged_in'] == 1)
|
331 |
-
isset(
|
|
|
|
|
332 |
){
|
333 |
ct_ajax_hook();
|
334 |
}
|
@@ -906,8 +909,9 @@ function ct_sfw_update($immediate = false){
|
|
906 |
if($apbct->settings['spam_firewall'] == 1){
|
907 |
|
908 |
$sfw = new CleantalkSFW();
|
909 |
-
|
910 |
-
|
|
|
911 |
|
912 |
if (!$file_urls) {
|
913 |
|
3 |
Plugin Name: Anti-Spam by CleanTalk
|
4 |
Plugin URI: https://cleantalk.org
|
5 |
Description: Max power, all-in-one, no Captcha, premium anti-spam plugin. No comment spam, no registration spam, no contact spam, protects any WordPress forms.
|
6 |
+
Version: 5.135
|
7 |
Author: СleanTalk <welcome@cleantalk.org>
|
8 |
Author URI: https://cleantalk.org
|
9 |
Text Domain: cleantalk
|
187 |
}
|
188 |
|
189 |
$apbct_active_integrations = array(
|
190 |
+
'ContactBank' => array( 'hook' => 'contact_bank_frontend_ajax_call', 'ajax' => true ),
|
191 |
+
'FluentForm' => array( 'hook' => 'fluentform_validations', 'ajax' => false ),
|
192 |
+
'ElfsightContactForm' => array( 'hook' => 'elfsight_contact_form_mail', 'ajax' => true )
|
193 |
);
|
194 |
new \Cleantalk\Antispam\Integrations( $apbct_active_integrations );
|
195 |
|
328 |
// Check AJAX requests
|
329 |
// if User is not logged in
|
330 |
// if Unknown action or Known action with mandatory check
|
331 |
+
if( ( ! apbct_is_user_logged_in() || $apbct->settings['protect_logged_in'] == 1) &&
|
332 |
+
isset( $_POST['action'] ) &&
|
333 |
+
( ! in_array( $_POST['action'], $cleantalk_hooked_actions ) || in_array( $_POST['action'], $cleantalk_ajax_actions_to_check ) ) &&
|
334 |
+
! array_search( $_POST['action'], array_column( $apbct_active_integrations, 'hook' ) )
|
335 |
){
|
336 |
ct_ajax_hook();
|
337 |
}
|
909 |
if($apbct->settings['spam_firewall'] == 1){
|
910 |
|
911 |
$sfw = new CleantalkSFW();
|
912 |
+
|
913 |
+
$file_urls = isset($_GET['file_urls']) ? urldecode( $_GET['file_urls'] ) : null;
|
914 |
+
$file_urls = isset($file_urls) ? explode(',', $file_urls) : null;
|
915 |
|
916 |
if (!$file_urls) {
|
917 |
|
css/cleantalk-admin-settings-page.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.apbct_settings-field_content,.cleantalk_link-auto,.cleantalk_link-manual,.ct-warning-test-failed,.ct_rate_block,.ct_settings_banner,i.animate-spin{display:inline-block}#apbctTopWarning{margin-bottom:5px}#apbctTopWarning h3{margin:10px 0 5px}#apbctTopWarning h4{margin:10px}#apbctTopWarning h4 span{margin-top:5px}.apbct_settings-subtitle{position:relative;top:-15px;margin:0}.apbct_settings-field_wrapper{margin:15px 0}.apbct_settings-field_wrapper--sub{margin-left:30px!important}.apbct_settings__label{margin-right:10px;font-size:17px;vertical-align:text-bottom}.apbct_settings-field_content--radio{width:70%}.apbct_settings-field_title--radio{display:inline-block;margin:0;width:210px;padding-right:10px;font-size:14px;vertical-align:top}.apbct_input_text{min-width:255px;width:400px}.apbct_settings-field--api_key{font-size:14pt}.apbct_settings-long_description---show:hover{color:#aaa;cursor:pointer}.cleantalk_link{text-decoration:none;font-size:13px;line-height:26px;margin:0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.cleantalk_link-auto{background:#ccc;border-color:#999;-webkit-box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);color:#000;height:28px;-webkit-border-radius:2px;border-radius:2px}.cleantalk_link-auto:hover{color:#fff}.cleantalk_link-manual{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;-webkit-border-radius:3px;border-radius:3px;text-align:center}.cleantalk_link-manual:hover{color:#000}.cleantalk_link[disabled=disabled]{background:#5d9db5;color:#000}.apbct_status_icon{vertical-align:text-bottom;margin:0 5px 0 8px}a.ct_support_link{color:#666;margin-right:.5em;font-size:10pt;font-weight:400}.ct-warning-test-failed{position:relative;padding:5px;margin:4px;border:3px solid rgba(240,50,50,1);border-radius:5px;background-color:rgba(255,200,200,1)}.ct_settings_banner{text-align:right;width:100%;margin:1em 0;vertical-align:top}#ct_translate_plugin{margin-left:0}.ct_rate_block{width:370px;margin-right:3em;padding:.8em .8em 15px;text-align:center;border:1px dashed #666}#ct_translate_plugin .apbct_button_rate{margin-bottom:10px}.apbct_long_desc{position:absolute;background:#5a5a5a;min-width:80px;min-height:80px;max-width:500px;padding:10px;color:#fff;z-index:10}i.animate-spin{-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;font-size:25px;line-height:20px;color:rgba(120,200,230,1);margin:25px}@keyframes spin{to{transform:rotate(359deg)}}.apbct_long_desc__cancel{position:absolute;top:5px;right:5px;color:rgba(255,255,255,.5)}.apbct_long_desc__cancel:hover{color:#fff}.apbct_long_desc__angle{position:absolute;top:5px;left:-17px;width:10px;height:10px;background:#5a5a5a;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.apbct_long_desc__title{color:rgba(120,200,230,1);margin:0}
|
1 |
+
.apbct_settings-field_content,.cleantalk_link-auto,.cleantalk_link-manual,.ct-warning-test-failed,.ct_rate_block,.ct_settings_banner,i.animate-spin{display:inline-block}#apbctTopWarning{margin-bottom:5px}#apbctTopWarning h3{margin:10px 0 5px}#apbctTopWarning h4{margin:10px}#apbctTopWarning h4 span{margin-top:5px}.apbct_settings-subtitle{position:relative;top:-15px;margin:0}.apbct_settings-field_wrapper{margin:15px 0}.apbct_settings-field_wrapper--sub{margin-left:30px!important}.apbct_settings__label{margin-right:10px;font-size:17px;vertical-align:text-bottom}.apbct_settings-field_content--radio{width:70%}.apbct_settings-field_title--radio{display:inline-block;margin:0;width:210px;padding-right:10px;font-size:14px;vertical-align:top}.apbct_input_text{min-width:255px;width:400px}.apbct_settings-field--api_key{font-size:14pt}.apbct_settings-long_description---show:hover{color:#aaa;cursor:pointer}.cleantalk_link{text-decoration:none;font-size:13px;line-height:26px;margin:0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.cleantalk_link-auto{background:#ccc;border-color:#999;-webkit-box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);color:#000;height:28px;-webkit-border-radius:2px;border-radius:2px}.cleantalk_link-auto:hover{color:#fff}.cleantalk_link-manual{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;-webkit-border-radius:3px;border-radius:3px;text-align:center}.cleantalk_link-manual:hover{color:#000}.cleantalk_link[disabled=disabled]{background:#5d9db5;color:#000}.apbct_status_icon{vertical-align:text-bottom;margin:0 5px 0 8px}a.ct_support_link{color:#666;margin-right:.5em;font-size:10pt;font-weight:400}.ct-warning-test-failed{position:relative;padding:5px;margin:4px;border:3px solid rgba(240,50,50,1);border-radius:5px;background-color:rgba(255,200,200,1)}.ct_settings_banner{text-align:right;width:100%;margin:1em 0;vertical-align:top}#ct_translate_plugin{margin-left:0}.ct_rate_block{width:370px;margin-right:3em;padding:.8em .8em 15px;text-align:center;border:1px dashed #666}#ct_translate_plugin .apbct_button_rate{margin-bottom:10px}.apbct_long_desc{position:absolute;background:#5a5a5a;min-width:80px;min-height:80px;max-width:500px;padding:10px;color:#fff;z-index:10}i.animate-spin{-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;font-size:25px;line-height:20px;color:rgba(120,200,230,1);margin:25px}@keyframes spin{to{transform:rotate(359deg)}}.apbct_long_desc__cancel{position:absolute;top:5px;right:5px;color:rgba(255,255,255,.5)}.apbct_long_desc__cancel:hover{color:#fff}.apbct_long_desc__angle{position:absolute;top:5px;left:-17px;width:10px;height:10px;background:#5a5a5a;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.apbct_long_desc__title{color:rgba(120,200,230,1);margin:0}.apbct_settings-field_content,.cleantalk_link-auto,.cleantalk_link-manual,.ct-warning-test-failed,.ct_rate_block,.ct_settings_banner,i.animate-spin{display:inline-block}#apbctTopWarning{margin-bottom:5px}#apbctTopWarning h3{margin:10px 0 5px}#apbctTopWarning h4{margin:10px}#apbctTopWarning h4 span{margin-top:5px}.apbct_settings-subtitle{position:relative;top:-15px;margin:0}.apbct_settings-field_wrapper{margin:15px 0}.apbct_settings-field_wrapper--sub{margin-left:30px!important}.apbct_settings__label{margin-right:10px;font-size:17px;vertical-align:text-bottom}.apbct_settings-field_content--radio{width:70%}.apbct_settings-field_title--radio{display:inline-block;margin:0;width:210px;padding-right:10px;font-size:14px;vertical-align:top}.apbct_input_text{min-width:255px;width:400px}.apbct_settings-field--api_key{font-size:14pt}.apbct_settings-long_description---show:hover{color:#aaa;cursor:pointer}.cleantalk_link{text-decoration:none;font-size:13px;line-height:26px;margin:0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.cleantalk_link-auto{background:#ccc;border-color:#999;-webkit-box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);color:#000;height:28px;-webkit-border-radius:2px;border-radius:2px}.cleantalk_link-auto:hover{color:#fff}.cleantalk_link-manual{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;-webkit-border-radius:3px;border-radius:3px;text-align:center}.cleantalk_link-manual:hover{color:#000}.cleantalk_link[disabled=disabled]{background:#5d9db5;color:#000}.apbct_status_icon{vertical-align:text-bottom;margin:0 5px 0 8px}a.ct_support_link{color:#666;margin-right:.5em;font-size:10pt;font-weight:400}.ct-warning-test-failed{position:relative;padding:5px;margin:4px;border:3px solid rgba(240,50,50,1);border-radius:5px;background-color:rgba(255,200,200,1)}.ct_settings_banner{text-align:right;width:100%;margin:1em 0;vertical-align:top}#ct_translate_plugin{margin-left:0}.ct_rate_block{width:370px;margin-right:3em;padding:.8em .8em 15px;text-align:center;border:1px dashed #666}#ct_translate_plugin .apbct_button_rate{margin-bottom:10px}.apbct_long_desc{position:absolute;background:#5a5a5a;min-width:80px;min-height:80px;max-width:500px;padding:10px;color:#fff;z-index:10}i.animate-spin{-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;font-size:25px;line-height:20px;color:rgba(120,200,230,1);margin:25px}@keyframes spin{to{transform:rotate(359deg)}}.apbct_long_desc__cancel{position:absolute;top:5px;right:5px;color:rgba(255,255,255,.5)}.apbct_long_desc__cancel:hover{color:#fff}.apbct_long_desc__angle{position:absolute;top:5px;left:-17px;width:10px;height:10px;background:#5a5a5a;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.apbct_long_desc__title{color:rgba(120,200,230,1);margin:0}
|
inc/cleantalk-admin.php
CHANGED
@@ -15,20 +15,26 @@ function apbct_add_buttons_to_comments_and_users( $unused_argument ) {
|
|
15 |
$current_screen = get_current_screen();
|
16 |
|
17 |
if( 'users' == $current_screen->base ) {
|
18 |
-
$
|
|
|
19 |
$button_description = 'users';
|
20 |
} elseif ( 'edit-comments' == $current_screen->base ) {
|
21 |
-
$
|
|
|
22 |
$button_description = 'comments';
|
23 |
} else {
|
24 |
return;
|
25 |
}
|
26 |
|
27 |
echo '
|
28 |
-
<a href="' . $
|
29 |
<img src="' . $apbct->logo__small__colored . '" alt="Cleantalk Antispam logo" height="" style="width: 17px; vertical-align: text-bottom;" />
|
30 |
' . sprintf(__( 'Find spam %s', 'cleantalk' ), $button_description ) . '
|
31 |
</a>
|
|
|
|
|
|
|
|
|
32 |
<a href="https://cleantalk.org/my/show_requests?service_id=' . $apbct->data['service_id'] . '&int=week" target="_blank" class="button" style="margin:1px 0 0 0; display: inline-block;">
|
33 |
<img src="' . $apbct->logo__small__colored . '" alt="Cleantalk Antispam logo" height="" style="width: 17px; vertical-align: text-bottom;" />
|
34 |
' . __( 'CleanTalk Anti-Spam Log', 'cleantalk' ) . '
|
15 |
$current_screen = get_current_screen();
|
16 |
|
17 |
if( 'users' == $current_screen->base ) {
|
18 |
+
$button_url__check = $current_screen->base . '.php?page=ct_check_users';
|
19 |
+
$button_url__results = $current_screen->base . '.php?page=ct_check_users_total';
|
20 |
$button_description = 'users';
|
21 |
} elseif ( 'edit-comments' == $current_screen->base ) {
|
22 |
+
$button_url__check = $current_screen->base . '.php?page=ct_check_spam';
|
23 |
+
$button_url__results = $current_screen->base . '.php?page=ct_check_spam_total';
|
24 |
$button_description = 'comments';
|
25 |
} else {
|
26 |
return;
|
27 |
}
|
28 |
|
29 |
echo '
|
30 |
+
<a href="' . $button_url__check . '" class="button" style="margin:1px 0 0 0; display: inline-block;">
|
31 |
<img src="' . $apbct->logo__small__colored . '" alt="Cleantalk Antispam logo" height="" style="width: 17px; vertical-align: text-bottom;" />
|
32 |
' . sprintf(__( 'Find spam %s', 'cleantalk' ), $button_description ) . '
|
33 |
</a>
|
34 |
+
<a href="' . $button_url__results . '" class="button" style="margin:1px 0 0 0; display: inline-block;">
|
35 |
+
<img src="' . $apbct->logo__small__colored . '" alt="Cleantalk Antispam logo" height="" style="width: 17px; vertical-align: text-bottom;" />
|
36 |
+
' . sprintf(__( 'View spam %s', 'cleantalk' ), $button_description ) . '
|
37 |
+
</a>
|
38 |
<a href="https://cleantalk.org/my/show_requests?service_id=' . $apbct->data['service_id'] . '&int=week" target="_blank" class="button" style="margin:1px 0 0 0; display: inline-block;">
|
39 |
<img src="' . $apbct->logo__small__colored . '" alt="Cleantalk Antispam logo" height="" style="width: 17px; vertical-align: text-bottom;" />
|
40 |
' . __( 'CleanTalk Anti-Spam Log', 'cleantalk' ) . '
|
inc/cleantalk-ajax.php
CHANGED
@@ -296,6 +296,7 @@ function ct_ajax_hook($message_obj = false, $additional = false)
|
|
296 |
'wouCheckOnlineUsers', //Skip updraft admin checking users
|
297 |
'et_fb_get_shortcode_from_fb_object', //Skip generate shortcode
|
298 |
'pp_lf_process_login', //Skip login form
|
|
|
299 |
);
|
300 |
|
301 |
// Skip test if
|
@@ -313,7 +314,8 @@ function ct_ajax_hook($message_obj = false, $additional = false)
|
|
313 |
(isset($message_obj['author']) && intval($message_obj['author']) == 0) ||
|
314 |
(isset($message_obj['post_author']) && intval($message_obj['post_author']) == 0)
|
315 |
)
|
316 |
-
)
|
|
|
317 |
)
|
318 |
{
|
319 |
return false;
|
296 |
'wouCheckOnlineUsers', //Skip updraft admin checking users
|
297 |
'et_fb_get_shortcode_from_fb_object', //Skip generate shortcode
|
298 |
'pp_lf_process_login', //Skip login form
|
299 |
+
'check_email', //Ajax email checking
|
300 |
);
|
301 |
|
302 |
// Skip test if
|
314 |
(isset($message_obj['author']) && intval($message_obj['author']) == 0) ||
|
315 |
(isset($message_obj['post_author']) && intval($message_obj['post_author']) == 0)
|
316 |
)
|
317 |
+
) ||
|
318 |
+
(isset($_POST['action'], $_POST['arm_action']) && $_POST['action'] == 'arm_shortcode_form_ajax_action' && $_POST['arm_action'] == 'please-login') //arm forms skip login
|
319 |
)
|
320 |
{
|
321 |
return false;
|
inc/cleantalk-common.php
CHANGED
@@ -87,14 +87,22 @@ function apbct_base_call($params = array(), $reg_flag = false){
|
|
87 |
$sender_info = !empty($params['sender_info'])
|
88 |
? CleantalkHelper::array_merge__save_numeric_keys__recursive(apbct_get_sender_info(), (array)$params['sender_info'])
|
89 |
: apbct_get_sender_info();
|
90 |
-
|
91 |
-
//
|
92 |
if( ! empty( $params['message'] ) && is_array( $params['message'] ) ){
|
93 |
|
94 |
$params['message'] = apbct_array( $params['message'] )
|
95 |
->get_keys( $apbct->settings['exclusions__fields'], $apbct->settings['exclusions__fields__use_regexp'] )
|
96 |
->delete();
|
97 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
98 |
|
99 |
$default_params = array(
|
100 |
|
@@ -230,6 +238,12 @@ function apbct_exclusions_check($func = null){
|
|
230 |
return false;
|
231 |
}
|
232 |
|
|
|
|
|
|
|
|
|
|
|
|
|
233 |
/**
|
234 |
* Checks if reuqest URI is in exclusion list
|
235 |
*
|
87 |
$sender_info = !empty($params['sender_info'])
|
88 |
? CleantalkHelper::array_merge__save_numeric_keys__recursive(apbct_get_sender_info(), (array)$params['sender_info'])
|
89 |
: apbct_get_sender_info();
|
90 |
+
|
91 |
+
// Fields exclusions
|
92 |
if( ! empty( $params['message'] ) && is_array( $params['message'] ) ){
|
93 |
|
94 |
$params['message'] = apbct_array( $params['message'] )
|
95 |
->get_keys( $apbct->settings['exclusions__fields'], $apbct->settings['exclusions__fields__use_regexp'] )
|
96 |
->delete();
|
97 |
}
|
98 |
+
|
99 |
+
// Reversed url exclusions. Pass everything except one.
|
100 |
+
if( ! apbct_exclusions_check__url__reversed() ){
|
101 |
+
return array(
|
102 |
+
'ct' => false,
|
103 |
+
'ct_result' => new CleantalkResponse( null, null )
|
104 |
+
);
|
105 |
+
}
|
106 |
|
107 |
$default_params = array(
|
108 |
|
238 |
return false;
|
239 |
}
|
240 |
|
241 |
+
function apbct_exclusions_check__url__reversed(){
|
242 |
+
return defined( 'APBCT_URL_EXCLUSIONS__REVERSED' ) && ! \Cleantalk\Common\Server::has_string( 'REQUEST_URI', APBCT_URL_EXCLUSIONS__REVERSED )
|
243 |
+
? false
|
244 |
+
: true;
|
245 |
+
}
|
246 |
+
|
247 |
/**
|
248 |
* Checks if reuqest URI is in exclusion list
|
249 |
*
|
inc/cleantalk-find-spam.php
CHANGED
@@ -11,12 +11,12 @@ function ct_add_find_spam_pages(){
|
|
11 |
|
12 |
// Check users pages
|
13 |
$ct_check_users = add_users_page( __( "Check for spam", 'cleantalk' ), __( "Find spam users", 'cleantalk' ), 'activate_plugins', 'ct_check_users', array( 'ClassCleantalkFindSpamPage', 'showFindSpamPage' ) );
|
14 |
-
$ct_check_users_total = add_users_page( __( "
|
15 |
$ct_check_users_logs = add_users_page( __( "Scan logs", 'cleantalk' ), '', 'activate_plugins', 'ct_check_users_logs', array( 'ClassCleantalkFindSpamPage', 'showFindSpamPage' ) );
|
16 |
|
17 |
// Cheack comments pages
|
18 |
$ct_check_spam = add_comments_page( __( "Check for spam", 'cleantalk' ), __( "Find spam comments", 'cleantalk' ), 'activate_plugins', 'ct_check_spam', array( 'ClassCleantalkFindSpamPage', 'showFindSpamPage' ) );
|
19 |
-
$ct_check_spam_total = add_comments_page( __( "
|
20 |
$ct_check_spam_logs = add_comments_page( __( "Scan logs", 'cleantalk' ), '', 'activate_plugins', 'ct_check_spam_logs', array( 'ClassCleantalkFindSpamPage', 'showFindSpamPage' ) );
|
21 |
|
22 |
// Remove some pages from main menu
|
11 |
|
12 |
// Check users pages
|
13 |
$ct_check_users = add_users_page( __( "Check for spam", 'cleantalk' ), __( "Find spam users", 'cleantalk' ), 'activate_plugins', 'ct_check_users', array( 'ClassCleantalkFindSpamPage', 'showFindSpamPage' ) );
|
14 |
+
$ct_check_users_total = add_users_page( __( "Previous scan results", 'cleantalk' ), '', 'activate_plugins', 'ct_check_users_total', array( 'ClassCleantalkFindSpamPage', 'showFindSpamPage' ) );
|
15 |
$ct_check_users_logs = add_users_page( __( "Scan logs", 'cleantalk' ), '', 'activate_plugins', 'ct_check_users_logs', array( 'ClassCleantalkFindSpamPage', 'showFindSpamPage' ) );
|
16 |
|
17 |
// Cheack comments pages
|
18 |
$ct_check_spam = add_comments_page( __( "Check for spam", 'cleantalk' ), __( "Find spam comments", 'cleantalk' ), 'activate_plugins', 'ct_check_spam', array( 'ClassCleantalkFindSpamPage', 'showFindSpamPage' ) );
|
19 |
+
$ct_check_spam_total = add_comments_page( __( "Previous scan results", 'cleantalk' ), '', 'activate_plugins', 'ct_check_spam_total', array( 'ClassCleantalkFindSpamPage', 'showFindSpamPage' ) );
|
20 |
$ct_check_spam_logs = add_comments_page( __( "Scan logs", 'cleantalk' ), '', 'activate_plugins', 'ct_check_spam_logs', array( 'ClassCleantalkFindSpamPage', 'showFindSpamPage' ) );
|
21 |
|
22 |
// Remove some pages from main menu
|
inc/cleantalk-public.php
CHANGED
@@ -1318,7 +1318,7 @@ function ct_preprocess_comment($comment) {
|
|
1318 |
$ct_comment = $ct_result->comment;
|
1319 |
$ct_stop_words = $ct_result->stop_words;
|
1320 |
|
1321 |
-
$err_text = '<center
|
1322 |
$err_text .= '<script>setTimeout("history.back()", 5000);</script>';
|
1323 |
|
1324 |
// Terminate. Definitely spam.
|
@@ -1445,7 +1445,7 @@ function apbct_comment__Wordpress__changeMailNotification($notify_message, $comm
|
|
1445 |
*/
|
1446 |
function ct_die($comment_id, $comment_status) {
|
1447 |
global $ct_comment;
|
1448 |
-
|
1449 |
$err_text .= '<script>setTimeout("history.back()", 5000);</script>';
|
1450 |
if(isset($_POST['et_pb_contact_email']))
|
1451 |
{
|
@@ -1463,7 +1463,7 @@ function ct_die($comment_id, $comment_status) {
|
|
1463 |
* @param type $comment_body
|
1464 |
*/
|
1465 |
function ct_die_extended($comment_body) {
|
1466 |
-
|
1467 |
$err_text .= '<script>setTimeout("history.back()", 5000);</script>';
|
1468 |
wp_die($err_text, 'Blacklisted', array('response' => 200, 'back_link' => true));
|
1469 |
}
|
1318 |
$ct_comment = $ct_result->comment;
|
1319 |
$ct_stop_words = $ct_result->stop_words;
|
1320 |
|
1321 |
+
$err_text = '<center>' . ((defined('CLEANTALK_DISABLE_BLOCKING_TITLE') && CLEANTALK_DISABLE_BLOCKING_TITLE == true) ? '' : '<b style="color: #49C73B;">Clean</b><b style="color: #349ebf;">Talk.</b> ') . __('Spam protection', 'cleantalk') . "</center><br><br>\n" . $ct_result->comment;
|
1322 |
$err_text .= '<script>setTimeout("history.back()", 5000);</script>';
|
1323 |
|
1324 |
// Terminate. Definitely spam.
|
1445 |
*/
|
1446 |
function ct_die($comment_id, $comment_status) {
|
1447 |
global $ct_comment;
|
1448 |
+
$err_text = '<center>' . ((defined('CLEANTALK_DISABLE_BLOCKING_TITLE') && CLEANTALK_DISABLE_BLOCKING_TITLE == true) ? '' : '<b style="color: #49C73B;">Clean</b><b style="color: #349ebf;">Talk.</b> ') . __('Spam protection', 'cleantalk') . "</center><br><br>\n" . $ct_comment;
|
1449 |
$err_text .= '<script>setTimeout("history.back()", 5000);</script>';
|
1450 |
if(isset($_POST['et_pb_contact_email']))
|
1451 |
{
|
1463 |
* @param type $comment_body
|
1464 |
*/
|
1465 |
function ct_die_extended($comment_body) {
|
1466 |
+
$err_text = '<center>' . ((defined('CLEANTALK_DISABLE_BLOCKING_TITLE') && CLEANTALK_DISABLE_BLOCKING_TITLE == true) ? '' : '<b style="color: #49C73B;">Clean</b><b style="color: #349ebf;">Talk.</b> ') . __('Spam protection', 'cleantalk') . "</center><br><br>\n" . $comment_body;
|
1467 |
$err_text .= '<script>setTimeout("history.back()", 5000);</script>';
|
1468 |
wp_die($err_text, 'Blacklisted', array('response' => 200, 'back_link' => true));
|
1469 |
}
|
inc/cleantalk-settings.php
CHANGED
@@ -435,7 +435,7 @@ function apbct_settings__set_fileds__network( $fields ){
|
|
435 |
'type' => 'checkbox',
|
436 |
'title' => __('Enable White Label Mode', 'cleantalk'),
|
437 |
'description' => sprintf(__("Learn more information %shere%s.", 'cleantalk'), '<a tearget="_blank" href="https://cleantalk.org/ru/help/hosting-white-label">', '</a>'),
|
438 |
-
'childrens' => array('white_label__hoster_key', 'white_label__plugin_name', 'allow_custom_key'),
|
439 |
'network' => true,
|
440 |
),
|
441 |
'white_label__hoster_key' => array(
|
@@ -470,6 +470,14 @@ function apbct_settings__set_fileds__network( $fields ){
|
|
470 |
'disabled' => $apbct->network_settings['white_label'],
|
471 |
'network' => true,
|
472 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
473 |
)
|
474 |
)
|
475 |
);
|
@@ -1057,9 +1065,12 @@ function apbct_settings__field__draw($params = array()){
|
|
1057 |
$value_parent = $params['parent']
|
1058 |
? ($params['network'] ? $apbct->network_settings[$params['parent']] : $apbct->settings[$params['parent']])
|
1059 |
: false;
|
1060 |
-
|
1061 |
-
|
1062 |
-
$disabled = $params['
|
|
|
|
|
|
|
1063 |
|
1064 |
$childrens = $params['childrens'] ? 'apbct_setting---' . implode(",apbct_setting---",$params['childrens']) : '';
|
1065 |
$hide = $params['hide'] ? implode(",",$params['hide']) : '';
|
@@ -1109,22 +1120,7 @@ function apbct_settings__field__draw($params = array()){
|
|
1109 |
: '';
|
1110 |
|
1111 |
echo '<div class="apbct_settings-field_content apbct_settings-field_content--'.$params['type'].'">';
|
1112 |
-
|
1113 |
-
$disabled = '';
|
1114 |
-
|
1115 |
-
// Disable child option if parent is ON
|
1116 |
-
if($params['reverse_trigger']){
|
1117 |
-
if($params['parent'] && $apbct->settings[$params['parent']]){
|
1118 |
-
$disabled = ' disabled="disabled"';
|
1119 |
-
}
|
1120 |
-
|
1121 |
-
// Disable child option if parent if OFF
|
1122 |
-
}else{
|
1123 |
-
if($params['parent'] && !$apbct->settings[$params['parent']]){
|
1124 |
-
$disabled = ' disabled="disabled"';
|
1125 |
-
}
|
1126 |
-
}
|
1127 |
-
|
1128 |
foreach($params['options'] as $option){
|
1129 |
echo '<input'
|
1130 |
.' type="radio"'
|
@@ -1132,7 +1128,7 @@ function apbct_settings__field__draw($params = array()){
|
|
1132 |
." id='apbct_setting_{$params['name']}__{$option['label']}'"
|
1133 |
.' name="cleantalk_settings['.$params['name'].']"'
|
1134 |
.' value="'.$option['val'].'"'
|
1135 |
-
.
|
1136 |
.($params['childrens']
|
1137 |
? ' onchange="apbctSettingsDependencies(\'' . $childrens . '\', ' . $option['childrens_enable'] . ')"'
|
1138 |
: ''
|
@@ -1270,6 +1266,7 @@ function apbct_settings__validate($settings) {
|
|
1270 |
if(APBCT_WPMS && is_main_site()){
|
1271 |
$network_settings = array(
|
1272 |
'allow_custom_key' => $settings['allow_custom_key'],
|
|
|
1273 |
'white_label' => $settings['white_label'],
|
1274 |
'white_label__hoster_key' => $settings['white_label__hoster_key'],
|
1275 |
'white_label__plugin_name' => $settings['white_label__plugin_name'],
|
435 |
'type' => 'checkbox',
|
436 |
'title' => __('Enable White Label Mode', 'cleantalk'),
|
437 |
'description' => sprintf(__("Learn more information %shere%s.", 'cleantalk'), '<a tearget="_blank" href="https://cleantalk.org/ru/help/hosting-white-label">', '</a>'),
|
438 |
+
'childrens' => array('white_label__hoster_key', 'white_label__plugin_name', 'allow_custom_key', 'allow_custom_settings'),
|
439 |
'network' => true,
|
440 |
),
|
441 |
'white_label__hoster_key' => array(
|
470 |
'disabled' => $apbct->network_settings['white_label'],
|
471 |
'network' => true,
|
472 |
),
|
473 |
+
'allow_custom_settings' => array(
|
474 |
+
'type' => 'checkbox',
|
475 |
+
'title' => __('Allow users to manage plugin settings', 'cleantalk'),
|
476 |
+
'description' => __('Allow to change settings on child sites.', 'cleantalk'),
|
477 |
+
'display' => APBCT_WPMS && is_main_site(),
|
478 |
+
'disabled' => $apbct->network_settings['white_label'],
|
479 |
+
'network' => true,
|
480 |
+
),
|
481 |
)
|
482 |
)
|
483 |
);
|
1065 |
$value_parent = $params['parent']
|
1066 |
? ($params['network'] ? $apbct->network_settings[$params['parent']] : $apbct->settings[$params['parent']])
|
1067 |
: false;
|
1068 |
+
|
1069 |
+
// Is element is disabled
|
1070 |
+
$disabled = $params['parent'] && !$value_parent ? ' disabled="disabled"' : ''; // Strait
|
1071 |
+
$disabled = $params['parent'] && $params['reverse_trigger'] && !$value_parent ? ' disabled="disabled"' : $disabled; // Reverse logic
|
1072 |
+
$disabled = $params['disabled'] ? ' disabled="disabled"' : $disabled; // Direct disable from params
|
1073 |
+
$disabled = ! is_main_site() && $apbct->network_settings && ! $apbct->network_settings['allow_custom_settings'] ? ' disabled="disabled"' : $disabled; // Disabled by super admin on sub-sites
|
1074 |
|
1075 |
$childrens = $params['childrens'] ? 'apbct_setting---' . implode(",apbct_setting---",$params['childrens']) : '';
|
1076 |
$hide = $params['hide'] ? implode(",",$params['hide']) : '';
|
1120 |
: '';
|
1121 |
|
1122 |
echo '<div class="apbct_settings-field_content apbct_settings-field_content--'.$params['type'].'">';
|
1123 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1124 |
foreach($params['options'] as $option){
|
1125 |
echo '<input'
|
1126 |
.' type="radio"'
|
1128 |
." id='apbct_setting_{$params['name']}__{$option['label']}'"
|
1129 |
.' name="cleantalk_settings['.$params['name'].']"'
|
1130 |
.' value="'.$option['val'].'"'
|
1131 |
+
. $disabled
|
1132 |
.($params['childrens']
|
1133 |
? ' onchange="apbctSettingsDependencies(\'' . $childrens . '\', ' . $option['childrens_enable'] . ')"'
|
1134 |
: ''
|
1266 |
if(APBCT_WPMS && is_main_site()){
|
1267 |
$network_settings = array(
|
1268 |
'allow_custom_key' => $settings['allow_custom_key'],
|
1269 |
+
'allow_custom_settings' => $settings['allow_custom_settings'],
|
1270 |
'white_label' => $settings['white_label'],
|
1271 |
'white_label__hoster_key' => $settings['white_label__hoster_key'],
|
1272 |
'white_label__plugin_name' => $settings['white_label__plugin_name'],
|
inc/find-spam/ClassCleantalkFindSpamPage.php
CHANGED
@@ -103,8 +103,8 @@ class ClassCleantalkFindSpamPage
|
|
103 |
<h3><?php echo $this->spam_checker->getPageTitle(); ?></h3>
|
104 |
<div id="ct_check_tabs">
|
105 |
<ul>
|
106 |
-
<li <?php echo (1 == $this->current_tab) ? 'class="active"' : ''; ?>><a href="<?php echo $this->spam_checker->getPageScriptName(); ?>?page=ct_check_<?php echo $this->spam_checker->getPageSlug(); ?>"><?php esc_html_e( '
|
107 |
-
<li <?php echo (2 == $this->current_tab) ? 'class="active"' : ''; ?>><a href="<?php echo $this->spam_checker->getPageScriptName(); ?>?page=ct_check_<?php echo $this->spam_checker->getPageSlug(); ?>_total"><?php esc_html_e( '
|
108 |
<li <?php echo (3 == $this->current_tab) ? 'class="active"' : ''; ?>><a href="<?php echo $this->spam_checker->getPageScriptName(); ?>?page=ct_check_<?php echo $this->spam_checker->getPageSlug(); ?>_logs"><?php esc_html_e( 'Scan logs', 'cleantalk' ) ?></a></li>
|
109 |
</ul>
|
110 |
<div id="ct_check_content">
|
103 |
<h3><?php echo $this->spam_checker->getPageTitle(); ?></h3>
|
104 |
<div id="ct_check_tabs">
|
105 |
<ul>
|
106 |
+
<li <?php echo (1 == $this->current_tab) ? 'class="active"' : ''; ?>><a href="<?php echo $this->spam_checker->getPageScriptName(); ?>?page=ct_check_<?php echo $this->spam_checker->getPageSlug(); ?>"><?php esc_html_e( 'Scan and new results', 'cleantalk' ) ?></a></li>
|
107 |
+
<li <?php echo (2 == $this->current_tab) ? 'class="active"' : ''; ?>><a href="<?php echo $this->spam_checker->getPageScriptName(); ?>?page=ct_check_<?php echo $this->spam_checker->getPageSlug(); ?>_total"><?php esc_html_e( 'Previous scan results', 'cleantalk' ) ?></a></li>
|
108 |
<li <?php echo (3 == $this->current_tab) ? 'class="active"' : ''; ?>><a href="<?php echo $this->spam_checker->getPageScriptName(); ?>?page=ct_check_<?php echo $this->spam_checker->getPageSlug(); ?>_logs"><?php esc_html_e( 'Scan logs', 'cleantalk' ) ?></a></li>
|
109 |
</ul>
|
110 |
<div id="ct_check_content">
|
lib/Cleantalk/Antispam/API.php
CHANGED
@@ -604,7 +604,7 @@ class API
|
|
604 |
*
|
605 |
* @return array|bool
|
606 |
*/
|
607 |
-
static public function send_request($data, $url = self::URL, $timeout =
|
608 |
{
|
609 |
// Possibility to switch agent vaersion
|
610 |
$data['agent'] = !empty($data['agent'])
|
@@ -697,7 +697,7 @@ class API
|
|
697 |
/**
|
698 |
* Function checks server response
|
699 |
*
|
700 |
-
* @param string $result
|
701 |
* @param string $method_name
|
702 |
*
|
703 |
* @return mixed (array || array('error' => true))
|
@@ -706,10 +706,12 @@ class API
|
|
706 |
{
|
707 |
// Errors handling
|
708 |
// Bad connection
|
709 |
-
if(
|
710 |
-
|
711 |
-
|
712 |
-
|
|
|
|
|
713 |
}
|
714 |
|
715 |
// JSON decode errors
|
604 |
*
|
605 |
* @return array|bool
|
606 |
*/
|
607 |
+
static public function send_request($data, $url = self::URL, $timeout = 10, $ssl = false, $ssl_path = '')
|
608 |
{
|
609 |
// Possibility to switch agent vaersion
|
610 |
$data['agent'] = !empty($data['agent'])
|
697 |
/**
|
698 |
* Function checks server response
|
699 |
*
|
700 |
+
* @param array|string $result
|
701 |
* @param string $method_name
|
702 |
*
|
703 |
* @return mixed (array || array('error' => true))
|
706 |
{
|
707 |
// Errors handling
|
708 |
// Bad connection
|
709 |
+
if(isset($result['error'])){
|
710 |
+
$last = error_get_last();
|
711 |
+
$out = ! empty( $result['error'] )
|
712 |
+
? array( 'error' => 'CONNECTION_ERROR : "' . $result['error'] . '"' )
|
713 |
+
: array( 'error' => 'CONNECTION_ERROR : "Unknown Error. Last error: ' . $last['message'] );
|
714 |
+
return $out;
|
715 |
}
|
716 |
|
717 |
// JSON decode errors
|
lib/Cleantalk/Antispam/Helper.php
CHANGED
@@ -505,6 +505,7 @@ class Helper
|
|
505 |
|
506 |
case 'get':
|
507 |
$opts[CURLOPT_URL] .= $data ? '?' . str_replace("&", "&", http_build_query($data)) : '';
|
|
|
508 |
$opts[CURLOPT_POST] = false;
|
509 |
$opts[CURLOPT_POSTFIELDS] = null;
|
510 |
break;
|
505 |
|
506 |
case 'get':
|
507 |
$opts[CURLOPT_URL] .= $data ? '?' . str_replace("&", "&", http_build_query($data)) : '';
|
508 |
+
$opts[CURLOPT_CUSTOMREQUEST] = 'GET';
|
509 |
$opts[CURLOPT_POST] = false;
|
510 |
$opts[CURLOPT_POSTFIELDS] = null;
|
511 |
break;
|
lib/Cleantalk/Antispam/Integrations/ElfsightContactForm.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
namespace Cleantalk\Antispam\Integrations;
|
5 |
+
|
6 |
+
|
7 |
+
class ElfsightContactForm extends IntegrationBase
|
8 |
+
{
|
9 |
+
|
10 |
+
function getDataForChecking()
|
11 |
+
{
|
12 |
+
if( isset( $_POST ) && isset( $_POST['fields'] ) ) {
|
13 |
+
return ct_get_fields_any( $_POST['fields'] );
|
14 |
+
}
|
15 |
+
return null;
|
16 |
+
}
|
17 |
+
|
18 |
+
function doBlock( $message )
|
19 |
+
{
|
20 |
+
header( 'Content-type: application/json; charset=utf-8' );
|
21 |
+
exit( json_encode( array( 400, $message ) ) );
|
22 |
+
}
|
23 |
+
}
|
lib/Cleantalk/Common/Get.php
CHANGED
@@ -36,7 +36,7 @@ class Get extends ServerVariables{
|
|
36 |
|
37 |
// Return from memory. From $this->variables
|
38 |
if(isset(static::$instance->variables[$name]))
|
39 |
-
return static::$instance->
|
40 |
|
41 |
if( function_exists( 'filter_input' ) )
|
42 |
$value = filter_input( INPUT_GET, $name );
|
36 |
|
37 |
// Return from memory. From $this->variables
|
38 |
if(isset(static::$instance->variables[$name]))
|
39 |
+
return static::$instance->variables[$name];
|
40 |
|
41 |
if( function_exists( 'filter_input' ) )
|
42 |
$value = filter_input( INPUT_GET, $name );
|
lib/Cleantalk/Common/Server.php
CHANGED
@@ -34,8 +34,8 @@ class Server extends ServerVariables{
|
|
34 |
protected function get_variable( $name ){
|
35 |
|
36 |
// Return from memory. From $this->server
|
37 |
-
if(isset(static::$instance->
|
38 |
-
return static::$instance->
|
39 |
|
40 |
$name = strtoupper( $name );
|
41 |
|
34 |
protected function get_variable( $name ){
|
35 |
|
36 |
// Return from memory. From $this->server
|
37 |
+
if(isset(static::$instance->variables[$name]))
|
38 |
+
return static::$instance->variables[$name];
|
39 |
|
40 |
$name = strtoupper( $name );
|
41 |
|
lib/CleantalkState.php
CHANGED
@@ -191,8 +191,9 @@ class CleantalkState
|
|
191 |
public $def_network_settings = array(
|
192 |
|
193 |
// Key
|
194 |
-
'apikey'
|
195 |
-
'allow_custom_key'
|
|
|
196 |
|
197 |
// White label settings
|
198 |
'white_label' => 0,
|
191 |
public $def_network_settings = array(
|
192 |
|
193 |
// Key
|
194 |
+
'apikey' => '',
|
195 |
+
'allow_custom_key' => 1,
|
196 |
+
'allow_custom_settings' => 1,
|
197 |
|
198 |
// White label settings
|
199 |
'white_label' => 0,
|
readme.txt
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
Contributors: safronik
|
3 |
Tags: spam, antispam, woocommerce, comments, firewall
|
4 |
Requires at least: 3.0
|
5 |
-
Tested up to: 5.
|
6 |
Requires PHP: 5.4
|
7 |
-
Stable tag: 5.
|
8 |
License: GPLv2
|
9 |
|
10 |
Spam protection, anti-spam, firewall, premium plugin. No spam comments & users, no spam contact form & WooCommerce anti-spam.
|
@@ -566,6 +566,16 @@ If your website has forms that send data to external sources, you can enable opt
|
|
566 |
|
567 |
== Changelog ==
|
568 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
569 |
= 5.134 February 27 2020 =
|
570 |
* Fix: SpamFireWall update large data issues.
|
571 |
* Fix: Auto-update for some banner notifications.
|
@@ -1634,14 +1644,14 @@ If your website has forms that send data to external sources, you can enable opt
|
|
1634 |
* Fixed problems with AJAX functionality in MailPoet, WooCommerce and other AJAX plugins
|
1635 |
|
1636 |
= 5.27 2015-10-13 =
|
1637 |
-
* Improvements in
|
1638 |
* Code optimization
|
1639 |
* Backend interface fixes
|
1640 |
|
1641 |
= 5.26 2015-10-05 =
|
1642 |
* Added WordPress Language Pack support
|
1643 |
* Removed spam checking for some autorisation plugins
|
1644 |
-
* New experimental feature:
|
1645 |
|
1646 |
= 5.25.2 2015-09-28 =
|
1647 |
* Fixed backend bug
|
2 |
Contributors: safronik
|
3 |
Tags: spam, antispam, woocommerce, comments, firewall
|
4 |
Requires at least: 3.0
|
5 |
+
Tested up to: 5.4
|
6 |
Requires PHP: 5.4
|
7 |
+
Stable tag: 5.135
|
8 |
License: GPLv2
|
9 |
|
10 |
Spam protection, anti-spam, firewall, premium plugin. No spam comments & users, no spam contact form & WooCommerce anti-spam.
|
566 |
|
567 |
== Changelog ==
|
568 |
|
569 |
+
= 5.135 March 16 2020 =
|
570 |
+
* New: Setting which disallow sub-sites administrators to manage plugin settings.
|
571 |
+
* New: Add custom title for message.
|
572 |
+
* Mod: New headers for spam scan tabs.
|
573 |
+
* Fix: ARM form login check.
|
574 |
+
* Fix: For GET requests in HTTP API.
|
575 |
+
* Fix: Getting variables in Get and Server classes.
|
576 |
+
* Fix: SFW update system.
|
577 |
+
* Fix: Empty connection error in Cleantalk/Antispam/API.
|
578 |
+
|
579 |
= 5.134 February 27 2020 =
|
580 |
* Fix: SpamFireWall update large data issues.
|
581 |
* Fix: Auto-update for some banner notifications.
|
1644 |
* Fixed problems with AJAX functionality in MailPoet, WooCommerce and other AJAX plugins
|
1645 |
|
1646 |
= 5.27 2015-10-13 =
|
1647 |
+
* Improvements in SpamFireWall feature
|
1648 |
* Code optimization
|
1649 |
* Backend interface fixes
|
1650 |
|
1651 |
= 5.26 2015-10-05 =
|
1652 |
* Added WordPress Language Pack support
|
1653 |
* Removed spam checking for some autorisation plugins
|
1654 |
+
* New experimental feature: SpamFireWall
|
1655 |
|
1656 |
= 5.25.2 2015-09-28 =
|
1657 |
* Fixed backend bug
|