Spam protection, AntiSpam, FireWall by CleanTalk - Version 2.27

Version Description

2013-12-06 = * New: Added protection against spam bots for JetPack Contact form. * Fixed: JavaScript antispam logic for registrations and Contact form 7.

Download this release

Release Info

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

Code changes from version 2.25 to 2.27

Files changed (3) hide show
  1. cleantalk.php +169 -37
  2. i18n/cleantalk-ru_RU.mo +0 -0
  3. readme.txt +24 -24
cleantalk.php CHANGED
@@ -2,13 +2,13 @@
2
  /*
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';
@@ -16,8 +16,12 @@ $ct_session_request_id_label = 'request_id';
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
@@ -37,6 +41,10 @@ add_filter('bp_signup_validate', 'ct_registration_errors');
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');
@@ -75,8 +83,7 @@ function ct_def_options() {
75
  'autoPubRevelantMess' => '1',
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
  );
@@ -202,22 +209,35 @@ function ct_init_session() {
202
  }
203
 
204
  /**
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
 
212
  $options = ct_get_options();
213
- if (ct_is_user_enable() === false || $options['comments_test'] == 0) {
214
  return false;
215
  }
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");
@@ -863,8 +883,14 @@ function delete_spam_comments() {
863
  */
864
  function ct_register_form() {
865
  global $ct_checkjs_register_form;
 
 
 
 
 
 
 
866
 
867
- ct_add_hidden_fields(0, $ct_checkjs_register_form);
868
  return null;
869
  }
870
 
