Spam protection, AntiSpam, FireWall by CleanTalk - Version 2.25

Version Description

2013-11-27 = * New: Added protection against spam bots for BuddyPress registrations. * New: Added protection against spam bots for Contact form 7. * New: Added Spanish (es_ES) translation.

Download this release

Release Info

Developer shagimuratov
Plugin Icon 128x128 Spam protection, AntiSpam, FireWall by CleanTalk
Version 2.25
Comparing to
See all releases

Code changes from version 2.23 to 2.25

Files changed (5) hide show
  1. cleantalk.class.php +1 -4
  2. cleantalk.php +182 -15
  3. i18n/cleantalk-es_ES.mo +0 -0
  4. readme.txt +28 -12
  5. screenshot-5.png +0 -0
cleantalk.class.php CHANGED
@@ -8,7 +8,7 @@
8
  * @author Сleantalk team (welcome@cleantalk.ru)
9
  * @copyright (C) 2013 СleanTalk team (http://cleantalk.org)
10
  * @license GNU/GPL: http://www.gnu.org/copyleft/gpl.html
11
- * @see http://cleantalk.ru/wiki/doku.php/api
12
  *
13
  */
14
 
@@ -508,9 +508,6 @@ class Cleantalk {
508
  break;
509
 
510
  case 'check_newuser':
511
- if (empty($request->sender_email)) {
512
- $error_params[] = 'sender_email';
513
- }
514
  break;
515
 
516
  case 'send_feedback':
8
  * @author Сleantalk team (welcome@cleantalk.ru)
9
  * @copyright (C) 2013 СleanTalk team (http://cleantalk.org)
10
  * @license GNU/GPL: http://www.gnu.org/copyleft/gpl.html
11
+ * @see https://github.com/CleanTalk/php-antispam
12
  *
13
  */
14
 
508
  break;
509
 
510
  case 'check_newuser':
 
 
 
511
  break;
512
 
513
  case 'send_feedback':
cleantalk.php CHANGED
@@ -3,25 +3,40 @@
3
  Plugin Name: Anti-spam by CleanTalk
4
  Plugin URI: http://cleantalk.org/wordpress
5
  Description: Invisible antispam for comments, registrations and feedbacks. The plugin doesn't use CAPTCHA, Q&A, math or quiz to stop spam bots.
6
- Version: 2.23
7
  Author: СleanTalk <welcome@cleantalk.ru>
8
  Author URI: http://cleantalk.org
9
  */
10
 
11
- $ct_agent_version = 'wordpress-222';
12
  $ct_checkjs_frm = 'ct_checkjs_frm';
13
  $ct_checkjs_register_form = 'ct_checkjs_register_form';
14
  $ct_session_request_id_label = 'request_id';
15
 
 
 
 
 
16
  add_action('comment_form', 'ct_add_hidden_fields');
17
  add_filter('preprocess_comment', 'ct_check'); // param - comment data array
 
 
18
  add_action('frm_validate_entry', 'ct_frm_validate_entry', 20, 2);
19
  add_action('frm_entries_footer_scripts', 'ct_frm_entries_footer_scripts', 20, 2);
20
 
 
21
  add_action('register_form','ct_register_form');
22
  add_filter('registration_errors', 'ct_registration_errors', 10, 3);
23
  add_action('user_register', 'ct_user_register');
24
 
 
 
 
 
 
 
 
 
25
  if (is_admin()) {
26
  add_action('admin_init', 'ct_admin_init', 1);
27
  add_action('admin_menu', 'ct_admin_add_page');
@@ -61,6 +76,7 @@ function ct_def_options() {
61
  'registrations_test' => '1',
62
  'comments_test' => '1',
63
  'formidable_test' => '1',
 
64
  'remove_old_spam' => '0',
65
  'spam_store_days' => '31' // Days before delete comments from folder Spam
66
  );
@@ -189,7 +205,7 @@ function ct_init_session() {
189
  * Public action 'comment_form' - Adds hidden filed to define avaialbility of client's JavaScript
190
  * @param int $post_id Post ID, not used
191
  */
192
- function ct_add_hidden_fields($post_id = 0, $field_name = 'ct_checkjs') {
193
  $ct_checkjs_def = 0;
194
  $ct_checkjs_key = ct_get_checkjs_value();
195
 
@@ -200,15 +216,20 @@ function ct_add_hidden_fields($post_id = 0, $field_name = 'ct_checkjs') {
200
 
201
  ct_init_session();
202
  $_SESSION['formtime'] = time();
203
-
204
- ?>
205
- <input type="hidden" id="<?php echo $field_name; ?>" name="<?php echo $field_name; ?>" value="0">
206
  <script type="text/javascript">
207
  // <![CDATA[
208
- document.getElementById("<?php echo $field_name; ?>").value = document.getElementById("<?php echo $field_name; ?>").value.replace("<?php echo $ct_checkjs_def ?>", "<?php echo $ct_checkjs_key ?>");
209
  // ]]>
210
  </script>
211
- <?php
 
 
 
 
 
 
212
  }
213
 
214
  /**
@@ -764,7 +785,7 @@ function admin_notice_message(){
764
  * Add descriptions for field
765
  */
766
  function admin_addDescriptionsFields($descr = '') {
767
- echo "<p style='color: #666 !important'>$descr</p>";
768
  }
769
 
770
  /**
@@ -851,9 +872,22 @@ function ct_register_form() {
851
  * Test users registration
852
  * @return array with errors
853
  */
854
- function ct_registration_errors($errors, $sanitized_user_login, $user_email) {
855
- global $ct_agent_version, $ct_checkjs_register_form, $ct_session_request_id_label;
856
-
 
 
 
 
 
 
 
 
 
 
 
 
 
857
  $options = ct_get_options();
858
  if ($options['registrations_test'] == 0) {
859
  return $errors;
@@ -910,7 +944,11 @@ function ct_registration_errors($errors, $sanitized_user_login, $user_email) {
910
 
911
  if ($ct_result->allow == 0) {
912
  $wordpress_domain = preg_replace("/^https?:\/\//", "", site_url());
913
- $errors->add('ct_error', __($ct_result->comment, $wordpress_domain));
 
 
 
 
914
  } else {
915
  if ($ct_result->id !== null) {
916
  ct_init_session();
@@ -945,6 +983,125 @@ function ct_delete_user($user_id) {
945
  }
946
  }
947
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
948
 
949
  /**
950
  * Admin action 'admin_enqueue_scripts' - Enqueue admin script of reloading admin page after needed AJAX events
@@ -979,6 +1136,7 @@ function ct_admin_init() {
979
  add_settings_field('cleantalk_registrations_test', __('Registration form', 'cleantalk'), 'ct_input_registrations_test', 'cleantalk', 'cleantalk_settings_anti_spam');
980
  add_settings_field('cleantalk_comments_test', __('Comments form', 'cleantalk'), 'ct_input_comments_test', 'cleantalk', 'cleantalk_settings_anti_spam');
981
  add_settings_field('cleantalk_formidable_test', __('Formidable Forms', 'cleantalk'), 'ct_input_formidable_test', 'cleantalk', 'cleantalk_settings_anti_spam');
 
982
  }
983
 
984
  /**
@@ -1069,8 +1227,19 @@ function ct_input_registrations_test() {
1069
  echo "<input type='radio' id='cleantalk_registrations_test1' name='cleantalk_settings[registrations_test]' value='1' " . ($value == '1' ? 'checked' : '') . " /><label for='cleantalk_registrations_test1'> " . __('Yes') . "</label>";
1070
  echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
1071
  echo "<input type='radio' id='cleantalk_registrations_test0' name='cleantalk_settings[registrations_test]' value='0' " . ($value == '0' ? 'checked' : '') . " /><label for='cleantalk_registrations_test0'> " . __('No') . "</label>";
 
1072
  }
1073
 
 
 
 
 
 
 
 
 
 
 
1074
 
1075
  /**
1076
  * Admin callback function - Plugin parameters validator
@@ -1091,8 +1260,6 @@ function ct_settings_page() {
1091
  <?php settings_fields('cleantalk_settings'); ?>
1092
  <?php do_settings_sections('cleantalk'); ?>
1093
  <br>
1094
- <br>
1095
- <br>
1096
  <input name="Submit" type="submit" value="<?php esc_attr_e('Save Changes'); ?>" />
1097
  </form>
1098
  </div>
3
  Plugin Name: Anti-spam by CleanTalk
4
  Plugin URI: http://cleantalk.org/wordpress
5
  Description: Invisible antispam for comments, registrations and feedbacks. The plugin doesn't use CAPTCHA, Q&A, math or quiz to stop spam bots.
6
+ Version: 2.25
7
  Author: СleanTalk <welcome@cleantalk.ru>
8
  Author URI: http://cleantalk.org
9
  */
10
 
11
+ $ct_agent_version = 'wordpress-225';
12
  $ct_checkjs_frm = 'ct_checkjs_frm';
13
  $ct_checkjs_register_form = 'ct_checkjs_register_form';
14
  $ct_session_request_id_label = 'request_id';
15
 
16
+ $ct_checkjs_cf7 = 'ct_checkjs_cf7';
17
+ $ct_cf7_comment = 'This is a spam!';
18
+
19
+ // Comments
20
  add_action('comment_form', 'ct_add_hidden_fields');
21
  add_filter('preprocess_comment', 'ct_check'); // param - comment data array
22
+
23
+ // Formidable
24
  add_action('frm_validate_entry', 'ct_frm_validate_entry', 20, 2);
25
  add_action('frm_entries_footer_scripts', 'ct_frm_entries_footer_scripts', 20, 2);
26
 
27
+ // Registrations
28
  add_action('register_form','ct_register_form');
29
  add_filter('registration_errors', 'ct_registration_errors', 10, 3);
30
  add_action('user_register', 'ct_user_register');
31
 
32
+ // BuddyPress
33
+ add_action('bp_before_registration_submit_buttons','ct_register_form');
34
+ add_filter('bp_signup_validate', 'ct_registration_errors');
35
+
36
+ // Contact Form7
37
+ add_filter('wpcf7_form_elements', 'ct_wpcf7_form_elements');
38
+ add_filter('wpcf7_spam', 'ct_wpcf7_spam');
39
+
40
  if (is_admin()) {
41
  add_action('admin_init', 'ct_admin_init', 1);
42
  add_action('admin_menu', 'ct_admin_add_page');
76
  'registrations_test' => '1',
77
  'comments_test' => '1',
78
  'formidable_test' => '1',
79
+ 'cf7_test' => '1',
80
  'remove_old_spam' => '0',
81
  'spam_store_days' => '31' // Days before delete comments from folder Spam
82
  );
205
  * Public action 'comment_form' - Adds hidden filed to define avaialbility of client's JavaScript
206
  * @param int $post_id Post ID, not used
207
  */
208
+ function ct_add_hidden_fields($post_id = 0, $field_name = 'ct_checkjs', $return_string = false) {
209
  $ct_checkjs_def = 0;
210
  $ct_checkjs_key = ct_get_checkjs_value();
211
 
216
 
217
  ct_init_session();
218
  $_SESSION['formtime'] = time();
219
+ $html = '
220
+ <input type="hidden" id="%s" name="%s" value="0">
 
221
  <script type="text/javascript">
222
  // <![CDATA[
223
+ document.getElementById("%s").value = document.getElementById("%s").value.replace("%s", "%s");
224
  // ]]>
225
  </script>
226
+ ';
227
+ $html = sprintf($html, $field_name, $field_name, $field_name, $field_name, $ct_checkjs_def, $ct_checkjs_key);
228
+ if ($return_string === true) {
229
+ return $html;
230
+ } else {
231
+ echo $html;
232
+ }
233
  }
234
 
235
  /**
785
  * Add descriptions for field
786
  */
787
  function admin_addDescriptionsFields($descr = '') {
788
+ echo "<div style='color: #666 !important'>$descr</div>";
789
  }
790
 
791
  /**
872
  * Test users registration
873
  * @return array with errors
874
  */
875
+ function ct_registration_errors($errors, $sanitized_user_login = null, $user_email = null) {
876
+ global $ct_agent_version, $ct_checkjs_register_form, $ct_session_request_id_label, $bp;
877
+
878
+ //
879
+ // BuddyPress actions
880
+ //
881
+ $buddypress = false;
882
+ if ($sanitized_user_login === null && isset($_POST['signup_username'])) {
883
+ $sanitized_user_login = $_POST['signup_username'];
884
+ $buddypress = true;
885
+ }
886
+ if ($user_email === null && isset($_POST['signup_email'])) {
887
+ $user_email = $_POST['signup_email'];
888
+ $buddypress = true;
889
+ }
890
+
891
  $options = ct_get_options();
892
  if ($options['registrations_test'] == 0) {
893
  return $errors;
944
 
945
  if ($ct_result->allow == 0) {
946
  $wordpress_domain = preg_replace("/^https?:\/\//", "", site_url());
947
+ if ($buddypress === true) {
948
+ $bp->signup->errors['signup_username'] = $ct_result->comment;
949
+ } else {
950
+ $errors->add('ct_error', __($ct_result->comment, $wordpress_domain));
951
+ }
952
  } else {
953
  if ($ct_result->id !== null) {
954
  ct_init_session();
983
  }
984
  }
985
 
986
+ /**
987
+ * Inserts anti-spam hidden to CF7
988
+ */
989
+ function ct_wpcf7_form_elements($html) {
990
+ global $ct_checkjs_cf7;
991
+ global $wpdb, $current_user, $ct_checkjs_cf7;
992
+
993
+ $options = ct_get_options();
994
+ if (ct_is_user_enable() === false || $options['cf7_test'] == 0) {
995
+ return $html;
996
+ }
997
+
998
+ $html .= ct_add_hidden_fields(0, $ct_checkjs_cf7, true);
999
+
1000
+ return $html;
1001
+ }
1002
+
1003
+ /**
1004
+ * Test CF7 message for spam
1005
+ */
1006
+ function ct_wpcf7_spam($spam) {
1007
+ global $wpdb, $current_user, $ct_agent_version, $ct_checkjs_cf7, $ct_cf7_comment;
1008
+
1009
+ if ($spam === true)
1010
+ return $spam;
1011
+
1012
+ $options = ct_get_options();
1013
+ if (ct_is_user_enable() === false || $options['cf7_test'] == 0) {
1014
+ return $spam;
1015
+ }
1016
+
1017
+ $checkjs = js_test($ct_checkjs_cf7);
1018
+
1019
+ require_once('cleantalk.class.php');
1020
+
1021
+ $example = null;
1022
+ $blog_lang = substr(get_locale(), 0, 2);
1023
+ $user_info = array(
1024
+ 'cms_lang' => $blog_lang,
1025
+ 'REFFERRER' => @$_SERVER['HTTP_REFERER'],
1026
+ 'USER_AGENT' => @$_SERVER['HTTP_USER_AGENT'],
1027
+ );
1028
+ $user_info = json_encode($user_info);
1029
+ if ($user_info === false)
1030
+ $user_info = '';
1031
+
1032
+ $post_info['comment_type'] = 'feedback';
1033
+ $post_info = json_encode($post_info);
1034
+ if ($post_info === false)
1035
+ $post_info = '';
1036
+
1037
+ $sender_email = null;
1038
+ $sender_nickname = null;
1039
+ $message = '';
1040
+ foreach ($_POST as $k => $v) {
1041
+ if ($sender_email === null && preg_match("/^\S+@\S+\.\S+$/", $v)) {
1042
+ $sender_email = $v;
1043
+ }
1044
+ if ($message === '' && preg_match("/-message$/", $k)) {
1045
+ $message = $v;
1046
+ }
1047
+ if ($sender_nickname === null && preg_match("/-name$/", $k)) {
1048
+ $sender_nickname = $v;
1049
+ }
1050
+ }
1051
+
1052
+ $config = get_option('cleantalk_server');
1053
+
1054
+ $ct = new Cleantalk();
1055
+ $ct->work_url = $config['ct_work_url'];
1056
+ $ct->server_url = $options['server'];
1057
+ $ct->server_ttl = $config['ct_server_ttl'];
1058
+ $ct->server_changed = $config['ct_server_changed'];
1059
+
1060
+ $ct_request = new CleantalkRequest();
1061
+
1062
+ $ct_request->auth_key = $options['apikey'];
1063
+ $ct_request->message = $message;
1064
+ $ct_request->example = $example;
1065
+ $ct_request->sender_email = $sender_email;
1066
+ $ct_request->sender_nickname = $sender_nickname;
1067
+ $ct_request->sender_ip = $ct->ct_session_ip($_SERVER['REMOTE_ADDR']);
1068
+ $ct_request->agent = $ct_agent_version;
1069
+ $ct_request->sender_info = $user_info;
1070
+ $ct_request->js_on = $checkjs;
1071
+ $ct_request->post_info = $post_info;
1072
+
1073
+ $ct_result = $ct->isAllowMessage($ct_request);
1074
+ if ($ct->server_change) {
1075
+ update_option(
1076
+ 'cleantalk_server', array(
1077
+ 'ct_work_url' => $ct->work_url,
1078
+ 'ct_server_ttl' => $ct->server_ttl,
1079
+ 'ct_server_changed' => time()
1080
+ )
1081
+ );
1082
+ }
1083
+ if ($ct_result->spam == 1) {
1084
+ $spam = true;
1085
+ $ct_cf7_comment = $ct_result->comment;
1086
+ add_filter('wpcf7_display_message', 'ct_wpcf7_display_message', 10, 2);
1087
+ }
1088
+
1089
+ return $spam;
1090
+ }
1091
+ /**
1092
+ * Changes CF7 status message
1093
+ * @param string $hook URL of hooked page
1094
+ */
1095
+
1096
+ function ct_wpcf7_display_message($message, $status) {
1097
+ global $ct_cf7_comment;
1098
+
1099
+ if ($status == 'spam') {
1100
+ $message = $ct_cf7_comment;
1101
+ }
1102
+
1103
+ return $message;
1104
+ }
1105
 
1106
  /**
1107
  * Admin action 'admin_enqueue_scripts' - Enqueue admin script of reloading admin page after needed AJAX events
1136
  add_settings_field('cleantalk_registrations_test', __('Registration form', 'cleantalk'), 'ct_input_registrations_test', 'cleantalk', 'cleantalk_settings_anti_spam');
1137
  add_settings_field('cleantalk_comments_test', __('Comments form', 'cleantalk'), 'ct_input_comments_test', 'cleantalk', 'cleantalk_settings_anti_spam');
1138
  add_settings_field('cleantalk_formidable_test', __('Formidable Forms', 'cleantalk'), 'ct_input_formidable_test', 'cleantalk', 'cleantalk_settings_anti_spam');
1139
+ add_settings_field('cleantalk_cf7_test', __('Contact form 7', 'cleantalk'), 'ct_input_cf7_test', 'cleantalk', 'cleantalk_settings_anti_spam');
1140
  }
1141
 
1142
  /**
1227
  echo "<input type='radio' id='cleantalk_registrations_test1' name='cleantalk_settings[registrations_test]' value='1' " . ($value == '1' ? 'checked' : '') . " /><label for='cleantalk_registrations_test1'> " . __('Yes') . "</label>";
1228
  echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
1229
  echo "<input type='radio' id='cleantalk_registrations_test0' name='cleantalk_settings[registrations_test]' value='0' " . ($value == '0' ? 'checked' : '') . " /><label for='cleantalk_registrations_test0'> " . __('No') . "</label>";
1230
+ admin_addDescriptionsFields(__('WordPress, BuddyPress', 'cleantalk'));
1231
  }
1232
 
1233
+ /**
1234
+ * Admin callback function - Displays inputs of 'cf7_test' plugin parameter
1235
+ */
1236
+ function ct_input_cf7_test() {
1237
+ $options = ct_get_options();
1238
+ $value = $options['cf7_test'];
1239
+ echo "<input type='radio' id='cleantalk_cf7_test1' name='cleantalk_settings[cf7_test]' value='1' " . ($value == '1' ? 'checked' : '') . " /><label for='cleantalk_cf7_test1'> " . __('Yes') . "</label>";
1240
+ echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
1241
+ echo "<input type='radio' id='cleantalk_cf7_test0' name='cleantalk_settings[cf7_test]' value='0' " . ($value == '0' ? 'checked' : '') . " /><label for='cleantalk_cf7_test0'> " . __('No') . "</label>";
1242
+ }
1243
 
1244
  /**
1245
  * Admin callback function - Plugin parameters validator
1260
  <?php settings_fields('cleantalk_settings'); ?>
1261
  <?php do_settings_sections('cleantalk'); ?>
1262
  <br>
 
 
1263
  <input name="Submit" type="submit" value="<?php esc_attr_e('Save Changes'); ?>" />
1264
  </form>
1265
  </div>
i18n/cleantalk-es_ES.mo ADDED
Binary file
readme.txt CHANGED
@@ -1,38 +1,44 @@
1
  === Anti-spam by CleanTalk ===
2
  Contributors: znaeff, shagimuratov
3
- Tags: spam, antispam, anti-spam, spambot, spam-bot, stop spam, spammers, spamfree, captcha, capcha, captha, catcha, recaptcha, comment, comments, math, cloud, blacklist, puzzle, wpmu, network, multisite, akismet, спам, 垃圾邮件, correo no deseado, forms, formidable forms, feedback, registration
4
  Requires at least: 3.0
5
  Tested up to: 3.7.1
6
- Stable tag: 2.23
7
  License: GPLv2
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
10
- Invisible anti-spam without CAPTCHA. No spam in the comments, registration and feedback forms.
11
 
12
  == Description ==
13
-
14
  1. Stops spam bots in the comments.
15
  1. Stops spam bots in the registration.
16
- 1. Stops spam bots at the Formiadble forms.
17
  1. Invisible spam protection for visitors.
18
  1. Anti-spam without CAPTCHA, math, puzzles or Q&A.
19
 
20
  Plugin filters spam bots in the comments, spam moves to trash. The plugin is not visible for visitors and administrators of a blog. The plugin doesn't use CAPTCHA, Q&A, puzzles or math to stop spammers. It's simple and clever antispam for your blog.
21
 
22
- Also every comment from a new author plugin compares with post and previous comments. If the relevance of the comment is good enough it gets approval at the blog without manual approval.
23
 
24
- The plugin is a client application for anti-spam cloud service <a href="http://cleantalk.org" target="_blank">cleantalk.org</a>. CleanTalk.org daily prevents from spam 5000 blogs, blocks up to 400 000 spam bots attacks and approves up to 4000 not spam comments.
25
 
26
  The plugin is WordPress MultiUser (WPMU or WordPress network) compatible. Each blog in multisite environment has individual anitspam options for spam bots protection.
27
 
28
  = Functions =
29
  * Antispam protection for comments form.
30
- * Antispam protection for registration form.
 
31
  * Antispam protection for <a href="http://wordpress.org/plugins/formidable/" target="_blank">Formiadble forms</a>.
 
32
 
33
  = Requirements =
34
  WordPress 3.0 at least. PHP 4, 5 with CURL or file_get_contents() function and enabled 'allow_url_fopen' setting. <a href="http://cleantalk.org/register?platform=wordpress">Sign up</a> to get an Access key.
35
 
 
 
 
 
 
36
  == Installation ==
37
 
38
  1. Download, install and activate the plugin.
@@ -79,14 +85,19 @@ Plugin by default pass not spam pingbacks/trackbacks (sender host clear at <a hr
79
  Use other antispam plugins not necessarily, because CleanTalk stops 99.99% of spam comments. But if necessary, the plugin can work together with Akismet, Captcha and etc.
80
 
81
  == Screenshots ==
82
-
83
- 1. The comment from spammer (sender blacklisted by IP/Email, comment text not relevant for the post) prohibited to place in the queue WordPress
84
  1. Not spam, not relevant to article comment has moved to approval.
85
- 1. Antispam stoppped spam bot at the registration form
86
- 1. Spam bot stopped at Formidable feedback form
 
87
 
88
  == Changelog ==
89
 
 
 
 
 
 
90
  = 2.23 2013-11-20 =
91
  * New: Added automatic training blacklists on spam bot account deletion.
92
  * New: Added URL to project homepage at plugin options.
@@ -214,6 +225,11 @@ Use other antispam plugins not necessarily, because CleanTalk stops 99.99% of sp
214
  * First version
215
 
216
  == Upgrade Notice ==
 
 
 
 
 
217
  = 2.23 2013-11-20 =
218
  * New: Added automatic training blacklists on spam bot account deletion.
219
  * New: Added URL to project homepage at plugin options.
1
  === Anti-spam by CleanTalk ===
2
  Contributors: znaeff, shagimuratov
3
+ Tags: antispam, anti-spam, spam, captcha, comment, comments, wpmu, network, multisite, forms, registration, login, contact form, buddypress, admin, user, users, post, posts, wordpress, javascript, plugin
4
  Requires at least: 3.0
5
  Tested up to: 3.7.1
6
+ Stable tag: 2.25
7
  License: GPLv2
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
10
+ Cloud antispam for comments, registrations and contacts.
11
 
12
  == Description ==
 
13
  1. Stops spam bots in the comments.
14
  1. Stops spam bots in the registration.
15
+ 1. Stops spam bots in the contact forms.
16
  1. Invisible spam protection for visitors.
17
  1. Anti-spam without CAPTCHA, math, puzzles or Q&A.
18
 
19
  Plugin filters spam bots in the comments, spam moves to trash. The plugin is not visible for visitors and administrators of a blog. The plugin doesn't use CAPTCHA, Q&A, puzzles or math to stop spammers. It's simple and clever antispam for your blog.
20
 
21
+ Also first comment from a new author plugin compares with post and previous comments. If the relevance of the comment is good enough it gets approval at the blog without manual approval.
22
 
23
+ The plugin is a client application for anti-spam cloud service <a href="http://cleantalk.org" target="_blank">cleantalk.org</a>. CleanTalk.org daily prevents from spam 5000 blogs, blocks up to 500 000 spam bots attacks and approves up to 4000 not spam comments.
24
 
25
  The plugin is WordPress MultiUser (WPMU or WordPress network) compatible. Each blog in multisite environment has individual anitspam options for spam bots protection.
26
 
27
  = Functions =
28
  * Antispam protection for comments form.
29
+ * Antispam protection for standard WordPress registration form.
30
+ * Antispam protection for <a href="http://wordpress.org/plugins/buddypress/" target="_blank">BuddyPress</a> registration form.
31
  * Antispam protection for <a href="http://wordpress.org/plugins/formidable/" target="_blank">Formiadble forms</a>.
32
+ * Antispam protection for <a href="http://wordpress.org/plugins/contact-form-7/" target="_blank">Contact form 7</a>.
33
 
34
  = Requirements =
35
  WordPress 3.0 at least. PHP 4, 5 with CURL or file_get_contents() function and enabled 'allow_url_fopen' setting. <a href="http://cleantalk.org/register?platform=wordpress">Sign up</a> to get an Access key.
36
 
37
+ = Translations =
38
+ * English
39
+ * Russian (ru_RU)
40
+ * Spain (es_ES) - thanks to Andrew Kurtis and <a href="http://www.webhostinghub.com/index-c.html?utm_expid=31925339-46.KEGZK8A6Q3yfZW0EUfEw5Q.1">WebHostingHub</a>
41
+
42
  == Installation ==
43
 
44
  1. Download, install and activate the plugin.
85
  Use other antispam plugins not necessarily, because CleanTalk stops 99.99% of spam comments. But if necessary, the plugin can work together with Akismet, Captcha and etc.
86
 
87
  == Screenshots ==
88
+ 1. The comment from spammer (sender blacklisted by IP/Email, comment text not relevant for the post) prohibited to place in the queue WordPress.
 
89
  1. Not spam, not relevant to article comment has moved to approval.
90
+ 1. Antispam stoppped spam bot at the registration form.
91
+ 1. Spam bot stopped at Formidable contact form.
92
+ 1. Spam bot stopped at Contact form 7.
93
 
94
  == Changelog ==
95
 
96
+ = 2.25 2013-11-27 =
97
+ * New: Added protection against spam bots for BuddyPress registrations.
98
+ * New: Added protection against spam bots for Contact form 7.
99
+ * New: Added Spanish (es_ES) translation.
100
+
101
  = 2.23 2013-11-20 =
102
  * New: Added automatic training blacklists on spam bot account deletion.
103
  * New: Added URL to project homepage at plugin options.
225
  * First version
226
 
227
  == Upgrade Notice ==
228
+ = 2.25 2013-11-27 =
229
+ * New: Added protection against spam bots for BuddyPress registrations.
230
+ * New: Added protection against spam bots for Contact form 7.
231
+ * New: Added Spanish (es_ES) translation.
232
+
233
  = 2.23 2013-11-20 =
234
  * New: Added automatic training blacklists on spam bot account deletion.
235
  * New: Added URL to project homepage at plugin options.
screenshot-5.png ADDED
Binary file