Spam protection, AntiSpam, FireWall by CleanTalk - Version 5.64

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 Icon 128x128 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 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.63
7
  Author: СleanTalk <welcome@cleantalk.org>
8
  Author URI: http://cleantalk.org
9
  */
10
- $cleantalk_plugin_version='5.63';
11
- $ct_agent_version = 'wordpress-563';
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
- foreach ($ct_wordpress_core_pages as $v) {
105
- if (stripos($_SERVER['REQUEST_URI'], $v) !== false) {
106
- $value = 0;
107
- break;
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 = (isset($ct_data['user_token']) && $ct_data['user_token'] != '' ? "&user_token={$ct_data['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 '<div class="error">
1671
- <h3>' . sprintf(__("Please enter Access Key in %s settings to enable anti spam protection!", 'cleantalk'), "
1672
- <a href=\"options-general.php?page=cleantalk\">CleanTalk plugin</a>") .
1673
- '</h3>
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=\"options-general.php?page=cleantalk\">$ct_plugin_name</a>",
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=\"options-general.php?page=cleantalk\"><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').
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(sizeof($u)>0){
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 < sizeof($u); $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
- if(empty($user_meta[0]['ip']))
298
- $u[$i]->data->user_ip = null;
299
-
 
 
 
 
300
  if(empty($curr_ip) && empty($curr_email)){
301
  update_user_meta($u[$i]->ID,'ct_bad','1',true);
 
 
302
  }else{
303
- $data[] = $curr_ip;
304
- $data[] = $curr_email;
305
- $u[$i]->data->user_ip = $curr_ip;
 
 
 
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
- // Writing to CSV file
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 .= "blacklisted".PHP_EOL;
343
- }else{
344
  $file_desc = fopen($filename, 'a+');
345
- }
346
-
347
- foreach($result_to_csv['data'] as $key => $value){
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 (!$skip_user && in_array($role, $u[$i]->roles)) {
367
  delete_user_meta($u[$i]->ID, 'ct_marked_as_spam');
368
- $skip_user = true;
369
- continue;
370
  }
371
  }
372
- if ($skip_user) {
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
- $mark_spam_email = true;
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.63
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.