@@ -983,15 +1009,132 @@ function ct_delete_user($user_id) {
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
 
@@ -1006,11 +1149,11 @@ function ct_wpcf7_form_elements($html) {
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
 
@@ -1133,10 +1276,9 @@ function ct_admin_init() {
1133
  add_settings_field('cleantalk_apikey', __('Access key', 'cleantalk'), 'ct_input_apikey', 'cleantalk', 'cleantalk_settings_main');
1134
  add_settings_field('cleantalk_autoPubRevelantMess', __('Publish relevant comments', 'cleantalk'), 'ct_input_autoPubRevelantMess', 'cleantalk', 'cleantalk_settings_main');
1135
  add_settings_field('cleantalk_remove_old_spam', __('Automatically delete spam comments', 'cleantalk'), 'ct_input_remove_old_spam', 'cleantalk', 'cleantalk_settings_main');
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
  /**
@@ -1196,17 +1338,6 @@ function ct_input_apikey() {
1196
  }
1197
  }
1198
 
1199
- /**
1200
- * Admin callback function - Displays inputs of 'formidable_test' plugin parameter
1201
- */
1202
- function ct_input_formidable_test() {
1203
- $options = ct_get_options();
1204
- $value = $options['formidable_test'];
1205
- echo "<input type='radio' id='cleantalk_formidable_test1' name='cleantalk_settings[formidable_test]' value='1' " . ($value == '1' ? 'checked' : '') . " /><label for='cleantalk_formidable_test1'> " . __('Yes') . "</label>";
1206
- echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
1207
- echo "<input type='radio' id='cleantalk_formidable_test0' name='cleantalk_settings[formidable_test]' value='0' " . ($value == '0' ? 'checked' : '') . " /><label for='cleantalk_formidable_test0'> " . __('No') . "</label>";
1208
- }
1209
-
1210
  /**
1211
  * Admin callback function - Displays inputs of 'comments_test' plugin parameter
1212
  */
@@ -1231,14 +1362,15 @@ function ct_input_registrations_test() {
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
  /**
2
  /*
3
  Plugin Name: Anti-spam by CleanTalk
4
  Plugin URI: http://cleantalk.org/wordpress
5
+ Description: Cloud antispam for comments, registrations and contacts. The plugin doesn't use CAPTCHA, Q&A, math, counting animals or quiz to stop spam bots.
6
+ Version: 2.27
7
  Author: СleanTalk <welcome@cleantalk.ru>
8
  Author URI: http://cleantalk.org
9
  */
10
 
11
+ $ct_agent_version = 'wordpress-227';
12
  $ct_checkjs_frm = 'ct_checkjs_frm';
13
  $ct_checkjs_register_form = 'ct_checkjs_register_form';
14
  $ct_session_request_id_label = 'request_id';
16
  $ct_checkjs_cf7 = 'ct_checkjs_cf7';
17
  $ct_cf7_comment = 'This is a spam!';
18
 
19
+ $ct_checkjs_jpcf = 'ct_checkjs_jpcf';
20
+ $ct_jpcf_patched = false;
21
+ $ct_jpcf_fields = array('name', 'email');
22
+
23
  // Comments
24
+ add_action('comment_form', 'ct_comment_form');
25
  add_filter('preprocess_comment', 'ct_check'); // param - comment data array
26
 
27
  // Formidable
41
  add_filter('wpcf7_form_elements', 'ct_wpcf7_form_elements');
42
  add_filter('wpcf7_spam', 'ct_wpcf7_spam');
43
 
44
+ // JetPack Contact form
45
+ add_filter('grunion_contact_form_field_html', 'ct_grunion_contact_form_field_html', 10, 2);
46
+ add_filter('contact_form_is_spam', 'ct_contact_form_is_spam');
47
+
48
  if (is_admin()) {
49
  add_action('admin_init', 'ct_admin_init', 1);
50
  add_action('admin_menu', 'ct_admin_add_page');
83
  'autoPubRevelantMess' => '1',
84
  'registrations_test' => '1',
85
  'comments_test' => '1',
86
+ 'contact_forms_test' => '1',
 
87
  'remove_old_spam' => '0',
88
  'spam_store_days' => '31' // Days before delete comments from folder Spam
89
  );
209
  }
210
 
211
  /**
212
+ * Adds hidden filed to comment form
 
213
  */
214
+ function ct_comment_form() {
215
+ if (ct_is_user_enable() === false) {
216
+ return false;
217
+ }
218
 
219
  $options = ct_get_options();
220
+ if ($options['comments_test'] == 0) {
221
  return false;
222
  }
223
 
224
+ ct_add_hidden_fields(0, 'ct_checkjs', false);
225
+
226
+ return null;
227
+ }
228
+
229
+ /**
230
+ * Adds hidden filed to define avaialbility of client's JavaScript
231
+ * @param int $post_id Post ID, not used
232
+ */
233
+ function ct_add_hidden_fields($post_id = 0, $field_name = 'ct_checkjs', $return_string = false) {
234
+ $ct_checkjs_def = 0;
235
+ $ct_checkjs_key = ct_get_checkjs_value();
236
+
237
  ct_init_session();
238
  $_SESSION['formtime'] = time();
239
  $html = '
240
+ <input type="hidden" id="%s" name="%s" value="0" />
241
  <script type="text/javascript">
242
  // <![CDATA[
243
  document.getElementById("%s").value = document.getElementById("%s").value.replace("%s", "%s");
883
  */
884
  function ct_register_form() {
885
  global $ct_checkjs_register_form;
886
+
887
+ $options = ct_get_options();
888
+ if ($options['registrations_test'] == 0) {
889
+ return false;
890
+ }
891
+
892
+ ct_add_hidden_fields(0, $ct_checkjs_register_form, false);
893
 
 
894
  return null;
895
  }
896
 
1009
  }
1010
  }
1011
 
1012
+ /**
1013
+ * Test for JetPack contact form
1014
+ */
1015
+ function ct_grunion_contact_form_field_html($r, $field_label) {
1016
+ global $ct_checkjs_jpcf, $ct_jpcf_patched, $ct_jpcf_fields;
1017
+
1018
+ $options = ct_get_options();
1019
+ if ($options['contact_forms_test'] == 1 && $ct_jpcf_patched === false && preg_match("/[text|email]/i", $r)) {
1020
+
1021
+ // Looking for element name prefix
1022
+ $name_patched = false;
1023
+ foreach ($ct_jpcf_fields as $v) {
1024
+ if ($name_patched === false && preg_match("/(g\d-)$v/", $r, $matches)) {
1025
+ $ct_checkjs_jpcf = $matches[1] . $ct_checkjs_jpcf;
1026
+ $name_patched = true;
1027
+ }
1028
+ }
1029
+
1030
+ $r .= ct_add_hidden_fields(0, $ct_checkjs_jpcf, true);
1031
+ $ct_jpcf_patched = true;
1032
+ }
1033
+
1034
+ return $r;
1035
+ }
1036
+ /**
1037
+ * Test for JetPack contact form
1038
+ */
1039
+ function ct_contact_form_is_spam($form) {
1040
+ global $ct_checkjs_jpcf;
1041
+
1042
+ $options = ct_get_options();
1043
+
1044
+ if ($options['contact_forms_test'] == 0) {
1045
+ return null;
1046
+ }
1047
+
1048
+ $js_field_name = $ct_checkjs_jpcf;
1049
+ foreach ($_POST as $k => $v) {
1050
+ if (preg_match("/^.+$ct_checkjs_jpcf$/", $k))
1051
+ $js_field_name = $k;
1052
+ }
1053
+ $checkjs = js_test($js_field_name);
1054
+
1055
+ require_once('cleantalk.class.php');
1056
+
1057
+ $example = null;
1058
+ $blog_lang = substr(get_locale(), 0, 2);
1059
+ $user_info = array(
1060
+ 'cms_lang' => $blog_lang,
1061
+ 'REFFERRER' => @$_SERVER['HTTP_REFERER'],
1062
+ 'USER_AGENT' => @$_SERVER['HTTP_USER_AGENT'],
1063
+ 'sender_url' => @$form['comment_author_url'],
1064
+ );
1065
+
1066
+ $user_info = json_encode($user_info);
1067
+ if ($user_info === false)
1068
+ $user_info = '';
1069
+
1070
+ $post_info['comment_type'] = 'feedback';
1071
+ $post_info = json_encode($post_info);
1072
+ if ($post_info === false)
1073
+ $post_info = '';
1074
+
1075
+ $sender_email = null;
1076
+ $sender_nickname = null;
1077
+ $message = '';
1078
+ if (isset($form['comment_author_email']))
1079
+ $sender_email = $form['comment_author_email'];
1080
+
1081
+ if (isset($form['comment_author']))
1082
+ $sender_nickname = $form['comment_author'];
1083
+
1084
+ if (isset($form['comment_content']))
1085
+ $message = $form['comment_content'];
1086
+
1087
+ $config = get_option('cleantalk_server');
1088
+
1089
+ $ct = new Cleantalk();
1090
+ $ct->work_url = $config['ct_work_url'];
1091
+ $ct->server_url = $options['server'];
1092
+ $ct->server_ttl = $config['ct_server_ttl'];
1093
+ $ct->server_changed = $config['ct_server_changed'];
1094
+
1095
+ $ct_request = new CleantalkRequest();
1096
+
1097
+ $ct_request->auth_key = $options['apikey'];
1098
+ $ct_request->message = $message;
1099
+ $ct_request->example = $example;
1100
+ $ct_request->sender_email = $sender_email;
1101
+ $ct_request->sender_nickname = $sender_nickname;
1102
+ $ct_request->sender_ip = $ct->ct_session_ip($_SERVER['REMOTE_ADDR']);
1103
+ $ct_request->agent = $ct_agent_version;
1104
+ $ct_request->sender_info = $user_info;
1105
+ $ct_request->js_on = $checkjs;
1106
+ $ct_request->post_info = $post_info;
1107
+
1108
+ $ct_result = $ct->isAllowMessage($ct_request);
1109
+
1110
+ if ($ct->server_change) {
1111
+ update_option(
1112
+ 'cleantalk_server', array(
1113
+ 'ct_work_url' => $ct->work_url,
1114
+ 'ct_server_ttl' => $ct->server_ttl,
1115
+ 'ct_server_changed' => time()
1116
+ )
1117
+ );
1118
+ }
1119
+ if ($ct_result->spam == 1) {
1120
+ global $ct_comment;
1121
+ $ct_comment = $ct_result->comment;
1122
+ ct_die(null, null);
1123
+ exit;
1124
+ }
1125
+
1126
+ return (bool) $ct_result->spam;
1127
+ }
1128
+
1129
  /**
1130
  * Inserts anti-spam hidden to CF7
1131
  */
1132
  function ct_wpcf7_form_elements($html) {
1133
  global $ct_checkjs_cf7;
1134
  global $wpdb, $current_user, $ct_checkjs_cf7;
1135
+
1136
  $options = ct_get_options();
1137
+ if ($options['contact_forms_test'] == 0) {
1138
  return $html;
1139
  }
1140
 
1149
  function ct_wpcf7_spam($spam) {
1150
  global $wpdb, $current_user, $ct_agent_version, $ct_checkjs_cf7, $ct_cf7_comment;
1151
 
1152
+ $options = ct_get_options();
1153
  if ($spam === true)
1154
  return $spam;
1155
 
1156
+ if ($options['contact_forms_test'] == 0) {
 
1157
  return $spam;
1158
  }
1159
 
1276
  add_settings_field('cleantalk_apikey', __('Access key', 'cleantalk'), 'ct_input_apikey', 'cleantalk', 'cleantalk_settings_main');
1277
  add_settings_field('cleantalk_autoPubRevelantMess', __('Publish relevant comments', 'cleantalk'), 'ct_input_autoPubRevelantMess', 'cleantalk', 'cleantalk_settings_main');
1278
  add_settings_field('cleantalk_remove_old_spam', __('Automatically delete spam comments', 'cleantalk'), 'ct_input_remove_old_spam', 'cleantalk', 'cleantalk_settings_main');
1279
+ add_settings_field('cleantalk_registrations_test', __('Registration forms', 'cleantalk'), 'ct_input_registrations_test', 'cleantalk', 'cleantalk_settings_anti_spam');
1280
  add_settings_field('cleantalk_comments_test', __('Comments form', 'cleantalk'), 'ct_input_comments_test', 'cleantalk', 'cleantalk_settings_anti_spam');
1281
+ add_settings_field('cleantalk_contact_forms_test', __('Contact forms', 'cleantalk'), 'ct_input_contact_forms_test', 'cleantalk', 'cleantalk_settings_anti_spam');
 
1282
  }
1283
 
1284
  /**
1338
  }
1339
  }
1340
 
 
 
 
 
 
 
 
 
 
 
 
1341
  /**
1342
  * Admin callback function - Displays inputs of 'comments_test' plugin parameter
1343
  */
1362
  }
1363
 
1364
  /**
1365
+ * Admin callback function - Displays inputs of 'contact_forms_test' plugin parameter
1366
  */
1367
+ function ct_input_contact_forms_test() {
1368
  $options = ct_get_options();
1369
+ $value = $options['contact_forms_test'];
1370
+ echo "<input type='radio' id='cleantalk_contact_forms_test1' name='cleantalk_settings[contact_forms_test]' value='1' " . ($value == '1' ? 'checked' : '') . " /><label for='cleantalk_contact_forms_test1'> " . __('Yes') . "</label>";
1371
  echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
1372
+ echo "<input type='radio' id='cleantalk_contact_forms_test0' name='cleantalk_settings[contact_forms_test]' value='0' " . ($value == '0' ? 'checked' : '') . " /><label for='cleantalk_contact_forms_test0'> " . __('No') . "</label>";
1373
+ admin_addDescriptionsFields(__('Contact Form 7, Formiadble forms, JetPack', 'cleantalk'));
1374
  }
1375
 
1376
  /**
i18n/cleantalk-ru_RU.mo CHANGED
Binary file
readme.txt CHANGED
@@ -1,39 +1,33 @@
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)
@@ -66,7 +60,6 @@ Plugin sends a comment's text and several previous approved comments to the clou
66
  Plugin works with all WordPress themes. With some themes may not works JavaScript antispam method, but it's not crucial to protect your blog from spam.
67
 
68
  = How can I test antispam protection? =
69
-
70
  Please use test email stop_email@example.com for comments. Also you can see comments proccessed by plugin for last 7 days at <a href="http://cleantalk.org/my/show_requests">Control panel</a> or look at folder "Spam" for banned comments.
71
 
72
  = How the plugin is effective against spam bots? =
@@ -76,7 +69,6 @@ Plugin Antispam by CleanTalk stops about 99.99% of spam comments by spam bots. M
76
  Plugin by default pass not spam pingbacks/trackbacks (sender host clear at <a href="http://cleantalk.org/blacklists">Blacklists IP</a> database) from third-party sites to the blog. If the pingback has more then 3 records in the Blacklists and not relevant to the blog the pingback will be stopped by CleanTalk.
77
 
78
  = Why do I need one more anti-spam plugin? =
79
-
80
  1. The plugin is more effective than CAPTCHA because use several methods to stop spammers.
81
  1. This plugin stops spam bots automatically, plugin invisible for blog visitors and admins.
82
  1. CleanTalk automatically approves relevant, not spam comments.
@@ -93,6 +85,10 @@ Use other antispam plugins not necessarily, because CleanTalk stops 99.99% of sp
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.
@@ -225,6 +221,10 @@ Use other antispam plugins not necessarily, because CleanTalk stops 99.99% of sp
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.
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, bbpress, admin, user, users, post, posts, wordpress, javascript, plugin, blacklists, cloud, math, signup, akismet
4
  Requires at least: 3.0
5
+ Tested up to: 3.8
6
+ Stable tag: 2.27
7
  License: GPLv2
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
10
+ Cloud antispam for comments, signups and contacts.
11
 
12
  == Description ==
13
+ 1. Stops spam bots comments.
14
+ 1. Stops spam bots signups.
15
+ 1. Stops spam bots contacts emails.
16
+ = Antispam features =
17
+ * WordPress comments and signups.
18
+ * BuddyPress, bbPress signups.
19
+ * Formiadble forms.
20
+ * Contact form 7.
21
+ * JetPack Contact form.
22
+ * no CAPTCHA, no questions, no counting animals, no puzzles, no math.
 
23
 
24
  The plugin is WordPress MultiUser (WPMU or WordPress network) compatible. Each blog in multisite environment has individual anitspam options for spam bots protection.
25
 
26
+ Spam comments moves to SPAM folder. 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.
 
 
 
 
 
27
 
28
+ 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.
29
  = Requirements =
30
  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.
 
31
  = Translations =
32
  * English
33
  * Russian (ru_RU)
60
  Plugin works with all WordPress themes. With some themes may not works JavaScript antispam method, but it's not crucial to protect your blog from spam.
61
 
62
  = How can I test antispam protection? =
 
63
  Please use test email stop_email@example.com for comments. Also you can see comments proccessed by plugin for last 7 days at <a href="http://cleantalk.org/my/show_requests">Control panel</a> or look at folder "Spam" for banned comments.
64
 
65
  = How the plugin is effective against spam bots? =
69
  Plugin by default pass not spam pingbacks/trackbacks (sender host clear at <a href="http://cleantalk.org/blacklists">Blacklists IP</a> database) from third-party sites to the blog. If the pingback has more then 3 records in the Blacklists and not relevant to the blog the pingback will be stopped by CleanTalk.
70
 
71
  = Why do I need one more anti-spam plugin? =
 
72
  1. The plugin is more effective than CAPTCHA because use several methods to stop spammers.
73
  1. This plugin stops spam bots automatically, plugin invisible for blog visitors and admins.
74
  1. CleanTalk automatically approves relevant, not spam comments.
85
 
86
  == Changelog ==
87
 
88
+ = 2.27 2013-12-06 =
89
+ * New: Added protection against spam bots for JetPack Contact form.
90
+ * Fixed: JavaScript antispam logic for registrations and Contact form 7.
91
+
92
  = 2.25 2013-11-27 =
93
  * New: Added protection against spam bots for BuddyPress registrations.
94
  * New: Added protection against spam bots for Contact form 7.
221
  * First version
222
 
223
  == Upgrade Notice ==
224
+ = 2.27 2013-12-06 =
225
+ * New: Added protection against spam bots for JetPack Contact form.
226
+ * Fixed: JavaScript antispam logic for registrations and Contact form 7.
227
+
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.