Version Description
April 26 2017 = * Integration for Facebook registrations. * Small fixes for WPMS. * Fix for Activecampaign service. * Fix for check spam users. * Fixed rare notice Notice: Undefined index: REQUEST_URI
Download this release
Release Info
Developer | shagimuratov |
Plugin | Spam protection, AntiSpam, FireWall by CleanTalk |
Version | 5.64 |
Comparing to | |
See all releases |
Code changes from version 5.63 to 5.64
- cleantalk.php +27 -9
- inc/cleantalk-admin.php +13 -8
- inc/cleantalk-public.php +16 -3
- inc/cleantalk-users.php +52 -72
- readme.txt +16 -2
cleantalk.php
CHANGED
@@ -3,12 +3,12 @@
|
|
3 |
Plugin Name: Anti-Spam by CleanTalk
|
4 |
Plugin URI: http://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. Formerly Anti-Spam by CleanTalk.
|
6 |
-
Version: 5.
|
7 |
Author: СleanTalk <welcome@cleantalk.org>
|
8 |
Author URI: http://cleantalk.org
|
9 |
*/
|
10 |
-
$cleantalk_plugin_version='5.
|
11 |
-
$ct_agent_version = 'wordpress-
|
12 |
$cleantalk_executed=false;
|
13 |
$ct_sfw_updated = false;
|
14 |
|
@@ -77,9 +77,25 @@ if(!defined('CLEANTALK_PLUGIN_DIR')){
|
|
77 |
}
|
78 |
//*/
|
79 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
if(@stripos($_SERVER['REQUEST_URI'],'admin-ajax.php')!==false && sizeof($_POST)>0 && isset($_GET['action']) && $_GET['action']=='ninja_forms_ajax_submit')
|
81 |
$_POST['action']='ninja_forms_ajax_submit';
|
82 |
|
|
|
83 |
$value = (isset($ct_options['spam_firewall']) ? intval($ct_options['spam_firewall']) : 0);
|
84 |
/*
|
85 |
Turn off the SpamFireWall if current url in the exceptions list.
|
@@ -101,12 +117,14 @@ if(!defined('CLEANTALK_PLUGIN_DIR')){
|
|
101 |
'/feed'
|
102 |
);
|
103 |
if ($value == 1) {
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
|
|
|
|
110 |
}
|
111 |
|
112 |
if($value==1 && !is_admin() || $value==1 && defined( 'DOING_AJAX' ) && DOING_AJAX && $_SERVER["REQUEST_METHOD"] == 'GET')
|
3 |
Plugin Name: Anti-Spam by CleanTalk
|
4 |
Plugin URI: http://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. Formerly Anti-Spam by CleanTalk.
|
6 |
+
Version: 5.64
|
7 |
Author: СleanTalk <welcome@cleantalk.org>
|
8 |
Author URI: http://cleantalk.org
|
9 |
*/
|
10 |
+
$cleantalk_plugin_version='5.64';
|
11 |
+
$ct_agent_version = 'wordpress-564';
|
12 |
$cleantalk_executed=false;
|
13 |
$ct_sfw_updated = false;
|
14 |
|
77 |
}
|
78 |
//*/
|
79 |
|
80 |
+
// Early checks
|
81 |
+
// Facebook
|
82 |
+
if (isset($ct_options['general_contact_forms_test']) && $ct_options['general_contact_forms_test'] == 1
|
83 |
+
&& (!empty($_POST['action']) && $_POST['action'] == 'fb_intialize')
|
84 |
+
&& !empty($_POST['FB_userdata'])
|
85 |
+
){
|
86 |
+
require_once(CLEANTALK_PLUGIN_DIR . 'inc/cleantalk-public.php');
|
87 |
+
if (ct_is_user_enable()){
|
88 |
+
ct_cookies_test();
|
89 |
+
$ct_check_post_result=false;
|
90 |
+
ct_registration_errors(null);
|
91 |
+
}
|
92 |
+
|
93 |
+
}
|
94 |
+
|
95 |
if(@stripos($_SERVER['REQUEST_URI'],'admin-ajax.php')!==false && sizeof($_POST)>0 && isset($_GET['action']) && $_GET['action']=='ninja_forms_ajax_submit')
|
96 |
$_POST['action']='ninja_forms_ajax_submit';
|
97 |
|
98 |
+
// SFW start
|
99 |
$value = (isset($ct_options['spam_firewall']) ? intval($ct_options['spam_firewall']) : 0);
|
100 |
/*
|
101 |
Turn off the SpamFireWall if current url in the exceptions list.
|
117 |
'/feed'
|
118 |
);
|
119 |
if ($value == 1) {
|
120 |
+
if(!empty($_SERVER['REQUEST_URI'])){
|
121 |
+
foreach ($ct_wordpress_core_pages as $v) {
|
122 |
+
if (stripos($_SERVER['REQUEST_URI'], $v) !== false) {
|
123 |
+
$value = 0;
|
124 |
+
break;
|
125 |
+
}
|
126 |
+
}
|
127 |
+
}
|
128 |
}
|
129 |
|
130 |
if($value==1 && !is_admin() || $value==1 && defined( 'DOING_AJAX' ) && DOING_AJAX && $_SERVER["REQUEST_METHOD"] == 'GET')
|
inc/cleantalk-admin.php
CHANGED
@@ -422,6 +422,9 @@ function ct_admin_init()
|
|
422 |
$ct_data['show_ct_notice_renew']=1;
|
423 |
}
|
424 |
|
|
|
|
|
|
|
425 |
if ($result['show_notice'] == 0)
|
426 |
$notice_check_timeout = $account_notice_check_timeout;
|
427 |
|
@@ -1634,13 +1637,15 @@ function cleantalk_admin_notice_message(){
|
|
1634 |
//Notice control flags
|
1635 |
$show_ct_notice_trial = (isset($ct_data['show_ct_notice_trial']) ? intval($ct_data['show_ct_notice_trial']) : 0);
|
1636 |
$show_ct_notice_renew = (isset($ct_data['show_ct_notice_renew']) ? intval($ct_data['show_ct_notice_renew']) : 0);
|
|
|
1637 |
$next_notice_show = (isset($ct_data['next_notice_show']) ? intval($ct_data['next_notice_show']) : 0); //inactive
|
1638 |
$notice_from_report = (isset($ct_data['ct_show_notice_from_report']) ? intval($ct_data['ct_show_notice_from_report']) : 0);
|
1639 |
$page_is_ct_settings = ($page->id == 'settings_page_cleantalk' || $page->id == 'settings_page_cleantalk-network' ? true : false);
|
1640 |
$three_days_since_activation = (intval($activation_timestapm)+(3*24*60*60) < time() ? true : false);
|
1641 |
|
1642 |
//Misc
|
1643 |
-
$user_token =
|
|
|
1644 |
|
1645 |
if($self_owned_key && $is_admin && $value == 1){
|
1646 |
|
@@ -1667,11 +1672,11 @@ function cleantalk_admin_notice_message(){
|
|
1667 |
if ($show_notice && !ct_valid_key()){
|
1668 |
|
1669 |
// if($page_is_ct_settings || $three_days_since_activation) //INACTIVE
|
1670 |
-
echo
|
1671 |
-
<h3>
|
1672 |
-
<a href
|
1673 |
-
|
1674 |
-
</div>
|
1675 |
$show_notice = false;
|
1676 |
}
|
1677 |
|
@@ -1679,7 +1684,7 @@ function cleantalk_admin_notice_message(){
|
|
1679 |
if ($show_notice && $show_ct_notice_trial == 1 && empty($_COOKIE['ct_trial_banner_closed'])) {
|
1680 |
echo '<div class="error notice is-dismissible ct-trial-notice">
|
1681 |
<h3>' . sprintf(__("%s trial period ends, please upgrade to %s!", 'cleantalk'),
|
1682 |
-
"<a href
|
1683 |
"<a href=\"http://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>") .
|
1684 |
'</h3>
|
1685 |
</div>';
|
@@ -1704,7 +1709,7 @@ function cleantalk_admin_notice_message(){
|
|
1704 |
if ($show_notice && $show_ct_notice_online === 'N'){
|
1705 |
echo '<div class="error">
|
1706 |
<h3><b>'.
|
1707 |
-
__("Wrong <a href
|
1708 |
'</b></h3>
|
1709 |
</div>';
|
1710 |
}
|
422 |
$ct_data['show_ct_notice_renew']=1;
|
423 |
}
|
424 |
|
425 |
+
if (isset($result['show_review']) && $result['show_review'] == 1)
|
426 |
+
$ct_data['show_ct_notice_review'] = 1;
|
427 |
+
|
428 |
if ($result['show_notice'] == 0)
|
429 |
$notice_check_timeout = $account_notice_check_timeout;
|
430 |
|
1637 |
//Notice control flags
|
1638 |
$show_ct_notice_trial = (isset($ct_data['show_ct_notice_trial']) ? intval($ct_data['show_ct_notice_trial']) : 0);
|
1639 |
$show_ct_notice_renew = (isset($ct_data['show_ct_notice_renew']) ? intval($ct_data['show_ct_notice_renew']) : 0);
|
1640 |
+
$show_ct_notice_review = (isset($ct_data['show_ct_notice_review']) ? intval($ct_data['show_ct_notice_review']) : 0);
|
1641 |
$next_notice_show = (isset($ct_data['next_notice_show']) ? intval($ct_data['next_notice_show']) : 0); //inactive
|
1642 |
$notice_from_report = (isset($ct_data['ct_show_notice_from_report']) ? intval($ct_data['ct_show_notice_from_report']) : 0);
|
1643 |
$page_is_ct_settings = ($page->id == 'settings_page_cleantalk' || $page->id == 'settings_page_cleantalk-network' ? true : false);
|
1644 |
$three_days_since_activation = (intval($activation_timestapm)+(3*24*60*60) < time() ? true : false);
|
1645 |
|
1646 |
//Misc
|
1647 |
+
$user_token = (isset($ct_data['user_token']) && $ct_data['user_token'] != '' ? "&user_token={$ct_data['user_token']}" : "");
|
1648 |
+
$settings_link = (is_network_admin() ? "settings.php?page=cleantalk" : "options-general.php?page=cleantalk");
|
1649 |
|
1650 |
if($self_owned_key && $is_admin && $value == 1){
|
1651 |
|
1672 |
if ($show_notice && !ct_valid_key()){
|
1673 |
|
1674 |
// if($page_is_ct_settings || $three_days_since_activation) //INACTIVE
|
1675 |
+
echo "<div class='error'>
|
1676 |
+
<h3>"
|
1677 |
+
.sprintf(__("Please enter Access Key in %s settings to enable anti spam protection!", 'cleantalk'), "<a href='{$settings_link}'>CleanTalk plugin</a>")
|
1678 |
+
."</h3>
|
1679 |
+
</div>";
|
1680 |
$show_notice = false;
|
1681 |
}
|
1682 |
|
1684 |
if ($show_notice && $show_ct_notice_trial == 1 && empty($_COOKIE['ct_trial_banner_closed'])) {
|
1685 |
echo '<div class="error notice is-dismissible ct-trial-notice">
|
1686 |
<h3>' . sprintf(__("%s trial period ends, please upgrade to %s!", 'cleantalk'),
|
1687 |
+
"<a href='{$settings_link}'>$ct_plugin_name</a>",
|
1688 |
"<a href=\"http://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>") .
|
1689 |
'</h3>
|
1690 |
</div>';
|
1709 |
if ($show_notice && $show_ct_notice_online === 'N'){
|
1710 |
echo '<div class="error">
|
1711 |
<h3><b>'.
|
1712 |
+
__("Wrong <a href='{$settings_link}'><b style=\"color: #49C73B;\">Clean</b><b style=\"color: #349ebf;\">Talk</b> access key</a>! Please check it or ask <a target=\"_blank\" href=\"https://cleantalk.org/forum/\">support</a>.", 'cleantalk').
|
1713 |
'</b></h3>
|
1714 |
</div>';
|
1715 |
}
|
inc/cleantalk-public.php
CHANGED
@@ -1572,9 +1572,17 @@ function ct_registration_errors($errors, $sanitized_user_login = null, $user_ema
|
|
1572 |
return $errors;
|
1573 |
}
|
1574 |
|
1575 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1576 |
// BuddyPress actions
|
1577 |
-
//
|
1578 |
$buddypress = false;
|
1579 |
if ($sanitized_user_login === null && isset($_POST['signup_username'])) {
|
1580 |
$sanitized_user_login = $_POST['signup_username'];
|
@@ -1680,6 +1688,10 @@ function ct_registration_errors($errors, $sanitized_user_login = null, $user_ema
|
|
1680 |
|
1681 |
if ($buddypress === true) {
|
1682 |
$bp->signup->errors['signup_username'] = $ct_result->comment;
|
|
|
|
|
|
|
|
|
1683 |
}else{
|
1684 |
if(is_wp_error($errors))
|
1685 |
$errors->add('ct_error', $ct_result->comment);
|
@@ -2428,7 +2440,8 @@ function ct_contact_form_validate() {
|
|
2428 |
isset($_POST['gform_submit']) || //Gravity form
|
2429 |
(isset($_POST['wc_reset_password'], $_POST['_wpnonce'], $_POST['_wp_http_referer'])) || //WooCommerce recovery password form
|
2430 |
(isset($_POST['woocommerce-login-nonce'], $_POST['login'], $_POST['password'], $_POST['_wp_http_referer'])) || //WooCommerce login form
|
2431 |
-
(isset($_POST['ccf_form']) && intval($_POST['ccf_form']) == 1)
|
|
|
2432 |
) {
|
2433 |
return null;
|
2434 |
}
|
1572 |
return $errors;
|
1573 |
}
|
1574 |
|
1575 |
+
// Facebook registration
|
1576 |
+
if ($sanitized_user_login === null && isset($_POST['FB_userdata'])){
|
1577 |
+
$sanitized_user_login = $_POST['FB_userdata']['name'];
|
1578 |
+
$facebook = true;
|
1579 |
+
}
|
1580 |
+
if ($user_email === null && isset($_POST['FB_userdata'])){
|
1581 |
+
$user_email = $_POST['FB_userdata']['email'];
|
1582 |
+
$facebook = true;
|
1583 |
+
}
|
1584 |
+
|
1585 |
// BuddyPress actions
|
|
|
1586 |
$buddypress = false;
|
1587 |
if ($sanitized_user_login === null && isset($_POST['signup_username'])) {
|
1588 |
$sanitized_user_login = $_POST['signup_username'];
|
1688 |
|
1689 |
if ($buddypress === true) {
|
1690 |
$bp->signup->errors['signup_username'] = $ct_result->comment;
|
1691 |
+
}elseif(!empty($facebook)){
|
1692 |
+
$_POST['FB_userdata']['email'] = '';
|
1693 |
+
$_POST['FB_userdata']['name'] = '';
|
1694 |
+
return;
|
1695 |
}else{
|
1696 |
if(is_wp_error($errors))
|
1697 |
$errors->add('ct_error', $ct_result->comment);
|
2440 |
isset($_POST['gform_submit']) || //Gravity form
|
2441 |
(isset($_POST['wc_reset_password'], $_POST['_wpnonce'], $_POST['_wp_http_referer'])) || //WooCommerce recovery password form
|
2442 |
(isset($_POST['woocommerce-login-nonce'], $_POST['login'], $_POST['password'], $_POST['_wp_http_referer'])) || //WooCommerce login form
|
2443 |
+
(isset($_POST['ccf_form']) && intval($_POST['ccf_form']) == 1) ||
|
2444 |
+
(isset($_POST['contact_tags']) && strpos($_POST['contact_tags'], 'MBR:') !== false)
|
2445 |
) {
|
2446 |
return null;
|
2447 |
}
|
inc/cleantalk-users.php
CHANGED
@@ -244,7 +244,7 @@ function ct_ajax_check_users()
|
|
244 |
global $ct_options,$ct_ip_penalty_days;
|
245 |
|
246 |
check_ajax_referer('ct_secret_nonce', 'security');
|
247 |
-
|
248 |
$ct_options = ct_get_options();
|
249 |
|
250 |
$skip_roles = array(
|
@@ -270,7 +270,7 @@ function ct_ajax_check_users()
|
|
270 |
);
|
271 |
$u = get_users($args_unchecked);
|
272 |
|
273 |
-
if(
|
274 |
|
275 |
foreach($u as $user_index => $user){
|
276 |
|
@@ -284,35 +284,38 @@ function ct_ajax_check_users()
|
|
284 |
unset($user_index, $user);
|
285 |
|
286 |
$data=Array();
|
287 |
-
for($i=0; $i <
|
288 |
-
|
289 |
-
$user_meta=get_user_meta($u[$i]->ID, 'session_tokens', true);
|
290 |
|
|
|
291 |
if(is_array($user_meta))
|
292 |
$user_meta = array_values($user_meta);
|
293 |
-
|
294 |
-
$curr_ip = !empty($user_meta[0]['ip']) ? $user_meta[0]['ip'] : null;
|
295 |
-
$curr_email = !empty($u[$i]->data->user_email) ? $u[$i]->data->user_email : null;
|
296 |
|
297 |
-
|
298 |
-
|
299 |
-
|
|
|
|
|
|
|
|
|
300 |
if(empty($curr_ip) && empty($curr_email)){
|
301 |
update_user_meta($u[$i]->ID,'ct_bad','1',true);
|
|
|
|
|
302 |
}else{
|
303 |
-
$
|
304 |
-
|
305 |
-
|
|
|
|
|
|
|
306 |
}
|
307 |
-
|
308 |
-
}
|
309 |
-
if(count($data) == 0){
|
310 |
-
print 1;
|
311 |
-
die();
|
312 |
}
|
313 |
|
|
|
|
|
|
|
314 |
$data=implode(',',$data);
|
315 |
-
|
316 |
$request=Array();
|
317 |
$request['method_name'] = 'spam_check_cms';
|
318 |
$request['auth_key'] = $ct_options['apikey'];
|
@@ -323,89 +326,66 @@ function ct_ajax_check_users()
|
|
323 |
|
324 |
$result=sendRawRequest($url, $request, false, 5);
|
325 |
|
326 |
-
$result_to_csv = json_decode($result, true);
|
327 |
$result = json_decode($result);
|
328 |
-
|
329 |
if(isset($result->error_message))
|
330 |
-
{
|
331 |
print $result->error_message;
|
332 |
-
|
333 |
-
else
|
334 |
-
|
335 |
-
//
|
336 |
$current_user = wp_get_current_user();
|
337 |
$filename = WP_PLUGIN_DIR."/cleantalk-spam-protect/check-results/user_check_by_{$current_user->user_login}.csv";
|
338 |
$text = "";
|
339 |
|
340 |
if(isset($_POST['new_check']) && $_POST['new_check'] == 'true'){
|
341 |
$file_desc = fopen($filename, 'w');
|
342 |
-
$text .= "
|
343 |
-
}else
|
344 |
$file_desc = fopen($filename, 'a+');
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
if($value['appears'])
|
350 |
-
$text .= "$key".PHP_EOL;
|
351 |
-
|
352 |
-
} unset($key, $value);
|
353 |
-
|
354 |
-
fwrite($file_desc, $text);
|
355 |
-
fclose($file_desc);
|
356 |
-
// End of CSV writting
|
357 |
-
|
358 |
-
for($i=0;$i<sizeof($u);$i++)
|
359 |
-
{
|
360 |
update_user_meta($u[$i]->ID,'ct_checked',date("Y-m-d H:m:s"),true);
|
361 |
-
|
362 |
// Do not display forbidden roles.
|
363 |
-
//
|
364 |
-
$skip_user = false;
|
365 |
foreach ($skip_roles as $role) {
|
366 |
-
if (
|
367 |
delete_user_meta($u[$i]->ID, 'ct_marked_as_spam');
|
368 |
-
|
369 |
-
continue;
|
370 |
}
|
371 |
}
|
372 |
-
|
373 |
-
continue;
|
374 |
-
}
|
375 |
$mark_spam_ip = false;
|
376 |
$mark_spam_email = false;
|
377 |
$ip_update_time = 0;
|
378 |
|
379 |
-
|
380 |
$uip = $u[$i]->data->user_ip;
|
381 |
$uim = $u[$i]->data->user_email;
|
382 |
-
|
383 |
-
if(isset($result->data->$uip) && $result->data->$uip->appears == 1)
|
384 |
-
{
|
385 |
$mark_spam_ip = true;
|
386 |
$ip_update_time = strtotime($result->data->$uip->updated);
|
387 |
}
|
|
|
388 |
if(isset($result->data->$uim) && $result->data->$uim->appears==1)
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
/*
|
393 |
-
// Do not use the spam records becaus it was a spammer far time ago.
|
394 |
-
if (time() - $ip_update_time > 86400 * $ct_ip_penalty_days) {
|
395 |
-
$mark_spam_ip = false;
|
396 |
-
}
|
397 |
-
//*/
|
398 |
-
if ($mark_spam_ip || $mark_spam_email) {
|
399 |
update_user_meta($u[$i]->ID,'ct_marked_as_spam','1',true);
|
400 |
-
|
|
|
|
|
|
|
|
|
401 |
}
|
|
|
|
|
402 |
print 1;
|
403 |
}
|
404 |
-
}
|
405 |
-
else
|
406 |
-
{
|
407 |
print 0;
|
408 |
-
}
|
409 |
|
410 |
die;
|
411 |
}
|
244 |
global $ct_options,$ct_ip_penalty_days;
|
245 |
|
246 |
check_ajax_referer('ct_secret_nonce', 'security');
|
247 |
+
|
248 |
$ct_options = ct_get_options();
|
249 |
|
250 |
$skip_roles = array(
|
270 |
);
|
271 |
$u = get_users($args_unchecked);
|
272 |
|
273 |
+
if(count($u) > 0){
|
274 |
|
275 |
foreach($u as $user_index => $user){
|
276 |
|
284 |
unset($user_index, $user);
|
285 |
|
286 |
$data=Array();
|
287 |
+
for($i=0; $i < count($u); $i++){
|
|
|
|
|
288 |
|
289 |
+
$user_meta = get_user_meta($u[$i]->ID, 'session_tokens', true);
|
290 |
if(is_array($user_meta))
|
291 |
$user_meta = array_values($user_meta);
|
|
|
|
|
|
|
292 |
|
293 |
+
$curr_ip = !empty($user_meta[0]['ip']) ? trim($user_meta[0]['ip']) : '';
|
294 |
+
$curr_email = !empty($u[$i]->data->user_email) ? trim($u[$i]->data->user_email) : '';
|
295 |
+
|
296 |
+
// Check for identity
|
297 |
+
$curr_ip = preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $curr_ip) === 1 ? $curr_ip : null;
|
298 |
+
$curr_email = preg_match('/^\S+@\S+\.\S+$/', $curr_email) === 1 ? $curr_email : null;
|
299 |
+
|
300 |
if(empty($curr_ip) && empty($curr_email)){
|
301 |
update_user_meta($u[$i]->ID,'ct_bad','1',true);
|
302 |
+
unset($u[$i]);
|
303 |
+
$u = array_values($u);
|
304 |
}else{
|
305 |
+
if(!empty($curr_ip))
|
306 |
+
$data[] = $curr_ip;
|
307 |
+
if(!empty($curr_email))
|
308 |
+
$data[] = $curr_email;
|
309 |
+
$u[$i]->data->user_ip = empty($curr_ip) ? 'none' : $curr_ip;
|
310 |
+
$u[$i]->data->user_email = empty($curr_email) ? 'none' : $curr_email;
|
311 |
}
|
|
|
|
|
|
|
|
|
|
|
312 |
}
|
313 |
|
314 |
+
if(count($data) == 0)
|
315 |
+
die('1');
|
316 |
+
|
317 |
$data=implode(',',$data);
|
318 |
+
|
319 |
$request=Array();
|
320 |
$request['method_name'] = 'spam_check_cms';
|
321 |
$request['auth_key'] = $ct_options['apikey'];
|
326 |
|
327 |
$result=sendRawRequest($url, $request, false, 5);
|
328 |
|
|
|
329 |
$result = json_decode($result);
|
330 |
+
|
331 |
if(isset($result->error_message))
|
|
|
332 |
print $result->error_message;
|
333 |
+
|
334 |
+
else{
|
335 |
+
|
336 |
+
// Opening CSV file
|
337 |
$current_user = wp_get_current_user();
|
338 |
$filename = WP_PLUGIN_DIR."/cleantalk-spam-protect/check-results/user_check_by_{$current_user->user_login}.csv";
|
339 |
$text = "";
|
340 |
|
341 |
if(isset($_POST['new_check']) && $_POST['new_check'] == 'true'){
|
342 |
$file_desc = fopen($filename, 'w');
|
343 |
+
$text .= "login,email,ip".PHP_EOL;
|
344 |
+
}else
|
345 |
$file_desc = fopen($filename, 'a+');
|
346 |
+
// End of Opening CSV
|
347 |
+
|
348 |
+
for($i=0;$i<sizeof($u);$i++){
|
349 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
350 |
update_user_meta($u[$i]->ID,'ct_checked',date("Y-m-d H:m:s"),true);
|
351 |
+
|
352 |
// Do not display forbidden roles.
|
|
|
|
|
353 |
foreach ($skip_roles as $role) {
|
354 |
+
if (in_array($role, $u[$i]->roles)){
|
355 |
delete_user_meta($u[$i]->ID, 'ct_marked_as_spam');
|
356 |
+
continue 2;
|
|
|
357 |
}
|
358 |
}
|
359 |
+
|
|
|
|
|
360 |
$mark_spam_ip = false;
|
361 |
$mark_spam_email = false;
|
362 |
$ip_update_time = 0;
|
363 |
|
|
|
364 |
$uip = $u[$i]->data->user_ip;
|
365 |
$uim = $u[$i]->data->user_email;
|
366 |
+
|
367 |
+
if(isset($result->data->$uip) && $result->data->$uip->appears == 1){
|
|
|
368 |
$mark_spam_ip = true;
|
369 |
$ip_update_time = strtotime($result->data->$uip->updated);
|
370 |
}
|
371 |
+
|
372 |
if(isset($result->data->$uim) && $result->data->$uim->appears==1)
|
373 |
+
$mark_spam_email = true;
|
374 |
+
|
375 |
+
if ($mark_spam_ip || $mark_spam_email){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
376 |
update_user_meta($u[$i]->ID,'ct_marked_as_spam','1',true);
|
377 |
+
$text .= $u[$i]->user_login.',';
|
378 |
+
$text .= ($mark_spam_email ? $uim : '').',';
|
379 |
+
$text .= ($mark_spam_ip ? $uip : '').PHP_EOL;
|
380 |
+
}
|
381 |
+
|
382 |
}
|
383 |
+
fwrite($file_desc, $text);
|
384 |
+
fclose($file_desc);
|
385 |
print 1;
|
386 |
}
|
387 |
+
}else
|
|
|
|
|
388 |
print 0;
|
|
|
389 |
|
390 |
die;
|
391 |
}
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: znaeff, shagimuratov, serge00, sartemd174
|
|
3 |
Tags: antispam, protection, contact form, comments, spam
|
4 |
Requires at least: 3.0
|
5 |
Tested up to: 4.7
|
6 |
-
Stable tag: 5.
|
7 |
License: GPLv2
|
8 |
|
9 |
Spam protection, antispam, all-in-one, premium plugin. No spam comments & users, no spam contact form & WooCommerce spam. Forget spam.
|
@@ -78,7 +78,7 @@ Spam protection for everything about bbPress: logins, registrations, forums, top
|
|
78 |
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.
|
79 |
|
80 |
= Check existing users for spam. Bulk accounts removal =
|
81 |
-
With the help of anti-spam by CleanTalk you can inspect through existing accounts to find and quickly delete spam users at once. For use this function, go to WP Console —> Users —> Check for spam.
|
82 |
|
83 |
= Blocking users by country =
|
84 |
Automatically block comments and registrations from the countries you have set a ban for. This option is useful in cases of manual spam protection and for protection enhancement. If your site is not intended for international audience and you do not expect comments/users from other countries.
|
@@ -501,6 +501,13 @@ We develop plugin to do it as optimized as possible, CleanTalk doesn't downgrade
|
|
501 |
1. The Dashboard with a map of most spam active countries per your account.
|
502 |
|
503 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
504 |
= 5.63 April 20 2017 =
|
505 |
* Fix for the dashboard spam stat widget.
|
506 |
* Added translation posibility for all text.
|
@@ -1320,6 +1327,13 @@ We develop plugin to do it as optimized as possible, CleanTalk doesn't downgrade
|
|
1320 |
* First version
|
1321 |
|
1322 |
== Upgrade Notice ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1323 |
= 5.63 April 20 2017 =
|
1324 |
* Fix for the dashboard spam stat widget.
|
1325 |
* Added translation posibility for all text.
|
3 |
Tags: antispam, protection, contact form, comments, spam
|
4 |
Requires at least: 3.0
|
5 |
Tested up to: 4.7
|
6 |
+
Stable tag: 5.64
|
7 |
License: GPLv2
|
8 |
|
9 |
Spam protection, antispam, all-in-one, premium plugin. No spam comments & users, no spam contact form & WooCommerce spam. Forget spam.
|
78 |
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.
|
79 |
|
80 |
= Check existing users for spam. Bulk accounts removal =
|
81 |
+
With the help of anti-spam by CleanTalk you can inspect through existing accounts to find and quickly delete spam users at once. For use this function, go to WP Console —> Users —> Check for spam. Also, you can export a list of spam users to the CSV.
|
82 |
|
83 |
= Blocking users by country =
|
84 |
Automatically block comments and registrations from the countries you have set a ban for. This option is useful in cases of manual spam protection and for protection enhancement. If your site is not intended for international audience and you do not expect comments/users from other countries.
|
501 |
1. The Dashboard with a map of most spam active countries per your account.
|
502 |
|
503 |
== Changelog ==
|
504 |
+
= 5.64 April 26 2017 =
|
505 |
+
* Integration for Facebook registrations.
|
506 |
+
* Small fixes for WPMS.
|
507 |
+
* Fix for Activecampaign service.
|
508 |
+
* Fix for check spam users.
|
509 |
+
* Fixed rare notice Notice: Undefined index: REQUEST_URI
|
510 |
+
|
511 |
= 5.63 April 20 2017 =
|
512 |
* Fix for the dashboard spam stat widget.
|
513 |
* Added translation posibility for all text.
|
1327 |
* First version
|
1328 |
|
1329 |
== Upgrade Notice ==
|
1330 |
+
= 5.64 April 26 2017 =
|
1331 |
+
* Integration for Facebook registrations.
|
1332 |
+
* Small fixes for WPMS.
|
1333 |
+
* Fix for Activecampaign service.
|
1334 |
+
* Fix for check spam users.
|
1335 |
+
* Fixed rare notice Notice: Undefined index: REQUEST_URI
|
1336 |
+
|
1337 |
= 5.63 April 20 2017 =
|
1338 |
* Fix for the dashboard spam stat widget.
|
1339 |
* Added translation posibility for all text.
|