Version Description
Jun 15 2021 = * Fix. Renew notice banner shows only on cleantalk pages. * Fix. SFW updating. Getting remote data error handling fixed. * Upd. Readme updated. * Fix. SFW. Auto-updating fixed. * Fix: Admin bar style. Install link is no longer highlighted. * Fix: Admin bar style. Style for security icon. * Fix: Admin bar. Reset buttons counters leads to the same page. * Fix. Manual register link fixed. * Fix: do not display errors on subsites when wl is enabled. * Fix: Admin bar. Rapid fix. * Fix. Skipping. WPForms check restricted email request skipped. * Fix. Helper. CURL request timeout increased. * Fix. Comments/users checker. Description fixed. * Fix. Get fields any. Preset nickname parameter fixed. * Fix: wpms settings.
Download this release
Release Info
Developer | glomberg |
Plugin | Spam protection, AntiSpam, FireWall by CleanTalk |
Version | 5.159.2 |
Comparing to | |
See all releases |
Code changes from version 5.159.1 to 5.159.2
- cleantalk.php +10 -9
- css/cleantalk-admin.min.css +1 -1
- inc/cleantalk-admin.php +55 -27
- inc/cleantalk-common.php +18 -3
- inc/cleantalk-settings.php +15 -3
- lib/Cleantalk/Antispam/Integrations.php +119 -119
- lib/Cleantalk/ApbctWP/FindSpam/CommentsChecker.php +3 -3
- lib/Cleantalk/ApbctWP/FindSpam/UsersChecker.php +3 -3
- lib/Cleantalk/Common/Helper.php +1 -1
- readme.txt +18 -11
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.159.
|
7 |
Author: СleanTalk <welcome@cleantalk.org>
|
8 |
Author URI: https://cleantalk.org
|
9 |
Text Domain: cleantalk-spam-protect
|
@@ -1000,7 +1000,7 @@ function apbct_sfw_update__get_multifiles( $api_key, $updating_id ){
|
|
1000 |
$file_ck_url__data = Helper::http__get_data_from_remote_gz__and_parse_csv( $result['file_ck_url'] );
|
1001 |
|
1002 |
if( ! empty( $file_ck_url__data['error'] ) ){
|
1003 |
-
return array( 'error' => 'GET EXPECTED RECORDS COUNT DATA: ' . $
|
1004 |
}
|
1005 |
|
1006 |
$expected_networks_count = 0;
|
@@ -1206,6 +1206,14 @@ function apbct_sfw_update__end_of_update() {
|
|
1206 |
$apbct->save( 'fw_stats' );
|
1207 |
|
1208 |
$apbct->stats['sfw']['entries'] = $wpdb->get_var('SELECT COUNT(*) FROM ' . APBCT_TBL_FIREWALL_DATA );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1209 |
$apbct->stats['sfw']['last_update_time'] = time();
|
1210 |
$apbct->save( 'stats' );
|
1211 |
|
@@ -1239,13 +1247,6 @@ function apbct_sfw_update__end_of_update() {
|
|
1239 |
$apbct->data['last_firewall_updated'] = current_time('timestamp');
|
1240 |
$apbct->save('data'); // Unused
|
1241 |
|
1242 |
-
// Running sfw update once again in 12 min if entries is < 4000
|
1243 |
-
if( ! $apbct->stats['sfw']['last_update_time'] &&
|
1244 |
-
$apbct->stats['sfw']['entries'] < 4000
|
1245 |
-
){
|
1246 |
-
wp_schedule_single_event( time() + 720, 'apbct_sfw_update__init' );
|
1247 |
-
}
|
1248 |
-
|
1249 |
// Delete update errors
|
1250 |
$apbct->error_delete( 'sfw_update', 'save_settings' );
|
1251 |
|
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.159.2
|
7 |
Author: СleanTalk <welcome@cleantalk.org>
|
8 |
Author URI: https://cleantalk.org
|
9 |
Text Domain: cleantalk-spam-protect
|
1000 |
$file_ck_url__data = Helper::http__get_data_from_remote_gz__and_parse_csv( $result['file_ck_url'] );
|
1001 |
|
1002 |
if( ! empty( $file_ck_url__data['error'] ) ){
|
1003 |
+
return array( 'error' => 'GET EXPECTED RECORDS COUNT DATA: ' . $file_ck_url__data['error'] );
|
1004 |
}
|
1005 |
|
1006 |
$expected_networks_count = 0;
|
1206 |
$apbct->save( 'fw_stats' );
|
1207 |
|
1208 |
$apbct->stats['sfw']['entries'] = $wpdb->get_var('SELECT COUNT(*) FROM ' . APBCT_TBL_FIREWALL_DATA );
|
1209 |
+
|
1210 |
+
// Running sfw update once again in 12 min if entries is < 4000
|
1211 |
+
if( ! $apbct->stats['sfw']['last_update_time'] &&
|
1212 |
+
$apbct->stats['sfw']['entries'] < 4000
|
1213 |
+
){
|
1214 |
+
wp_schedule_single_event( time() + 720, 'apbct_sfw_update__init' );
|
1215 |
+
}
|
1216 |
+
|
1217 |
$apbct->stats['sfw']['last_update_time'] = time();
|
1218 |
$apbct->save( 'stats' );
|
1219 |
|
1247 |
$apbct->data['last_firewall_updated'] = current_time('timestamp');
|
1248 |
$apbct->save('data'); // Unused
|
1249 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1250 |
// Delete update errors
|
1251 |
$apbct->error_delete( 'sfw_update', 'save_settings' );
|
1252 |
|
css/cleantalk-admin.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
:disabled{cursor:not-allowed!important}.apbct_color--gray{color:gray}.apbct_display--none{display:none}.ct_translate_links{color:rgba(150,150,20,1)}.ct_support_links{color:rgba(150,20,20,1)}.ct_faq_links{color:rgba(20,150,20,1)}.ct_setting_links{color:rgba(20,20,150,1)}.ct_translate_links:hover{color:rgba(210,210,20,1)!important}.ct_support_links:hover{color:rgba(250,20,20,1)!important}.ct_faq_links:hover{color:rgba(20,250,20,1)!important}.ct_setting_links:hover{color:rgba(20,20,250,1)!important}.ct_link_new_tab img{float:none!important;margin:0 2px;border:0}#negative_reports_table tr td{padding:7px 5px!important}#apbct_gdpr_open_modal:hover{cursor:pointer}#wp-admin-bar-cleantalk_admin_bar__parent_node img.cleantalk_admin_bar__apbct_icon{width:18px;height:18px;margin-top:7px}#wp-admin-bar-cleantalk_admin_bar__parent_node div.cleantalk_admin_bar__sum_counter{color:#
|
1 |
+
:disabled{cursor:not-allowed!important}.apbct_color--gray{color:gray}.apbct_display--none{display:none}.ct_translate_links{color:rgba(150,150,20,1)}.ct_support_links{color:rgba(150,20,20,1)}.ct_faq_links{color:rgba(20,150,20,1)}.ct_setting_links{color:rgba(20,20,150,1)}.ct_translate_links:hover{color:rgba(210,210,20,1)!important}.ct_support_links:hover{color:rgba(250,20,20,1)!important}.ct_faq_links:hover{color:rgba(20,250,20,1)!important}.ct_setting_links:hover{color:rgba(20,20,250,1)!important}.ct_link_new_tab img{float:none!important;margin:0 2px;border:0}#negative_reports_table tr td{padding:7px 5px!important}#apbct_gdpr_open_modal:hover{cursor:pointer}#wp-admin-bar-cleantalk_admin_bar__parent_node{margin-right:5px}#wp-admin-bar-cleantalk_admin_bar__parent_node img.cleantalk_admin_bar__spbc_icon{width:14px;height:17px;margin-top:7px}#wp-admin-bar-cleantalk_admin_bar__parent_node img.cleantalk_admin_bar__apbct_icon{width:18px;height:18px;margin-top:7px}#wp-admin-bar-cleantalk_admin_bar__parent_node div.cleantalk_admin_bar__sum_counter{color:#999;display:inline;padding:2px 5px!important}.cleantalk_admin_bar__blocked div{cursor:not-allowed!important}.cleantalk_admin_bar__blocked div a{color:#777!important}.cleantalk_admin_bar__title{vertical-align:top}.cleantalk_admin_bar__separator{height:0!important}.cleantalk-admin_bar--list_wrapper .ab-sub-wrapper ul:last-child{margin-bottom:5px!important}
|
inc/cleantalk-admin.php
CHANGED
@@ -188,8 +188,13 @@ function apbct_admin__init(){
|
|
188 |
){
|
189 |
add_action( 'admin_bar_menu', 'apbct_admin__admin_bar__add_structure', 999 );
|
190 |
}
|
191 |
-
|
192 |
-
add_action( '
|
|
|
|
|
|
|
|
|
|
|
193 |
if( ! $spbc ){
|
194 |
add_filter( 'admin_bar_menu', 'apbct_spbc_admin__admin_bar__add_child_nodes', 1001 );
|
195 |
}
|
@@ -448,7 +453,7 @@ function apbct_admin__notice_message(){
|
|
448 |
"<a href='{$settings_link}'>".$apbct->plugin_name."</a>",
|
449 |
"<a href=\"https://cleantalk.org/my/bill/recharge?utm_source=wp-backend&utm_medium=cpc&utm_campaign=WP%20backend%20trial$user_token&cp_mode=antispam\" target=\"_blank\"><b>premium version</b></a>") .
|
450 |
'</h3>
|
451 |
-
<h4 style = "color: gray">Account status updates every 24 hours
|
452 |
</div>';
|
453 |
$apbct->notice_show = false;
|
454 |
}
|
@@ -456,19 +461,21 @@ function apbct_admin__notice_message(){
|
|
456 |
|
457 |
//Renew notice from apbct_admin_init().api_method__notice_paid_till()
|
458 |
if ($apbct->notice_show && $apbct->notice_renew == 1 && $apbct->moderate_ip == 0 && !$apbct->white_label) {
|
459 |
-
$
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
<
|
465 |
-
|
466 |
-
|
467 |
-
|
|
|
468 |
'.$button_html.'
|
469 |
<br/><br/>
|
470 |
</div>';
|
471 |
-
|
|
|
472 |
}
|
473 |
|
474 |
//"Wrong access key" notice (if ct_update_option().METHOD_notice_validate_key returns a error)
|
@@ -516,11 +523,16 @@ function apbct_admin__admin_bar__add_structure( $wp_admin_bar ) {
|
|
516 |
|
517 |
global $spbc, $apbct;
|
518 |
|
|
|
|
|
519 |
// Adding parent node
|
520 |
$wp_admin_bar->add_node( array(
|
521 |
'id' => 'cleantalk_admin_bar__parent_node',
|
522 |
-
'title' =>
|
523 |
-
|
|
|
|
|
|
|
524 |
) );
|
525 |
|
526 |
// Security
|
@@ -533,7 +545,7 @@ function apbct_admin__admin_bar__add_structure( $wp_admin_bar ) {
|
|
533 |
'id' => 'apbct__parent_node',
|
534 |
'title' => '<div class="cleantalk-admin_bar__parent">'
|
535 |
. $title
|
536 |
-
. '</div>'
|
537 |
) );
|
538 |
|
539 |
// Antispam
|
@@ -551,13 +563,19 @@ function apbct_admin__admin_bar__add_structure( $wp_admin_bar ) {
|
|
551 |
'parent' => 'cleantalk_admin_bar__parent_node',
|
552 |
'id' => 'spbc__parent_node',
|
553 |
'title' => '<div class="cleantalk-admin_bar__parent">'
|
554 |
-
|
555 |
-
|
556 |
) );
|
557 |
}
|
558 |
}
|
559 |
|
560 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
561 |
|
562 |
global $apbct;
|
563 |
|
@@ -614,15 +632,25 @@ function apbct_admin__admin_bar__add_parent_icon( $icon ){
|
|
614 |
);
|
615 |
$apbct->counter__sum += $apbct->counter__sfw['all'];
|
616 |
}
|
|
|
|
|
|
|
617 |
|
618 |
-
|
619 |
-
|
620 |
-
|
|
|
|
|
621 |
|
|
|
622 |
|
623 |
-
|
624 |
-
|
|
|
|
|
|
|
625 |
. $counter__sum__layout;
|
|
|
626 |
}
|
627 |
|
628 |
function apbct_admin__admin_bar__add_child_nodes( $wp_admin_bar ) {
|
@@ -728,7 +756,7 @@ function apbct_admin__admin_bar__add_child_nodes( $wp_admin_bar ) {
|
|
728 |
$args = array(
|
729 |
'parent' => 'apbct__parent_node',
|
730 |
'id' => 'ct_reset_counter',
|
731 |
-
'title' => '<hr style="margin-top: 7px;"><a href="?
|
732 |
);
|
733 |
$wp_admin_bar->add_node( $args );// add a child item to our parent item. Counter reset.
|
734 |
|
@@ -736,7 +764,7 @@ function apbct_admin__admin_bar__add_child_nodes( $wp_admin_bar ) {
|
|
736 |
$args = array(
|
737 |
'parent' => 'apbct__parent_node',
|
738 |
'id' => 'ct_reset_counters_all',
|
739 |
-
'title' => '<a href="?
|
740 |
);
|
741 |
$wp_admin_bar->add_node( $args );
|
742 |
|
@@ -756,7 +784,7 @@ function apbct_spbc_admin__admin_bar__add_child_nodes( $wp_admin_bar ){
|
|
756 |
$wp_admin_bar->add_node( array(
|
757 |
'parent' => 'spbc__parent_node',
|
758 |
'id' => 'apbct_admin_bar__install',
|
759 |
-
'title' => '<a target="_blank"
|
760 |
) );
|
761 |
|
762 |
$wp_admin_bar->add_node( array(
|
188 |
){
|
189 |
add_action( 'admin_bar_menu', 'apbct_admin__admin_bar__add_structure', 999 );
|
190 |
}
|
191 |
+
|
192 |
+
add_action( 'cleantalk_admin_bar__prepare_counters', 'apbct_admin__admin_bar__prepare_counters' );
|
193 |
+
// Temporary disable the icon
|
194 |
+
//add_filter( 'cleantalk_admin_bar__parent_node__before', 'apbct_admin__admin_bar__add_parent_icon', 10, 1 );
|
195 |
+
add_filter( 'cleantalk_admin_bar__parent_node__after', 'apbct_admin__admin_bar__add_counter', 10, 1 );
|
196 |
+
|
197 |
+
add_action( 'admin_bar_menu', 'apbct_admin__admin_bar__add_child_nodes', 1000 );
|
198 |
if( ! $spbc ){
|
199 |
add_filter( 'admin_bar_menu', 'apbct_spbc_admin__admin_bar__add_child_nodes', 1001 );
|
200 |
}
|
453 |
"<a href='{$settings_link}'>".$apbct->plugin_name."</a>",
|
454 |
"<a href=\"https://cleantalk.org/my/bill/recharge?utm_source=wp-backend&utm_medium=cpc&utm_campaign=WP%20backend%20trial$user_token&cp_mode=antispam\" target=\"_blank\"><b>premium version</b></a>") .
|
455 |
'</h3>
|
456 |
+
<h4 style = "color: gray">' . esc_html__( 'Account status updates every 24 hours.', 'cleantalk-spam-protect' ) . '</h4>
|
457 |
</div>';
|
458 |
$apbct->notice_show = false;
|
459 |
}
|
461 |
|
462 |
//Renew notice from apbct_admin_init().api_method__notice_paid_till()
|
463 |
if ($apbct->notice_show && $apbct->notice_renew == 1 && $apbct->moderate_ip == 0 && !$apbct->white_label) {
|
464 |
+
if(isset($_GET['page']) && in_array($_GET['page'], array('cleantalk', 'ct_check_spam', 'ct_check_users'))){
|
465 |
+
$renew_link = "<a href=\"https://cleantalk.org/my/bill/recharge?utm_source=wp-backend&utm_medium=cpc&utm_campaign=WP%%20backend%%20renew$user_token&cp_mode=antispam\" target=\"_blank\">%s</a>";
|
466 |
+
$button_html = sprintf($renew_link, '<input type="button" class="button button-primary" value="'.__('RENEW ANTI-SPAM', 'cleantalk-spam-protect').'" />');
|
467 |
+
$link_html = sprintf($renew_link, "<b>".__('next year', 'cleantalk-spam-protect')."</b>");
|
468 |
+
|
469 |
+
echo '<div class="updated" id="apbct_renew_notice">
|
470 |
+
<h3>'.
|
471 |
+
sprintf(__("Please renew your anti-spam license for %s.", 'cleantalk-spam-protect'), $link_html).
|
472 |
+
'</h3>
|
473 |
+
<h4 style = "color: gray">' . esc_html__( 'Account status updates every 24 hours.', 'cleantalk-spam-protect' ) . '</h4>
|
474 |
'.$button_html.'
|
475 |
<br/><br/>
|
476 |
</div>';
|
477 |
+
$apbct->notice_show = false;
|
478 |
+
}
|
479 |
}
|
480 |
|
481 |
//"Wrong access key" notice (if ct_update_option().METHOD_notice_validate_key returns a error)
|
523 |
|
524 |
global $spbc, $apbct;
|
525 |
|
526 |
+
do_action( 'cleantalk_admin_bar__prepare_counters' );
|
527 |
+
|
528 |
// Adding parent node
|
529 |
$wp_admin_bar->add_node( array(
|
530 |
'id' => 'cleantalk_admin_bar__parent_node',
|
531 |
+
'title' =>
|
532 |
+
apply_filters('cleantalk_admin_bar__parent_node__before', '' ) .
|
533 |
+
'<span class="cleantalk_admin_bar__title">' . __('CleanTalk', 'cleantalk-spam-protect') . '</span>' .
|
534 |
+
apply_filters('cleantalk_admin_bar__parent_node__after', '' ),
|
535 |
+
'meta' => array( 'class' => 'cleantalk-admin_bar--list_wrapper'),
|
536 |
) );
|
537 |
|
538 |
// Security
|
545 |
'id' => 'apbct__parent_node',
|
546 |
'title' => '<div class="cleantalk-admin_bar__parent">'
|
547 |
. $title
|
548 |
+
. '</div>',
|
549 |
) );
|
550 |
|
551 |
// Antispam
|
563 |
'parent' => 'cleantalk_admin_bar__parent_node',
|
564 |
'id' => 'spbc__parent_node',
|
565 |
'title' => '<div class="cleantalk-admin_bar__parent">'
|
566 |
+
. $spbc_title
|
567 |
+
. '</div>'
|
568 |
) );
|
569 |
}
|
570 |
}
|
571 |
|
572 |
+
/**
|
573 |
+
* Prepares properties for counters in $apbct
|
574 |
+
* Handles counter reset
|
575 |
+
*
|
576 |
+
* @return void
|
577 |
+
*/
|
578 |
+
function apbct_admin__admin_bar__prepare_counters(){
|
579 |
|
580 |
global $apbct;
|
581 |
|
632 |
);
|
633 |
$apbct->counter__sum += $apbct->counter__sfw['all'];
|
634 |
}
|
635 |
+
}
|
636 |
+
|
637 |
+
function apbct_admin__admin_bar__add_parent_icon( $icon ){
|
638 |
|
639 |
+
return $icon
|
640 |
+
. '<img class="cleantalk_admin_bar__apbct_icon" src="' . APBCT_URL_PATH . '/inc/images/logo.png" alt=""> ';
|
641 |
+
}
|
642 |
+
|
643 |
+
function apbct_admin__admin_bar__add_counter( $after ){
|
644 |
|
645 |
+
global $apbct;
|
646 |
|
647 |
+
$counter__sum__layout = ( $after ? ' / ' : '<div class="cleantalk_admin_bar__sum_counter">' ) .
|
648 |
+
'<span title="All anti-spam events">' . $apbct->counter__sum . '</span>' .
|
649 |
+
'</div>';
|
650 |
+
|
651 |
+
return ( $after ? substr( $after, 0, -6 ) : $after )
|
652 |
. $counter__sum__layout;
|
653 |
+
|
654 |
}
|
655 |
|
656 |
function apbct_admin__admin_bar__add_child_nodes( $wp_admin_bar ) {
|
756 |
$args = array(
|
757 |
'parent' => 'apbct__parent_node',
|
758 |
'id' => 'ct_reset_counter',
|
759 |
+
'title' => '<hr style="margin-top: 7px;"><a href="?' . http_build_query(array_merge( $_GET, array( 'ct_reset_all_counters' => 1 ) ) ) . '" title="Reset your personal counter of submissions.">' . __('Reset first counter', 'cleantalk-spam-protect') . '</a>',
|
760 |
);
|
761 |
$wp_admin_bar->add_node( $args );// add a child item to our parent item. Counter reset.
|
762 |
|
764 |
$args = array(
|
765 |
'parent' => 'apbct__parent_node',
|
766 |
'id' => 'ct_reset_counters_all',
|
767 |
+
'title' => '<a href="?' . http_build_query(array_merge( $_GET, array( 'page' => 1 ) ) ). '" title="Reset all counters.">'.__('Reset all counters', 'cleantalk-spam-protect').'</a>',
|
768 |
);
|
769 |
$wp_admin_bar->add_node( $args );
|
770 |
|
784 |
$wp_admin_bar->add_node( array(
|
785 |
'parent' => 'spbc__parent_node',
|
786 |
'id' => 'apbct_admin_bar__install',
|
787 |
+
'title' => '<a target="_blank" href="plugin-install.php?s=Security%20and%20Malware%20scan%20by%20CleanTalk%20&tab=search">' . __( 'Install Security by CleanTalk', 'cleantalk-spam-protect' ) . '</a>',
|
788 |
) );
|
789 |
|
790 |
$wp_admin_bar->add_node( array(
|
inc/cleantalk-common.php
CHANGED
@@ -784,14 +784,29 @@ function ct_delete_spam_comments() {
|
|
784 |
*/
|
785 |
function ct_get_fields_any($arr, $message=array(), $email = null, $nickname = array('nick' => '', 'first' => '', 'last' => ''), $subject = null, $contact = true, $prev_name = ''){
|
786 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
787 |
return ct_gfa( $arr, $email, $nickname );
|
788 |
|
789 |
}
|
790 |
|
791 |
/**
|
792 |
-
* Get data from an ARRAY recursively
|
793 |
-
*
|
794 |
-
|
|
|
|
|
|
|
|
|
|
|
795 |
function ct_gfa( $input_array, $email = '', $nickname = '' ) {
|
796 |
|
797 |
$gfa = new GetFieldsAny( $input_array );
|
784 |
*/
|
785 |
function ct_get_fields_any($arr, $message=array(), $email = null, $nickname = array('nick' => '', 'first' => '', 'last' => ''), $subject = null, $contact = true, $prev_name = ''){
|
786 |
|
787 |
+
if ( is_array( $nickname ) )
|
788 |
+
{
|
789 |
+
$nickname_str = '';
|
790 |
+
foreach ( $nickname as $value )
|
791 |
+
{
|
792 |
+
$nickname_str .= ($value ? $value . " " : "");
|
793 |
+
}
|
794 |
+
$nickname = trim( $nickname_str );
|
795 |
+
}
|
796 |
+
|
797 |
return ct_gfa( $arr, $email, $nickname );
|
798 |
|
799 |
}
|
800 |
|
801 |
/**
|
802 |
+
* Get data from an ARRAY recursively
|
803 |
+
*
|
804 |
+
* @param array $input_array
|
805 |
+
* @param string $email
|
806 |
+
* @param string $nickname
|
807 |
+
*
|
808 |
+
* @return array
|
809 |
+
*/
|
810 |
function ct_gfa( $input_array, $email = '', $nickname = '' ) {
|
811 |
|
812 |
$gfa = new GetFieldsAny( $input_array );
|
inc/cleantalk-settings.php
CHANGED
@@ -520,7 +520,17 @@ function apbct_settings__set_fileds( $fields ){
|
|
520 |
function apbct_settings__set_fileds__network( $fields ){
|
521 |
global $apbct;
|
522 |
$additional_fields = array(
|
523 |
-
'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
524 |
'fields' => array(
|
525 |
'multisite__white_label' => array(
|
526 |
'type' => 'checkbox',
|
@@ -862,7 +872,9 @@ function apbct_settings__error__output($return = false){
|
|
862 |
}
|
863 |
continue;
|
864 |
}
|
865 |
-
|
|
|
|
|
866 |
$errors_out[$type] = '';
|
867 |
if(isset($error['error_time']))
|
868 |
$errors_out[$type] .= date('Y-m-d H:i:s', $error['error_time']) . ': ';
|
@@ -1050,7 +1062,7 @@ function apbct_settings__field__apikey(){
|
|
1050 |
'<a class="apbct_color--gray" target="__blank" href="'
|
1051 |
. sprintf( 'https://cleantalk.org/register?platform=wordpress&email=%s&website=%s',
|
1052 |
urlencode(ct_get_admin_email()),
|
1053 |
-
urlencode(
|
1054 |
)
|
1055 |
. '">',
|
1056 |
'</a>'
|
520 |
function apbct_settings__set_fileds__network( $fields ){
|
521 |
global $apbct;
|
522 |
$additional_fields = array(
|
523 |
+
'wpms_settings' => array(
|
524 |
+
'default_params' => array(),
|
525 |
+
'description' => '',
|
526 |
+
'html_before' => '<br>'
|
527 |
+
.'<span id="ct_adv_showhide">'
|
528 |
+
.'<a href="#" class="apbct_color--gray" onclick="event.preventDefault(); apbct_show_hide_elem(\'apbct_settings__dwpms_settings\');">'
|
529 |
+
.__('WordPress Multisite (WPMS) settings', 'cleantalk-spam-protect')
|
530 |
+
.'</a>'
|
531 |
+
.'</span>'
|
532 |
+
.'<div id="apbct_settings__dwpms_settings" style="display: none;">',
|
533 |
+
'html_after' => '</div><br>',
|
534 |
'fields' => array(
|
535 |
'multisite__white_label' => array(
|
536 |
'type' => 'checkbox',
|
872 |
}
|
873 |
continue;
|
874 |
}
|
875 |
+
if (!empty($type)&& $apbct->white_label && !is_main_site() && ($type == 'sfw_update' || $type == 'key_invalid' || $type == 'account_check')) {
|
876 |
+
continue;
|
877 |
+
}
|
878 |
$errors_out[$type] = '';
|
879 |
if(isset($error['error_time']))
|
880 |
$errors_out[$type] .= date('Y-m-d H:i:s', $error['error_time']) . ': ';
|
1062 |
'<a class="apbct_color--gray" target="__blank" href="'
|
1063 |
. sprintf( 'https://cleantalk.org/register?platform=wordpress&email=%s&website=%s',
|
1064 |
urlencode(ct_get_admin_email()),
|
1065 |
+
urlencode(get_bloginfo('url'))
|
1066 |
)
|
1067 |
. '">',
|
1068 |
'</a>'
|
lib/Cleantalk/Antispam/Integrations.php
CHANGED
@@ -1,120 +1,120 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
|
4 |
-
namespace Cleantalk\Antispam;
|
5 |
-
|
6 |
-
|
7 |
-
class Integrations
|
8 |
-
{
|
9 |
-
|
10 |
-
private $integrations = array();
|
11 |
-
|
12 |
-
private $integration;
|
13 |
-
|
14 |
-
/**
|
15 |
-
* Integrations constructor.
|
16 |
-
*
|
17 |
-
* @param array $integrations
|
18 |
-
* @param array $settings
|
19 |
-
*/
|
20 |
-
public function __construct( $integrations, $settings )
|
21 |
-
{
|
22 |
-
$this->integrations = $integrations;
|
23 |
-
|
24 |
-
foreach( $this->integrations as $integration_name => $integration_info ){
|
25 |
-
|
26 |
-
if( empty( $settings[ $integration_info['setting'] ] ) )
|
27 |
-
continue;
|
28 |
-
|
29 |
-
if( $integration_info['ajax'] ) {
|
30 |
-
if( is_array( $integration_info['hook'] ) ) {
|
31 |
-
foreach( $integration_info['hook'] as $hook ) {
|
32 |
-
add_action( 'wp_ajax_' . $hook, array( $this, 'checkSpam' ), 1 );
|
33 |
-
add_action( 'wp_ajax_nopriv_' . $hook, array( $this, 'checkSpam' ), 1 );
|
34 |
-
}
|
35 |
-
} else {
|
36 |
-
add_action( 'wp_ajax_' . $integration_info['hook'], array( $this, 'checkSpam' ), 1 );
|
37 |
-
add_action( 'wp_ajax_nopriv_' . $integration_info['hook'], array( $this, 'checkSpam' ), 1 );
|
38 |
-
}
|
39 |
-
} else {
|
40 |
-
if( is_array( $integration_info['hook'] ) ) {
|
41 |
-
foreach ( $integration_info['hook'] as $hook ) {
|
42 |
-
add_action( $hook, array( $this, 'checkSpam' ) );
|
43 |
-
}
|
44 |
-
} else {
|
45 |
-
add_action( $integration_info['hook'], array( $this, 'checkSpam' ) );
|
46 |
-
}
|
47 |
-
|
48 |
-
}
|
49 |
-
}
|
50 |
-
}
|
51 |
-
|
52 |
-
public function checkSpam( $argument )
|
53 |
-
{
|
54 |
-
global $cleantalk_executed;
|
55 |
-
|
56 |
-
// Getting current integration name
|
57 |
-
$current_integration = $this->get_current_integration_triggered( current_filter() );
|
58 |
-
if( $current_integration ) {
|
59 |
-
// Instantiate the integration object
|
60 |
-
$class = '\\Cleantalk\\Antispam\\Integrations\\' . $current_integration;
|
61 |
-
if( class_exists( $class )) {
|
62 |
-
$this->integration = new $class();
|
63 |
-
if( ! ( $this->integration instanceof \Cleantalk\Antispam\Integrations\IntegrationBase ) ) {
|
64 |
-
// @ToDo have to handle an error
|
65 |
-
do_action( 'apbct_skipped_request', __FILE__ . ' -> ' . __FUNCTION__ . '():' . __LINE__, array('Integration is not instanse of IntegrationBase class.') );
|
66 |
-
return;
|
67 |
-
}
|
68 |
-
// Run data collecting for spam checking
|
69 |
-
$data = $this->integration->getDataForChecking( $argument );
|
70 |
-
if( ! is_null( $data ) ) {
|
71 |
-
// Go spam checking
|
72 |
-
$base_call_result = apbct_base_call(
|
73 |
-
array(
|
74 |
-
'message' => !empty( $data['message'] ) ? json_encode( $data['message'] ) : '',
|
75 |
-
'sender_email' => !empty( $data['email'] ) ? $data['email'] : '',
|
76 |
-
'sender_nickname' => !empty( $data['nickname'] ) ? $data['nickname'] : '',
|
77 |
-
'post_info' => array(
|
78 |
-
'comment_type' => 'contact_form_wordpress_' . strtolower($current_integration),
|
79 |
-
'post_url' => apbct_get_server_variable( 'HTTP_REFERER' ), // Page URL must be an previous page
|
80 |
-
),
|
81 |
-
),
|
82 |
-
isset( $data['register'] ) ? true : false
|
83 |
-
);
|
84 |
-
|
85 |
-
$ct_result = $base_call_result['ct_result'];
|
86 |
-
|
87 |
-
$cleantalk_executed = true;
|
88 |
-
|
89 |
-
if ($ct_result->allow == 0) {
|
90 |
-
// Do blocking if it is a spam
|
91 |
-
$this->integration->doBlock( $ct_result->comment );
|
92 |
-
}
|
93 |
-
} else {
|
94 |
-
// @ToDo have to handle an error
|
95 |
-
return;
|
96 |
-
}
|
97 |
-
}
|
98 |
-
}
|
99 |
-
}
|
100 |
-
|
101 |
-
private function get_current_integration_triggered( $hook )
|
102 |
-
{
|
103 |
-
if( $hook !== false ) {
|
104 |
-
foreach( $this->integrations as $integration_name => $integration_info ) {
|
105 |
-
if( is_array( $integration_info['hook'] ) ) {
|
106 |
-
foreach( $integration_info['hook'] as $integration_hook ) {
|
107 |
-
if( strpos( $hook, $integration_hook ) !== false ) {
|
108 |
-
return $integration_name;
|
109 |
-
}
|
110 |
-
}
|
111 |
-
} else {
|
112 |
-
if( strpos( $hook, $integration_info['hook'] ) !== false ) {
|
113 |
-
return $integration_name;
|
114 |
-
}
|
115 |
-
}
|
116 |
-
}
|
117 |
-
}
|
118 |
-
return false;
|
119 |
-
}
|
120 |
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
namespace Cleantalk\Antispam;
|
5 |
+
|
6 |
+
|
7 |
+
class Integrations
|
8 |
+
{
|
9 |
+
|
10 |
+
private $integrations = array();
|
11 |
+
|
12 |
+
private $integration;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Integrations constructor.
|
16 |
+
*
|
17 |
+
* @param array $integrations
|
18 |
+
* @param array $settings
|
19 |
+
*/
|
20 |
+
public function __construct( $integrations, $settings )
|
21 |
+
{
|
22 |
+
$this->integrations = $integrations;
|
23 |
+
|
24 |
+
foreach( $this->integrations as $integration_name => $integration_info ){
|
25 |
+
|
26 |
+
if( empty( $settings[ $integration_info['setting'] ] ) )
|
27 |
+
continue;
|
28 |
+
|
29 |
+
if( $integration_info['ajax'] ) {
|
30 |
+
if( is_array( $integration_info['hook'] ) ) {
|
31 |
+
foreach( $integration_info['hook'] as $hook ) {
|
32 |
+
add_action( 'wp_ajax_' . $hook, array( $this, 'checkSpam' ), 1 );
|
33 |
+
add_action( 'wp_ajax_nopriv_' . $hook, array( $this, 'checkSpam' ), 1 );
|
34 |
+
}
|
35 |
+
} else {
|
36 |
+
add_action( 'wp_ajax_' . $integration_info['hook'], array( $this, 'checkSpam' ), 1 );
|
37 |
+
add_action( 'wp_ajax_nopriv_' . $integration_info['hook'], array( $this, 'checkSpam' ), 1 );
|
38 |
+
}
|
39 |
+
} else {
|
40 |
+
if( is_array( $integration_info['hook'] ) ) {
|
41 |
+
foreach ( $integration_info['hook'] as $hook ) {
|
42 |
+
add_action( $hook, array( $this, 'checkSpam' ) );
|
43 |
+
}
|
44 |
+
} else {
|
45 |
+
add_action( $integration_info['hook'], array( $this, 'checkSpam' ) );
|
46 |
+
}
|
47 |
+
|
48 |
+
}
|
49 |
+
}
|
50 |
+
}
|
51 |
+
|
52 |
+
public function checkSpam( $argument )
|
53 |
+
{
|
54 |
+
global $cleantalk_executed;
|
55 |
+
|
56 |
+
// Getting current integration name
|
57 |
+
$current_integration = $this->get_current_integration_triggered( current_filter() );
|
58 |
+
if( $current_integration ) {
|
59 |
+
// Instantiate the integration object
|
60 |
+
$class = '\\Cleantalk\\Antispam\\Integrations\\' . $current_integration;
|
61 |
+
if( class_exists( $class )) {
|
62 |
+
$this->integration = new $class();
|
63 |
+
if( ! ( $this->integration instanceof \Cleantalk\Antispam\Integrations\IntegrationBase ) ) {
|
64 |
+
// @ToDo have to handle an error
|
65 |
+
do_action( 'apbct_skipped_request', __FILE__ . ' -> ' . __FUNCTION__ . '():' . __LINE__, array('Integration is not instanse of IntegrationBase class.') );
|
66 |
+
return;
|
67 |
+
}
|
68 |
+
// Run data collecting for spam checking
|
69 |
+
$data = $this->integration->getDataForChecking( $argument );
|
70 |
+
if( ! is_null( $data ) ) {
|
71 |
+
// Go spam checking
|
72 |
+
$base_call_result = apbct_base_call(
|
73 |
+
array(
|
74 |
+
'message' => !empty( $data['message'] ) ? json_encode( $data['message'] ) : '',
|
75 |
+
'sender_email' => !empty( $data['email'] ) ? $data['email'] : '',
|
76 |
+
'sender_nickname' => !empty( $data['nickname'] ) ? $data['nickname'] : '',
|
77 |
+
'post_info' => array(
|
78 |
+
'comment_type' => 'contact_form_wordpress_' . strtolower($current_integration),
|
79 |
+
'post_url' => apbct_get_server_variable( 'HTTP_REFERER' ), // Page URL must be an previous page
|
80 |
+
),
|
81 |
+
),
|
82 |
+
isset( $data['register'] ) ? true : false
|
83 |
+
);
|
84 |
+
|
85 |
+
$ct_result = $base_call_result['ct_result'];
|
86 |
+
|
87 |
+
$cleantalk_executed = true;
|
88 |
+
|
89 |
+
if ($ct_result->allow == 0) {
|
90 |
+
// Do blocking if it is a spam
|
91 |
+
$this->integration->doBlock( $ct_result->comment );
|
92 |
+
}
|
93 |
+
} else {
|
94 |
+
// @ToDo have to handle an error
|
95 |
+
return;
|
96 |
+
}
|
97 |
+
}
|
98 |
+
}
|
99 |
+
}
|
100 |
+
|
101 |
+
private function get_current_integration_triggered( $hook )
|
102 |
+
{
|
103 |
+
if( $hook !== false ) {
|
104 |
+
foreach( $this->integrations as $integration_name => $integration_info ) {
|
105 |
+
if( is_array( $integration_info['hook'] ) ) {
|
106 |
+
foreach( $integration_info['hook'] as $integration_hook ) {
|
107 |
+
if( strpos( $hook, $integration_hook ) !== false ) {
|
108 |
+
return $integration_name;
|
109 |
+
}
|
110 |
+
}
|
111 |
+
} else {
|
112 |
+
if( strpos( $hook, $integration_info['hook'] ) !== false ) {
|
113 |
+
return $integration_name;
|
114 |
+
}
|
115 |
+
}
|
116 |
+
}
|
117 |
+
}
|
118 |
+
return false;
|
119 |
+
}
|
120 |
}
|
lib/Cleantalk/ApbctWP/FindSpam/CommentsChecker.php
CHANGED
@@ -27,7 +27,7 @@ class CommentsChecker extends Checker
|
|
27 |
'ct_confirm_trash_all' => __('Trash all spam comments from the list?', 'cleantalk-spam-protect'),
|
28 |
'ct_confirm_spam_all' => __('Mark as spam all comments from the list?', 'cleantalk-spam-protect'),
|
29 |
'ct_comments_added_after' => __('comments', 'cleantalk-spam-protect'),
|
30 |
-
'ct_status_string' => __('Checked %s, found %s spam comments and %s non-checkable comments (without IP
|
31 |
'ct_status_string_warning' => '<p>'.__('Please do backup of WordPress database before delete any accounts!', 'cleantalk-spam-protect').'</p>',
|
32 |
'start' => !empty($_COOKIE['ct_comments_start_check']) ? true : false,
|
33 |
));
|
@@ -340,7 +340,7 @@ class CommentsChecker extends Checker
|
|
340 |
|
341 |
if( ! $direct_call ) {
|
342 |
$return['message'] .= sprintf (
|
343 |
-
esc_html__('Checked %s, found %s spam comments and %s non-checkable comments (without IP
|
344 |
$cnt_checked,
|
345 |
$cnt_spam,
|
346 |
$cnt_bad
|
@@ -355,7 +355,7 @@ class CommentsChecker extends Checker
|
|
355 |
if ( $res ) {
|
356 |
|
357 |
$return['message'] .= sprintf (
|
358 |
-
__("Last check %s: checked %s comments, found %s spam comments and %s non-checkable comments (without IP
|
359 |
self::lastCheckDate(),
|
360 |
$cnt_checked,
|
361 |
$cnt_spam,
|
27 |
'ct_confirm_trash_all' => __('Trash all spam comments from the list?', 'cleantalk-spam-protect'),
|
28 |
'ct_confirm_spam_all' => __('Mark as spam all comments from the list?', 'cleantalk-spam-protect'),
|
29 |
'ct_comments_added_after' => __('comments', 'cleantalk-spam-protect'),
|
30 |
+
'ct_status_string' => __('Checked %s, found %s spam comments and %s non-checkable comments (without IP and email).', 'cleantalk-spam-protect'),
|
31 |
'ct_status_string_warning' => '<p>'.__('Please do backup of WordPress database before delete any accounts!', 'cleantalk-spam-protect').'</p>',
|
32 |
'start' => !empty($_COOKIE['ct_comments_start_check']) ? true : false,
|
33 |
));
|
340 |
|
341 |
if( ! $direct_call ) {
|
342 |
$return['message'] .= sprintf (
|
343 |
+
esc_html__('Checked %s, found %s spam comments and %s non-checkable comments (without IP and email)', 'cleantalk-spam-protect'),
|
344 |
$cnt_checked,
|
345 |
$cnt_spam,
|
346 |
$cnt_bad
|
355 |
if ( $res ) {
|
356 |
|
357 |
$return['message'] .= sprintf (
|
358 |
+
__("Last check %s: checked %s comments, found %s spam comments and %s non-checkable comments (without IP and email).", 'cleantalk-spam-protect'),
|
359 |
self::lastCheckDate(),
|
360 |
$cnt_checked,
|
361 |
$cnt_spam,
|
lib/Cleantalk/ApbctWP/FindSpam/UsersChecker.php
CHANGED
@@ -29,7 +29,7 @@ class UsersChecker extends Checker
|
|
29 |
'ct_confirm_deletion_all' => __('Do you confirm deletion selected accounts and all content owned by the accounts? Please do backup of the site before deletion!', 'cleantalk-spam-protect'),
|
30 |
'ct_iusers' => __('users.', 'cleantalk-spam-protect'),
|
31 |
'ct_csv_filename' => "user_check_by_".$current_user->user_login,
|
32 |
-
'ct_status_string' => __("Checked %s, found %s spam users and %s non-checkable users (without IP
|
33 |
'ct_status_string_warning' => "<p>".__("Please do backup of WordPress database before delete any accounts!", 'cleantalk-spam-protect')."</p>"
|
34 |
));
|
35 |
|
@@ -407,7 +407,7 @@ class UsersChecker extends Checker
|
|
407 |
|
408 |
if( ! $direct_call ) {
|
409 |
$return['message'] .= sprintf (
|
410 |
-
esc_html__('Checked %s, found %s spam users and %s non-checkable users (without IP
|
411 |
$cnt_checked,
|
412 |
$cnt_spam,
|
413 |
$cnt_bad
|
@@ -421,7 +421,7 @@ class UsersChecker extends Checker
|
|
421 |
|
422 |
if ( $res ) {
|
423 |
$return['message'] .= sprintf (
|
424 |
-
__("Last check %s: checked %s users, found %s spam users and %s non-checkable users (without IP
|
425 |
self::lastCheckDate(),
|
426 |
$cnt_checked,
|
427 |
$cnt_spam,
|
29 |
'ct_confirm_deletion_all' => __('Do you confirm deletion selected accounts and all content owned by the accounts? Please do backup of the site before deletion!', 'cleantalk-spam-protect'),
|
30 |
'ct_iusers' => __('users.', 'cleantalk-spam-protect'),
|
31 |
'ct_csv_filename' => "user_check_by_".$current_user->user_login,
|
32 |
+
'ct_status_string' => __("Checked %s, found %s spam users and %s non-checkable users (without IP and email)", 'cleantalk-spam-protect'),
|
33 |
'ct_status_string_warning' => "<p>".__("Please do backup of WordPress database before delete any accounts!", 'cleantalk-spam-protect')."</p>"
|
34 |
));
|
35 |
|
407 |
|
408 |
if( ! $direct_call ) {
|
409 |
$return['message'] .= sprintf (
|
410 |
+
esc_html__('Checked %s, found %s spam users and %s non-checkable users (without IP and email)', 'cleantalk-spam-protect'),
|
411 |
$cnt_checked,
|
412 |
$cnt_spam,
|
413 |
$cnt_bad
|
421 |
|
422 |
if ( $res ) {
|
423 |
$return['message'] .= sprintf (
|
424 |
+
__("Last check %s: checked %s users, found %s spam users and %s non-checkable users (without IP and email).", 'cleantalk-spam-protect'),
|
425 |
self::lastCheckDate(),
|
426 |
$cnt_checked,
|
427 |
$cnt_spam,
|
lib/Cleantalk/Common/Helper.php
CHANGED
@@ -571,7 +571,7 @@ class Helper
|
|
571 |
array(
|
572 |
CURLOPT_URL => $url,
|
573 |
CURLOPT_RETURNTRANSFER => true,
|
574 |
-
CURLOPT_CONNECTTIMEOUT_MS =>
|
575 |
CURLOPT_FORBID_REUSE => true,
|
576 |
CURLOPT_USERAGENT => self::AGENT . '; ' . ( isset( $_SERVER['REMOTE_ADDR'] ) ? $_SERVER['REMOTE_ADDR'] : 'UNKNOWN_HOST' ),
|
577 |
CURLOPT_POST => true,
|
571 |
array(
|
572 |
CURLOPT_URL => $url,
|
573 |
CURLOPT_RETURNTRANSFER => true,
|
574 |
+
CURLOPT_CONNECTTIMEOUT_MS => 10000,
|
575 |
CURLOPT_FORBID_REUSE => true,
|
576 |
CURLOPT_USERAGENT => self::AGENT . '; ' . ( isset( $_SERVER['REMOTE_ADDR'] ) ? $_SERVER['REMOTE_ADDR'] : 'UNKNOWN_HOST' ),
|
577 |
CURLOPT_POST => true,
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Tags: spam, antispam, anti-spam, comments, firewall
|
|
4 |
Requires at least: 3.0
|
5 |
Tested up to: 5.7
|
6 |
Requires PHP: 5.6
|
7 |
-
Stable tag: 5.159.
|
8 |
License: GPLv2
|
9 |
|
10 |
Spam protection, anti-spam, firewall, premium plugin. No spam comments & users, no spam contact form & WooCommerce anti-spam.
|
@@ -55,16 +55,13 @@ CleanTalk is a free anti spam plugin which work with the premium Cloud AntiSpam
|
|
55 |
Native spam protection for WordPress, JetPack comments and any other comment plugins. The plugin moves spam comments to SPAM folder or you can set the option to ban spam comments silently. You can also enable the option in the plugin settings to auto-delete comments from SPAM folder.
|
56 |
|
57 |
= Spam bots registrations filter =
|
58 |
-
Blocks spam registration in all forms, forums and boards.
|
59 |
|
60 |
= Spam filter for contact forms =
|
61 |
-
Blocks spam in any contact forms. We have made direct integrations with many popular forms, form builders and contact forms of various Themes.
|
62 |
|
63 |
= WooCommerce spam filter =
|
64 |
Anti-spam by CleanTalk filters spam registrations and spam reviews for WooCommerce. The plugin is fully compatible with WooCommerce 2.1 and higher.
|
65 |
|
66 |
= Newsletters antispam filter =
|
67 |
-
Blocks spam in any subscription forms. We have tested anti-spam protection and made direct integrations for many popular subscription forms.
|
68 |
|
69 |
= Spam filter for theme contact forms =
|
70 |
The plugin blocks spam emails via any theme (built-in ones included) contact forms. The plugin filters spam emails silently (without any error notices on WordPress frontend) in AJAX forms as well.
|
@@ -79,10 +76,6 @@ Spam protection for everything about bbPress: logins, registrations, forums, top
|
|
79 |
* Any submission to the site (checkbox 'Check all POST data')
|
80 |
|
81 |
= Compatible with WordPress cache plugins =
|
82 |
-
Cleantalk Anti-Spam has been tested with many caching plugins and we have made integrations for the most popular caching plugins.
|
83 |
-
|
84 |
-
If you have questions about spam protection support for a particular plugin or compatibility, you can ask a question on Support Forum.
|
85 |
-
https://wordpress.org/support/plugin/cleantalk-spam-protect/
|
86 |
|
87 |
= Check existing comments for spam. Bulk spam comments removal. Spam comment Cleaner =
|
88 |
With the help of anti-spam by CleanTalk you can inspect through existing comments to find and quickly delete spam comments at once. To use this function, go to WP Console -> Comments -> Find spam comments.
|
@@ -164,9 +157,6 @@ Spam FireWall can mitigate HTTP/HTTPS DDoS attacks. When an intruder makes GET r
|
|
164 |
= Spam FireWall: Anti-Flood & Anti-Crawler =
|
165 |
Spam FireWall: Anti-Flood and Anti-Crawler options are intended for blocking unwanted bots, content parsing, shop goods prices parsing or aggressive website scanning bots. Learn more https://cleantalk.org/help/anti-flood-and-anti-crawler
|
166 |
|
167 |
-
= XML-RPC brute force protection =
|
168 |
-
Spam FireWall can mitigate XML-RPC brute force attacks. It blocks XML-RPC attacks from bad IP addresses. This helps to prevent bruteforce attacks by a Remote Procedure Call.
|
169 |
-
|
170 |
= No spam comments, no spam registrations, no spam contact emails, no spam trackbacks. CAPTCHA-free anti-spam for WordPress =
|
171 |
Spam is one of the most irritating things. Spam rates are increasing every year and conventional anti-spam can no longer handle all spam bots. CleanTalk prevents and automatically blocks spam. You'll be surprised how effective CleanTalk is in protecting from spam.
|
172 |
|
@@ -581,6 +571,23 @@ If your website has forms that send data to external sources, you can enable opt
|
|
581 |
|
582 |
== Changelog ==
|
583 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
584 |
= 5.159.1 Jun 10 2021 =
|
585 |
* Fix: Cron. Cron calling in cleantalk-updater.php fixed.
|
586 |
|
4 |
Requires at least: 3.0
|
5 |
Tested up to: 5.7
|
6 |
Requires PHP: 5.6
|
7 |
+
Stable tag: 5.159.2
|
8 |
License: GPLv2
|
9 |
|
10 |
Spam protection, anti-spam, firewall, premium plugin. No spam comments & users, no spam contact form & WooCommerce anti-spam.
|
55 |
Native spam protection for WordPress, JetPack comments and any other comment plugins. The plugin moves spam comments to SPAM folder or you can set the option to ban spam comments silently. You can also enable the option in the plugin settings to auto-delete comments from SPAM folder.
|
56 |
|
57 |
= Spam bots registrations filter =
|
|
|
58 |
|
59 |
= Spam filter for contact forms =
|
|
|
60 |
|
61 |
= WooCommerce spam filter =
|
62 |
Anti-spam by CleanTalk filters spam registrations and spam reviews for WooCommerce. The plugin is fully compatible with WooCommerce 2.1 and higher.
|
63 |
|
64 |
= Newsletters antispam filter =
|
|
|
65 |
|
66 |
= Spam filter for theme contact forms =
|
67 |
The plugin blocks spam emails via any theme (built-in ones included) contact forms. The plugin filters spam emails silently (without any error notices on WordPress frontend) in AJAX forms as well.
|
76 |
* Any submission to the site (checkbox 'Check all POST data')
|
77 |
|
78 |
= Compatible with WordPress cache plugins =
|
|
|
|
|
|
|
|
|
79 |
|
80 |
= Check existing comments for spam. Bulk spam comments removal. Spam comment Cleaner =
|
81 |
With the help of anti-spam by CleanTalk you can inspect through existing comments to find and quickly delete spam comments at once. To use this function, go to WP Console -> Comments -> Find spam comments.
|
157 |
= Spam FireWall: Anti-Flood & Anti-Crawler =
|
158 |
Spam FireWall: Anti-Flood and Anti-Crawler options are intended for blocking unwanted bots, content parsing, shop goods prices parsing or aggressive website scanning bots. Learn more https://cleantalk.org/help/anti-flood-and-anti-crawler
|
159 |
|
|
|
|
|
|
|
160 |
= No spam comments, no spam registrations, no spam contact emails, no spam trackbacks. CAPTCHA-free anti-spam for WordPress =
|
161 |
Spam is one of the most irritating things. Spam rates are increasing every year and conventional anti-spam can no longer handle all spam bots. CleanTalk prevents and automatically blocks spam. You'll be surprised how effective CleanTalk is in protecting from spam.
|
162 |
|
571 |
|
572 |
== Changelog ==
|
573 |
|
574 |
+
= 5.159.2 Jun 15 2021 =
|
575 |
+
* Fix. Renew notice banner shows only on cleantalk pages.
|
576 |
+
* Fix. SFW updating. Getting remote data error handling fixed.
|
577 |
+
* Upd. Readme updated.
|
578 |
+
* Fix. SFW. Auto-updating fixed.
|
579 |
+
* Fix: Admin bar style. Install link is no longer highlighted.
|
580 |
+
* Fix: Admin bar style. Style for security icon.
|
581 |
+
* Fix: Admin bar. Reset buttons counters leads to the same page.
|
582 |
+
* Fix. Manual register link fixed.
|
583 |
+
* Fix: do not display errors on subsites when wl is enabled.
|
584 |
+
* Fix: Admin bar. Rapid fix.
|
585 |
+
* Fix. Skipping. WPForms check restricted email request skipped.
|
586 |
+
* Fix. Helper. CURL request timeout increased.
|
587 |
+
* Fix. Comments/users checker. Description fixed.
|
588 |
+
* Fix. Get fields any. Preset nickname parameter fixed.
|
589 |
+
* Fix: wpms settings.
|
590 |
+
|
591 |
= 5.159.1 Jun 10 2021 =
|
592 |
* Fix: Cron. Cron calling in cleantalk-updater.php fixed.
|
593 |
|