Version Description
2013-11-13 = * Changed: WordPress blacklists settings get priority over plugin's antispam settings * Changed: Disabled management approval comments for regular commentators of the blog. Automatically approved for publication only the comments of the new blog authors. * Changed: Removed form submit time test. Imporved JavaScript spam test. * Changed: PHP code optimizations
Download this release
Release Info
Developer | shagimuratov |
Plugin | Spam protection, AntiSpam, FireWall by CleanTalk |
Version | 2.21 |
Comparing to | |
See all releases |
Code changes from version 2.19 to 2.21
- cleantalk.class.php +1 -1
- cleantalk.php +89 -68
- i18n/cleantalk-ru_RU.mo +0 -0
- readme.txt +16 -5
cleantalk.class.php
CHANGED
@@ -151,7 +151,7 @@ class CleantalkResponse {
|
|
151 |
|
152 |
$this->errstr = preg_replace("/.+(\*\*\*.+\*\*\*).+/", "$1", $this->errstr);
|
153 |
// Разбираем ответ с клинтолка
|
154 |
-
$this->stop_words = isset($obj->stop_words) ? $obj->stop_words : null;
|
155 |
$this->comment = isset($obj->comment) ? utf8_decode($obj->comment) : null;
|
156 |
$this->blacklisted = (isset($obj->blacklisted)) ? $obj->blacklisted : null;
|
157 |
$this->allow = (isset($obj->allow)) ? $obj->allow : 0;
|
151 |
|
152 |
$this->errstr = preg_replace("/.+(\*\*\*.+\*\*\*).+/", "$1", $this->errstr);
|
153 |
// Разбираем ответ с клинтолка
|
154 |
+
$this->stop_words = isset($obj->stop_words) ? utf8_decode($obj->stop_words) : null;
|
155 |
$this->comment = isset($obj->comment) ? utf8_decode($obj->comment) : null;
|
156 |
$this->blacklisted = (isset($obj->blacklisted)) ? $obj->blacklisted : null;
|
157 |
$this->allow = (isset($obj->allow)) ? $obj->allow : 0;
|
cleantalk.php
CHANGED
@@ -3,16 +3,15 @@
|
|
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.
|
7 |
Author: СleanTalk <welcome@cleantalk.ru>
|
8 |
Author URI: http://cleantalk.org
|
9 |
*/
|
10 |
|
11 |
-
$ct_agent_version = 'wordpress-
|
12 |
$ct_checkjs_frm = 'ct_checkjs_frm';
|
13 |
$ct_checkjs_register_form = 'ct_checkjs_register_form';
|
14 |
|
15 |
-
add_action('init', 'ct_init_locale');
|
16 |
add_action('comment_form', 'ct_add_hidden_fields');
|
17 |
add_action('parse_request', 'ct_set_session');
|
18 |
add_action('admin_notices', 'admin_notice_message');
|
@@ -24,7 +23,7 @@ add_action('register_form','ct_register_form');
|
|
24 |
add_filter('registration_errors', 'ct_registration_errors', 10, 3);
|
25 |
|
26 |
if (is_admin()) {
|
27 |
-
add_action('admin_init', 'ct_admin_init');
|
28 |
add_action('admin_menu', 'ct_admin_add_page');
|
29 |
add_action('admin_enqueue_scripts', 'ct_enqueue_scripts');
|
30 |
add_action('comment_unapproved_to_approved', 'ct_comment_approved'); // param - comment object
|
@@ -89,6 +88,7 @@ function ct_hash($new_hash = '') {
|
|
89 |
* @return string comment_content w\o cleantalk resume
|
90 |
*/
|
91 |
function ct_feedback($hash, $message, $allow) {
|
|
|
92 |
require_once('cleantalk.class.php');
|
93 |
$options = ct_get_options();
|
94 |
|
@@ -121,8 +121,8 @@ function ct_feedback($hash, $message, $allow) {
|
|
121 |
* @return bool
|
122 |
*/
|
123 |
function ct_send_feedback($feedback_request = null) {
|
124 |
-
|
125 |
-
|
126 |
$feedback_request = $_SESSION['feedback_request'];
|
127 |
unset($_SESSION['feedback_request']);
|
128 |
}
|
@@ -165,10 +165,19 @@ function ct_send_feedback($feedback_request = null) {
|
|
165 |
*/
|
166 |
function ct_init_locale() {
|
167 |
load_plugin_textdomain('cleantalk', false, basename(dirname(__FILE__)) . '/i18n');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
168 |
if(!session_id()) {
|
169 |
session_name('cleantalksession');
|
170 |
-
session_start();
|
171 |
}
|
|
|
|
|
172 |
}
|
173 |
|
174 |
/**
|
@@ -207,7 +216,6 @@ function ct_set_session() {
|
|
207 |
// this action is called AFTER wp-comments-post.php executing and AFTER ct_check calling so we can create new session value here
|
208 |
// it can be any action between init and send_headers, see http://codex.wordpress.org/Plugin_API/Action_Reference
|
209 |
|
210 |
-
$_SESSION['formtime'] = time();
|
211 |
}
|
212 |
|
213 |
/**
|
@@ -268,12 +276,7 @@ function ct_frm_validate_entry ($errors, $values) {
|
|
268 |
return false;
|
269 |
}
|
270 |
|
271 |
-
$checkjs =
|
272 |
-
if (isset($_POST[$ct_checkjs_frm])) {
|
273 |
-
if($_POST[$ct_checkjs_frm] == ct_get_checkjs_value()) {
|
274 |
-
$checkjs = 1;
|
275 |
-
}
|
276 |
-
}
|
277 |
|
278 |
require_once('cleantalk.class.php');
|
279 |
|
@@ -351,12 +354,26 @@ function ct_check($comment) {
|
|
351 |
// this action is called by wp-comments-post.php
|
352 |
// after processing WP makes redirect to post page with comment's form by GET request (see above)
|
353 |
global $wpdb, $current_user, $comment_post_id, $ct_agent_version;
|
354 |
-
|
355 |
$options = ct_get_options();
|
356 |
if (ct_is_user_enable() === false || $options['comments_test'] == 0) {
|
357 |
return $comment;
|
358 |
}
|
359 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
360 |
$wp_host = null;
|
361 |
if (preg_match("@^(?:https?://)([^/:]+)@i", get_permalink($comment['comment_post_ID']), $matches))
|
362 |
$wp_host = $matches[1];
|
@@ -374,20 +391,7 @@ function ct_check($comment) {
|
|
374 |
|
375 |
$post = get_post($comment_post_id);
|
376 |
|
377 |
-
$checkjs =
|
378 |
-
if (!isset($_POST['ct_checkjs'])) {
|
379 |
-
$checkjs = null;
|
380 |
-
} elseif($_POST['ct_checkjs'] == ct_get_checkjs_value()) {
|
381 |
-
$checkjs = 1;
|
382 |
-
} elseif ($_POST['ct_checkjs'] !== 0) {
|
383 |
-
$checkjs = 0;
|
384 |
-
}
|
385 |
-
|
386 |
-
if (array_key_exists('formtime', $_SESSION)) {
|
387 |
-
$submit_time = time() - (int) $_SESSION['formtime'];
|
388 |
-
} else {
|
389 |
-
$submit_time = null;
|
390 |
-
}
|
391 |
|
392 |
$example = null;
|
393 |
if (function_exists('json_encode')) {
|
@@ -450,7 +454,6 @@ function ct_check($comment) {
|
|
450 |
$ct_request->sender_ip = $ct->ct_session_ip($_SERVER['REMOTE_ADDR']);
|
451 |
$ct_request->agent = $ct_agent_version;
|
452 |
$ct_request->sender_info = $user_info;
|
453 |
-
$ct_request->submit_time = $submit_time;
|
454 |
$ct_request->js_on = $checkjs;
|
455 |
$ct_request->post_info = $post_info;
|
456 |
|
@@ -469,32 +472,63 @@ function ct_check($comment) {
|
|
469 |
$err_text = '<center><b style="color: #49C73B;">Clean</b><b style="color: #349ebf;">Talk.</b> ' . __('Spam protection', 'cleantalk') . "</center><br><br>\n" . $ct_result->comment;
|
470 |
$err_text .= '<script>setTimeout("history.back()", 5000);</script>';
|
471 |
wp_die($err_text, 'Blacklisted', array('back_link' => true));
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
481 |
}
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
|
|
489 |
add_filter('pre_comment_approved', 'ct_set_not_approved');
|
490 |
}
|
|
|
|
|
491 |
}
|
492 |
-
|
493 |
-
add_action('comment_post', 'ct_set_meta', 10, 2);
|
494 |
}
|
|
|
495 |
return $comment;
|
496 |
}
|
497 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
498 |
/**
|
499 |
* Get post url
|
500 |
* @param int $comment_id
|
@@ -519,18 +553,6 @@ function ct_post_url($comment_id = null, $comment_post_id) {
|
|
519 |
return $post_url;
|
520 |
}
|
521 |
|
522 |
-
/**
|
523 |
-
* Set die page with Cleantalk comment.
|
524 |
-
* @global type $ct_comment
|
525 |
-
$err_text = '<center><b style="color: #49C73B;">Clean</b><b style="color: #349ebf;">Talk.</b> ' . __('Spam protection', 'cleantalk') . "</center><br><br>\n" . $ct_comment;
|
526 |
-
* @param type $comment_status
|
527 |
-
*/
|
528 |
-
function ct_die($comment_id, $comment_status) {
|
529 |
-
global $ct_comment;
|
530 |
-
$err_text = '<center><b style="color: #49C73B;">Clean</b><b style="color: #349ebf;">Talk.</b> ' . __('Spam protection', 'cleantalk') . "</center><br><br>\n" . $ct_comment;
|
531 |
-
$err_text .= '<script>setTimeout("history.back()", 5000);</script>';
|
532 |
-
wp_die($err_text, 'Blacklisted', array('back_link' => true));
|
533 |
-
}
|
534 |
/**
|
535 |
* Public filter 'pre_comment_approved' - Mark comment unapproved always
|
536 |
* @return int Zero
|
@@ -777,7 +799,6 @@ function delete_spam_comments() {
|
|
777 |
}
|
778 |
}
|
779 |
|
780 |
-
|
781 |
return null;
|
782 |
}
|
783 |
|
@@ -805,12 +826,8 @@ function ct_registration_errors($errors, $sanitized_user_login, $user_email) {
|
|
805 |
return $errors;
|
806 |
}
|
807 |
|
808 |
-
$checkjs =
|
809 |
-
|
810 |
-
if($_POST[$ct_checkjs_register_form] == ct_get_checkjs_value()) {
|
811 |
-
$checkjs = 1;
|
812 |
-
}
|
813 |
-
}
|
814 |
require_once('cleantalk.class.php');
|
815 |
|
816 |
$blog_lang = substr(get_locale(), 0, 2);
|
@@ -883,6 +900,10 @@ function ct_admin_add_page() {
|
|
883 |
* Admin action 'admin_init' - Add the admin settings and such
|
884 |
*/
|
885 |
function ct_admin_init() {
|
|
|
|
|
|
|
|
|
886 |
register_setting('cleantalk_settings', 'cleantalk_settings', 'ct_settings_validate');
|
887 |
add_settings_section('cleantalk_settings_main', __('Main settings', 'cleantalk'), 'ct_section_settings_main', 'cleantalk');
|
888 |
add_settings_section('cleantalk_settings_anti_spam', __('Anti-spam settings', 'cleantalk'), 'ct_section_settings_anti_spam', 'cleantalk');
|
@@ -920,7 +941,7 @@ function ct_input_autoPubRevelantMess () {
|
|
920 |
echo "<input type='radio' id='cleantalk_autoPubRevelantMess1' name='cleantalk_settings[autoPubRevelantMess]' value='1' " . ($value == '1' ? 'checked' : '') . " /><label for='cleantalk_autoPubRevelantMess1'> " . __('Yes') . "</label>";
|
921 |
echo ' ';
|
922 |
echo "<input type='radio' id='cleantalk_autoPubRevelantMess0' name='cleantalk_settings[autoPubRevelantMess]' value='0' " . ($value == '0' ? 'checked' : '') . " /><label for='cleantalk_autoPubRevelantMess0'> " . __('No') . "</label>";
|
923 |
-
admin_addDescriptionsFields(__('Relevant (not spam) comments will be automatic published at the blog', 'cleantalk'));
|
924 |
}
|
925 |
/**
|
926 |
* @author Artem Leontiev
|
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.21
|
7 |
Author: СleanTalk <welcome@cleantalk.ru>
|
8 |
Author URI: http://cleantalk.org
|
9 |
*/
|
10 |
|
11 |
+
$ct_agent_version = 'wordpress-221';
|
12 |
$ct_checkjs_frm = 'ct_checkjs_frm';
|
13 |
$ct_checkjs_register_form = 'ct_checkjs_register_form';
|
14 |
|
|
|
15 |
add_action('comment_form', 'ct_add_hidden_fields');
|
16 |
add_action('parse_request', 'ct_set_session');
|
17 |
add_action('admin_notices', 'admin_notice_message');
|
23 |
add_filter('registration_errors', 'ct_registration_errors', 10, 3);
|
24 |
|
25 |
if (is_admin()) {
|
26 |
+
add_action('admin_init', 'ct_admin_init', 1);
|
27 |
add_action('admin_menu', 'ct_admin_add_page');
|
28 |
add_action('admin_enqueue_scripts', 'ct_enqueue_scripts');
|
29 |
add_action('comment_unapproved_to_approved', 'ct_comment_approved'); // param - comment object
|
88 |
* @return string comment_content w\o cleantalk resume
|
89 |
*/
|
90 |
function ct_feedback($hash, $message, $allow) {
|
91 |
+
|
92 |
require_once('cleantalk.class.php');
|
93 |
$options = ct_get_options();
|
94 |
|
121 |
* @return bool
|
122 |
*/
|
123 |
function ct_send_feedback($feedback_request = null) {
|
124 |
+
|
125 |
+
if (empty($feedback_request) && isset($_SESSION['feedback_request']) && preg_match("/^[a-z0-9\;\:]+$/", $_SESSION['feedback_request'])) {
|
126 |
$feedback_request = $_SESSION['feedback_request'];
|
127 |
unset($_SESSION['feedback_request']);
|
128 |
}
|
165 |
*/
|
166 |
function ct_init_locale() {
|
167 |
load_plugin_textdomain('cleantalk', false, basename(dirname(__FILE__)) . '/i18n');
|
168 |
+
}
|
169 |
+
|
170 |
+
/**
|
171 |
+
* Session init
|
172 |
+
* @return null;
|
173 |
+
*/
|
174 |
+
function ct_init_session() {
|
175 |
if(!session_id()) {
|
176 |
session_name('cleantalksession');
|
177 |
+
@session_start();
|
178 |
}
|
179 |
+
|
180 |
+
return null;
|
181 |
}
|
182 |
|
183 |
/**
|
216 |
// this action is called AFTER wp-comments-post.php executing and AFTER ct_check calling so we can create new session value here
|
217 |
// it can be any action between init and send_headers, see http://codex.wordpress.org/Plugin_API/Action_Reference
|
218 |
|
|
|
219 |
}
|
220 |
|
221 |
/**
|
276 |
return false;
|
277 |
}
|
278 |
|
279 |
+
$checkjs = js_test($ct_checkjs_frm);
|
|
|
|
|
|
|
|
|
|
|
280 |
|
281 |
require_once('cleantalk.class.php');
|
282 |
|
354 |
// this action is called by wp-comments-post.php
|
355 |
// after processing WP makes redirect to post page with comment's form by GET request (see above)
|
356 |
global $wpdb, $current_user, $comment_post_id, $ct_agent_version;
|
357 |
+
|
358 |
$options = ct_get_options();
|
359 |
if (ct_is_user_enable() === false || $options['comments_test'] == 0) {
|
360 |
return $comment;
|
361 |
}
|
362 |
|
363 |
+
$local_blacklists = wp_blacklist_check(
|
364 |
+
$comment['comment_author'],
|
365 |
+
$comment['comment_author_email'],
|
366 |
+
$comment['comment_author_url'],
|
367 |
+
$comment['comment_content'],
|
368 |
+
@$_SERVER['REMOTE_ADDR'],
|
369 |
+
@$_SERVER['HTTP_USER_AGENT']
|
370 |
+
);
|
371 |
+
|
372 |
+
// Go out if author in local blacklists
|
373 |
+
if ($local_blacklists === true) {
|
374 |
+
return $comment;
|
375 |
+
}
|
376 |
+
|
377 |
$wp_host = null;
|
378 |
if (preg_match("@^(?:https?://)([^/:]+)@i", get_permalink($comment['comment_post_ID']), $matches))
|
379 |
$wp_host = $matches[1];
|
391 |
|
392 |
$post = get_post($comment_post_id);
|
393 |
|
394 |
+
$checkjs = js_test('ct_checkjs');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
395 |
|
396 |
$example = null;
|
397 |
if (function_exists('json_encode')) {
|
454 |
$ct_request->sender_ip = $ct->ct_session_ip($_SERVER['REMOTE_ADDR']);
|
455 |
$ct_request->agent = $ct_agent_version;
|
456 |
$ct_request->sender_info = $user_info;
|
|
|
457 |
$ct_request->js_on = $checkjs;
|
458 |
$ct_request->post_info = $post_info;
|
459 |
|
472 |
$err_text = '<center><b style="color: #49C73B;">Clean</b><b style="color: #349ebf;">Talk.</b> ' . __('Spam protection', 'cleantalk') . "</center><br><br>\n" . $ct_result->comment;
|
473 |
$err_text .= '<script>setTimeout("history.back()", 5000);</script>';
|
474 |
wp_die($err_text, 'Blacklisted', array('back_link' => true));
|
475 |
+
|
476 |
+
return $comment;
|
477 |
+
}
|
478 |
+
|
479 |
+
ct_hash($ct_result->id);
|
480 |
+
|
481 |
+
if ($ct_result->spam == 1) {
|
482 |
+
$comment['comment_content'] = $ct->addCleantalkComment($comment['comment_content'], $ct_result->comment);
|
483 |
+
add_filter('pre_comment_approved', 'ct_set_comment_spam');
|
484 |
+
add_action('comment_post', 'ct_set_meta', 10, 2);
|
485 |
+
return $comment;
|
486 |
+
}
|
487 |
+
|
488 |
+
if (isset($comment['comment_author_email'])) {
|
489 |
+
$approved_comments = get_comments(array('status' => 'approve', 'count' => true, 'author_email' => $comment['comment_author_email']));
|
490 |
+
|
491 |
+
// Change comment flow only for new authors
|
492 |
+
if ((int) $approved_comments == 0) {
|
493 |
+
|
494 |
+
if ($ct_result->allow == 1 && $options['autoPubRevelantMess'] == 1) {
|
495 |
+
add_filter('pre_comment_approved', 'ct_set_approved');
|
496 |
}
|
497 |
+
if ($ct_result->allow == 0) {
|
498 |
+
if (isset($ct_result->stop_words)) {
|
499 |
+
global $ct_stop_words;
|
500 |
+
$ct_stop_words = $ct_result->stop_words;
|
501 |
+
add_action('comment_post', 'ct_mark_red', 11, 2);
|
502 |
+
}
|
503 |
+
|
504 |
+
$comment['comment_content'] = $ct->addCleantalkComment($comment['comment_content'], $ct_result->comment);
|
505 |
add_filter('pre_comment_approved', 'ct_set_not_approved');
|
506 |
}
|
507 |
+
|
508 |
+
add_action('comment_post', 'ct_set_meta', 10, 2);
|
509 |
}
|
|
|
|
|
510 |
}
|
511 |
+
|
512 |
return $comment;
|
513 |
}
|
514 |
|
515 |
+
/**
|
516 |
+
*
|
517 |
+
*
|
518 |
+
*/
|
519 |
+
function js_test($field_name = 'ct_checkjs') {
|
520 |
+
$checkjs = null;
|
521 |
+
if (isset($_POST[$field_name])) {
|
522 |
+
if($_POST[$field_name] == ct_get_checkjs_value()) {
|
523 |
+
$checkjs = 1;
|
524 |
+
} else {
|
525 |
+
$checkjs = 0;
|
526 |
+
}
|
527 |
+
}
|
528 |
+
|
529 |
+
return $checkjs;
|
530 |
+
}
|
531 |
+
|
532 |
/**
|
533 |
* Get post url
|
534 |
* @param int $comment_id
|
553 |
return $post_url;
|
554 |
}
|
555 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
556 |
/**
|
557 |
* Public filter 'pre_comment_approved' - Mark comment unapproved always
|
558 |
* @return int Zero
|
799 |
}
|
800 |
}
|
801 |
|
|
|
802 |
return null;
|
803 |
}
|
804 |
|
826 |
return $errors;
|
827 |
}
|
828 |
|
829 |
+
$checkjs = js_test($ct_checkjs_register_form);
|
830 |
+
|
|
|
|
|
|
|
|
|
831 |
require_once('cleantalk.class.php');
|
832 |
|
833 |
$blog_lang = substr(get_locale(), 0, 2);
|
900 |
* Admin action 'admin_init' - Add the admin settings and such
|
901 |
*/
|
902 |
function ct_admin_init() {
|
903 |
+
ct_init_locale();
|
904 |
+
|
905 |
+
ct_init_session();
|
906 |
+
|
907 |
register_setting('cleantalk_settings', 'cleantalk_settings', 'ct_settings_validate');
|
908 |
add_settings_section('cleantalk_settings_main', __('Main settings', 'cleantalk'), 'ct_section_settings_main', 'cleantalk');
|
909 |
add_settings_section('cleantalk_settings_anti_spam', __('Anti-spam settings', 'cleantalk'), 'ct_section_settings_anti_spam', 'cleantalk');
|
941 |
echo "<input type='radio' id='cleantalk_autoPubRevelantMess1' name='cleantalk_settings[autoPubRevelantMess]' value='1' " . ($value == '1' ? 'checked' : '') . " /><label for='cleantalk_autoPubRevelantMess1'> " . __('Yes') . "</label>";
|
942 |
echo ' ';
|
943 |
echo "<input type='radio' id='cleantalk_autoPubRevelantMess0' name='cleantalk_settings[autoPubRevelantMess]' value='0' " . ($value == '0' ? 'checked' : '') . " /><label for='cleantalk_autoPubRevelantMess0'> " . __('No') . "</label>";
|
944 |
+
admin_addDescriptionsFields(__('Relevant (not spam) comments from new authors will be automatic published at the blog', 'cleantalk'));
|
945 |
}
|
946 |
/**
|
947 |
* @author Artem Leontiev
|
i18n/cleantalk-ru_RU.mo
CHANGED
Binary file
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ 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.
|
7 |
License: GPLv2
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
@@ -13,15 +13,15 @@ Invisible anti-spam without CAPTCHA. No spam in the comments, registration and f
|
|
13 |
|
14 |
1. Stops spam bots in the comments.
|
15 |
1. Stops spam bots in the registration.
|
16 |
-
1. Stops spam bots at the
|
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 new
|
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
|
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 |
|
@@ -31,7 +31,7 @@ The plugin is WordPress MultiUser (WPMU or WordPress network) compatible. Each b
|
|
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.
|
35 |
|
36 |
== Installation ==
|
37 |
|
@@ -87,6 +87,12 @@ Use other antispam plugins not necessarily, because CleanTalk stops 99.99% of sp
|
|
87 |
|
88 |
== Changelog ==
|
89 |
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
= 2.19 2013-11-08 =
|
91 |
* New: Antispam protection from spam bots at the registration form
|
92 |
* Changed: Russian localization for admin panel
|
@@ -203,6 +209,11 @@ Use other antispam plugins not necessarily, because CleanTalk stops 99.99% of sp
|
|
203 |
* First version
|
204 |
|
205 |
== Upgrade Notice ==
|
|
|
|
|
|
|
|
|
|
|
206 |
= 2.19 2013-11-08 =
|
207 |
* New: Antispam protection from spam bots at the registration form
|
208 |
* Changed: Russian localization for admin panel
|
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.21
|
7 |
License: GPLv2
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
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 4 500 blogs, blocks up to 400 000 spam bots attacks and approves up to 2 000 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 |
|
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 |
|
87 |
|
88 |
== Changelog ==
|
89 |
|
90 |
+
= 2.21 2013-11-13 =
|
91 |
+
* Changed: WordPress blacklists settings get priority over plugin's antispam settings
|
92 |
+
* Changed: Disabled management approval comments for regular commentators of the blog. Automatically approved for publication only the comments of the new blog authors.
|
93 |
+
* Changed: Removed form submit time test. Imporved JavaScript spam test.
|
94 |
+
* Changed: PHP code optimizations
|
95 |
+
|
96 |
= 2.19 2013-11-08 =
|
97 |
* New: Antispam protection from spam bots at the registration form
|
98 |
* Changed: Russian localization for admin panel
|
209 |
* First version
|
210 |
|
211 |
== Upgrade Notice ==
|
212 |
+
= 2.21 2013-11-13 =
|
213 |
+
* Changed: WordPress blacklists settings get priority over plugin's antispam settings
|
214 |
+
* Changed: Disabled management approval comments for regular commentators of the blog. Automatically approved for publication only the comments of the new blog authors.
|
215 |
+
* Changed: PHP code optimizations
|
216 |
+
|
217 |
= 2.19 2013-11-08 =
|
218 |
* New: Antispam protection from spam bots at the registration form
|
219 |
* Changed: Russian localization for admin panel
|