Version Description
Release Date - 11th December, 2014
- Fix to make .htaccess compatible with Apache 2.4.
- Fix to allow removal of https author URLs.
- Fix to avoid stripping part of the author URL when removing and re-adding.
- Removed the "Check for Spam" button from the "Trash" and "Approved" queues, where it would have no effect.
- Allow automatic API key configuration when Jetpack is installed and connected to a WordPress.com account
Download this release
Release Info
Developer | cfinke |
Plugin | Akismet Anti-Spam |
Version | 3.0.4 |
Comparing to | |
See all releases |
Code changes from version 3.0.3 to 3.0.4
- .htaccess +28 -5
- _inc/akismet.js +4 -4
- akismet.php +2 -2
- class.akismet-admin.php +29 -10
- readme.txt +12 -3
- views/config.php +17 -1
.htaccess
CHANGED
@@ -1,11 +1,34 @@
|
|
1 |
-
|
2 |
-
Deny from all
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
<FilesMatch "^(form|akismet)\.(css|js)$">
|
5 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
</FilesMatch>
|
7 |
|
8 |
-
#
|
9 |
<FilesMatch "^(.+)\.(png|gif)$">
|
10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
</FilesMatch>
|
1 |
+
# Only allow direct access to specific Web-available files.
|
|
|
2 |
|
3 |
+
# Apache 2.2
|
4 |
+
<IfModule !mod_authz_core.c>
|
5 |
+
Order Deny,Allow
|
6 |
+
Deny from all
|
7 |
+
</IfModule>
|
8 |
+
|
9 |
+
# Apache 2.4
|
10 |
+
<IfModule mod_authz_core.c>
|
11 |
+
Require all denied
|
12 |
+
</IfModule>
|
13 |
+
|
14 |
+
# Akismet CSS and JS
|
15 |
<FilesMatch "^(form|akismet)\.(css|js)$">
|
16 |
+
<IfModule !mod_authz_core.c>
|
17 |
+
Allow from all
|
18 |
+
</IfModule>
|
19 |
+
|
20 |
+
<IfModule mod_authz_core.c>
|
21 |
+
Require all granted
|
22 |
+
</IfModule>
|
23 |
</FilesMatch>
|
24 |
|
25 |
+
# Akismet images
|
26 |
<FilesMatch "^(.+)\.(png|gif)$">
|
27 |
+
<IfModule !mod_authz_core.c>
|
28 |
+
Allow from all
|
29 |
+
</IfModule>
|
30 |
+
|
31 |
+
<IfModule mod_authz_core.c>
|
32 |
+
Require all granted
|
33 |
+
</IfModule>
|
34 |
</FilesMatch>
|
_inc/akismet.js
CHANGED
@@ -18,7 +18,7 @@ jQuery( function ( $ ) {
|
|
18 |
var thisId = $(this).attr('commentid');
|
19 |
$(this).insertAfter('#comment-' + thisId + ' .author strong:first').show();
|
20 |
});
|
21 |
-
$('#the-comment-list').find('tr.comment, tr[id ^= "comment-"]').find('.column-author a[title ^= "http://"]').each(function () {
|
22 |
var thisTitle = $(this).attr('title');
|
23 |
thisCommentId = $(this).parents('tr:first').attr('id').split("-");
|
24 |
|
@@ -72,7 +72,7 @@ jQuery( function ( $ ) {
|
|
72 |
});
|
73 |
$('.akismet_undo_link_removal').live('click', function () {
|
74 |
var thisId = $(this).attr('cid');
|
75 |
-
var thisUrl = $(this).attr('href')
|
76 |
var data = {
|
77 |
action: 'comment_author_reurl',
|
78 |
_wpnonce: WPAkismet.comment_author_url_nonce,
|
@@ -91,8 +91,8 @@ jQuery( function ( $ ) {
|
|
91 |
if (response) {
|
92 |
// Add "x" link
|
93 |
$("a[commentid='"+ thisId +"']").show();
|
94 |
-
// Show link
|
95 |
-
$("#author_comment_url_"+ thisId).removeClass('akismet_undo_link_removal').
|
96 |
}
|
97 |
}
|
98 |
});
|
18 |
var thisId = $(this).attr('commentid');
|
19 |
$(this).insertAfter('#comment-' + thisId + ' .author strong:first').show();
|
20 |
});
|
21 |
+
$('#the-comment-list').find('tr.comment, tr[id ^= "comment-"]').find('.column-author a[title ^= "http://"], .column-author a[title ^= "https://"]').each(function () {
|
22 |
var thisTitle = $(this).attr('title');
|
23 |
thisCommentId = $(this).parents('tr:first').attr('id').split("-");
|
24 |
|
72 |
});
|
73 |
$('.akismet_undo_link_removal').live('click', function () {
|
74 |
var thisId = $(this).attr('cid');
|
75 |
+
var thisUrl = $(this).attr('href');
|
76 |
var data = {
|
77 |
action: 'comment_author_reurl',
|
78 |
_wpnonce: WPAkismet.comment_author_url_nonce,
|
91 |
if (response) {
|
92 |
// Add "x" link
|
93 |
$("a[commentid='"+ thisId +"']").show();
|
94 |
+
// Show link. Core strips leading http://, so let's do that too.
|
95 |
+
$("#author_comment_url_"+ thisId).removeClass('akismet_undo_link_removal').text( thisUrl.replace( /^http:\/\/(www\.)?/ig, '' ) );
|
96 |
}
|
97 |
}
|
98 |
});
|
akismet.php
CHANGED
@@ -6,7 +6,7 @@
|
|
6 |
Plugin Name: Akismet
|
7 |
Plugin URI: http://akismet.com/
|
8 |
Description: Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from comment and trackback spam</strong>. It keeps your site protected from spam even while you sleep. To get started: 1) Click the "Activate" link to the left of this description, 2) <a href="http://akismet.com/get/">Sign up for an Akismet API key</a>, and 3) Go to your Akismet configuration page, and save your API key.
|
9 |
-
Version: 3.0.
|
10 |
Author: Automattic
|
11 |
Author URI: http://automattic.com/wordpress-plugins/
|
12 |
License: GPLv2 or later
|
@@ -35,7 +35,7 @@ if ( !function_exists( 'add_action' ) ) {
|
|
35 |
exit;
|
36 |
}
|
37 |
|
38 |
-
define( 'AKISMET_VERSION', '3.0.
|
39 |
define( 'AKISMET__MINIMUM_WP_VERSION', '3.1' );
|
40 |
define( 'AKISMET__PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
41 |
define( 'AKISMET__PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
6 |
Plugin Name: Akismet
|
7 |
Plugin URI: http://akismet.com/
|
8 |
Description: Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from comment and trackback spam</strong>. It keeps your site protected from spam even while you sleep. To get started: 1) Click the "Activate" link to the left of this description, 2) <a href="http://akismet.com/get/">Sign up for an Akismet API key</a>, and 3) Go to your Akismet configuration page, and save your API key.
|
9 |
+
Version: 3.0.4
|
10 |
Author: Automattic
|
11 |
Author URI: http://automattic.com/wordpress-plugins/
|
12 |
License: GPLv2 or later
|
35 |
exit;
|
36 |
}
|
37 |
|
38 |
+
define( 'AKISMET_VERSION', '3.0.4' );
|
39 |
define( 'AKISMET__MINIMUM_WP_VERSION', '3.1' );
|
40 |
define( 'AKISMET__PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
41 |
define( 'AKISMET__PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
class.akismet-admin.php
CHANGED
@@ -37,6 +37,7 @@ class Akismet_Admin {
|
|
37 |
add_action( 'wp_ajax_akismet_recheck_queue', array( 'Akismet_Admin', 'recheck_queue' ) );
|
38 |
add_action( 'wp_ajax_comment_author_deurl', array( 'Akismet_Admin', 'remove_comment_author_url' ) );
|
39 |
add_action( 'wp_ajax_comment_author_reurl', array( 'Akismet_Admin', 'add_comment_author_url' ) );
|
|
|
40 |
|
41 |
add_filter( 'plugin_action_links', array( 'Akismet_Admin', 'plugin_action_links' ), 10, 2 );
|
42 |
add_filter( 'comment_row_actions', array( 'Akismet_Admin', 'comment_row_action' ), 10, 2 );
|
@@ -324,10 +325,10 @@ class Akismet_Admin {
|
|
324 |
}
|
325 |
|
326 |
public static function check_for_spam_button( $comment_status ) {
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
if ( '
|
331 |
return;
|
332 |
}
|
333 |
|
@@ -653,13 +654,12 @@ class Akismet_Admin {
|
|
653 |
return $stat_totals;
|
654 |
}
|
655 |
|
656 |
-
public static function verify_wpcom_key( $api_key, $user_id, $
|
657 |
-
$akismet_account = Akismet::http_post( Akismet::build_query( array(
|
658 |
'user_id' => $user_id,
|
659 |
'api_key' => $api_key,
|
660 |
-
'token' => $token,
|
661 |
'get_account_type' => 'true'
|
662 |
-
) ), 'verify-wpcom-key' );
|
663 |
|
664 |
if ( ! empty( $akismet_account[1] ) )
|
665 |
$akismet_account = json_decode( $akismet_account[1] );
|
@@ -668,6 +668,22 @@ class Akismet_Admin {
|
|
668 |
|
669 |
return $akismet_account;
|
670 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
671 |
|
672 |
public static function display_alert() {
|
673 |
Akismet::view( 'notice', array(
|
@@ -723,7 +739,7 @@ class Akismet_Admin {
|
|
723 |
$akismet_user = false;
|
724 |
|
725 |
if ( isset( $_GET['token'] ) && preg_match('/^(\d+)-[0-9a-f]{20}$/', $_GET['token'] ) )
|
726 |
-
$akismet_user = self::verify_wpcom_key( '', '', $_GET['token'] );
|
727 |
elseif ( $jetpack_user = self::get_jetpack_user() )
|
728 |
$akismet_user = self::verify_wpcom_key( $jetpack_user['api_key'], $jetpack_user['user_id'] );
|
729 |
|
@@ -797,7 +813,10 @@ class Akismet_Admin {
|
|
797 |
global $hook_suffix;
|
798 |
|
799 |
if ( in_array( $hook_suffix, array( 'jetpack_page_akismet-key-config', 'settings_page_akismet-key-config', 'edit-comments.php' ) ) && (int) get_option( 'akismet_alert_code' ) > 0 ) {
|
800 |
-
|
|
|
|
|
|
|
801 |
}
|
802 |
elseif ( $hook_suffix == 'plugins.php' && !Akismet::get_api_key() ) {
|
803 |
self::display_api_key_warning();
|
37 |
add_action( 'wp_ajax_akismet_recheck_queue', array( 'Akismet_Admin', 'recheck_queue' ) );
|
38 |
add_action( 'wp_ajax_comment_author_deurl', array( 'Akismet_Admin', 'remove_comment_author_url' ) );
|
39 |
add_action( 'wp_ajax_comment_author_reurl', array( 'Akismet_Admin', 'add_comment_author_url' ) );
|
40 |
+
add_action( 'jetpack_auto_activate_akismet', array( 'Akismet_Admin', 'connect_jetpack_user' ) );
|
41 |
|
42 |
add_filter( 'plugin_action_links', array( 'Akismet_Admin', 'plugin_action_links' ), 10, 2 );
|
43 |
add_filter( 'comment_row_actions', array( 'Akismet_Admin', 'comment_row_action' ), 10, 2 );
|
325 |
}
|
326 |
|
327 |
public static function check_for_spam_button( $comment_status ) {
|
328 |
+
// The "Check for Spam" button should only appear when the page might be showing
|
329 |
+
// a comment with comment_approved=0, which means an un-trashed, un-spammed,
|
330 |
+
// not-yet-moderated comment.
|
331 |
+
if ( 'all' != $comment_status && 'moderated' != $comment_status ) {
|
332 |
return;
|
333 |
}
|
334 |
|
654 |
return $stat_totals;
|
655 |
}
|
656 |
|
657 |
+
public static function verify_wpcom_key( $api_key, $user_id, $extra = array() ) {
|
658 |
+
$akismet_account = Akismet::http_post( Akismet::build_query( array_merge( array(
|
659 |
'user_id' => $user_id,
|
660 |
'api_key' => $api_key,
|
|
|
661 |
'get_account_type' => 'true'
|
662 |
+
), $extra ) ), 'verify-wpcom-key' );
|
663 |
|
664 |
if ( ! empty( $akismet_account[1] ) )
|
665 |
$akismet_account = json_decode( $akismet_account[1] );
|
668 |
|
669 |
return $akismet_account;
|
670 |
}
|
671 |
+
|
672 |
+
public static function connect_jetpack_user() {
|
673 |
+
|
674 |
+
if ( $jetpack_user = self::get_jetpack_user() ) {
|
675 |
+
if ( isset( $jetpack_user['user_id'] ) && isset( $jetpack_user['api_key'] ) ) {
|
676 |
+
$akismet_user = self::verify_wpcom_key( $jetpack_user['api_key'], $jetpack_user['user_id'], array( 'action' => 'connect_jetpack_user' ) );
|
677 |
+
|
678 |
+
if ( is_object( $akismet_user ) ) {
|
679 |
+
self::save_key( $akismet_user->api_key );
|
680 |
+
return in_array( $akismet_user->status, array( 'active', 'active-dunning', 'no-sub' ) );
|
681 |
+
}
|
682 |
+
}
|
683 |
+
}
|
684 |
+
|
685 |
+
return false;
|
686 |
+
}
|
687 |
|
688 |
public static function display_alert() {
|
689 |
Akismet::view( 'notice', array(
|
739 |
$akismet_user = false;
|
740 |
|
741 |
if ( isset( $_GET['token'] ) && preg_match('/^(\d+)-[0-9a-f]{20}$/', $_GET['token'] ) )
|
742 |
+
$akismet_user = self::verify_wpcom_key( '', '', array( 'token' => $_GET['token'] ) );
|
743 |
elseif ( $jetpack_user = self::get_jetpack_user() )
|
744 |
$akismet_user = self::verify_wpcom_key( $jetpack_user['api_key'], $jetpack_user['user_id'] );
|
745 |
|
813 |
global $hook_suffix;
|
814 |
|
815 |
if ( in_array( $hook_suffix, array( 'jetpack_page_akismet-key-config', 'settings_page_akismet-key-config', 'edit-comments.php' ) ) && (int) get_option( 'akismet_alert_code' ) > 0 ) {
|
816 |
+
Akismet::verify_key( Akismet::get_api_key() ); //verify that the key is still in alert state
|
817 |
+
|
818 |
+
if ( get_option( 'akismet_alert_code' ) > 0 )
|
819 |
+
self::display_alert();
|
820 |
}
|
821 |
elseif ( $hook_suffix == 'plugins.php' && !Akismet::get_api_key() ) {
|
822 |
self::display_api_key_warning();
|
readme.txt
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
=== Akismet ===
|
2 |
-
Contributors: matt, ryan, andy, mdawaffe, tellyworth, josephscott, lessbloat, eoigal, cfinke, automattic
|
3 |
Tags: akismet, comments, spam
|
4 |
Requires at least: 3.1
|
5 |
-
Tested up to: 4.
|
6 |
-
Stable tag: 3.0.
|
7 |
License: GPLv2 or later
|
8 |
|
9 |
Akismet checks your comments against the Akismet Web service to see if they look like spam or not.
|
@@ -30,6 +30,15 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co
|
|
30 |
|
31 |
== Changelog ==
|
32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
= 3.0.3 =
|
34 |
*Release Date - 3rd November, 2014*
|
35 |
|
1 |
=== Akismet ===
|
2 |
+
Contributors: matt, ryan, andy, mdawaffe, tellyworth, josephscott, lessbloat, eoigal, cfinke, automattic, jgs
|
3 |
Tags: akismet, comments, spam
|
4 |
Requires at least: 3.1
|
5 |
+
Tested up to: 4.1
|
6 |
+
Stable tag: 3.0.4
|
7 |
License: GPLv2 or later
|
8 |
|
9 |
Akismet checks your comments against the Akismet Web service to see if they look like spam or not.
|
30 |
|
31 |
== Changelog ==
|
32 |
|
33 |
+
= 3.0.4 =
|
34 |
+
*Release Date - 11th December, 2014*
|
35 |
+
|
36 |
+
* Fix to make .htaccess compatible with Apache 2.4.
|
37 |
+
* Fix to allow removal of https author URLs.
|
38 |
+
* Fix to avoid stripping part of the author URL when removing and re-adding.
|
39 |
+
* Removed the "Check for Spam" button from the "Trash" and "Approved" queues, where it would have no effect.
|
40 |
+
* Allow automatic API key configuration when Jetpack is installed and connected to a WordPress.com account
|
41 |
+
|
42 |
= 3.0.3 =
|
43 |
*Release Date - 3rd November, 2014*
|
44 |
|
views/config.php
CHANGED
@@ -88,7 +88,23 @@
|
|
88 |
<p><label for="akismet_strictness_1"><input type="radio" name="akismet_strictness" id="akismet_strictness_1" value="1" <?php checked('1', get_option('akismet_strictness')); ?> /> <?php esc_html_e('Silently discard the worst and most pervasive spam so I never see it.', 'akismet'); ?></label></p>
|
89 |
<p><label for="akismet_strictness_0"><input type="radio" name="akismet_strictness" id="akismet_strictness_0" value="0" <?php checked('0', get_option('akismet_strictness')); ?> /> <?php esc_html_e('Always put spam in the Spam folder for review.', 'akismet'); ?></label></p>
|
90 |
</fieldset>
|
91 |
-
<span class="note"><strong><?php esc_html_e('Note:', 'akismet');?></strong>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
92 |
</td>
|
93 |
</tr>
|
94 |
</tbody>
|
88 |
<p><label for="akismet_strictness_1"><input type="radio" name="akismet_strictness" id="akismet_strictness_1" value="1" <?php checked('1', get_option('akismet_strictness')); ?> /> <?php esc_html_e('Silently discard the worst and most pervasive spam so I never see it.', 'akismet'); ?></label></p>
|
89 |
<p><label for="akismet_strictness_0"><input type="radio" name="akismet_strictness" id="akismet_strictness_0" value="0" <?php checked('0', get_option('akismet_strictness')); ?> /> <?php esc_html_e('Always put spam in the Spam folder for review.', 'akismet'); ?></label></p>
|
90 |
</fieldset>
|
91 |
+
<span class="note"><strong><?php esc_html_e('Note:', 'akismet');?></strong>
|
92 |
+
<?php
|
93 |
+
|
94 |
+
$delete_interval = max( 1, intval( apply_filters( 'akismet_delete_comment_interval', 15 ) ) );
|
95 |
+
|
96 |
+
printf(
|
97 |
+
_n(
|
98 |
+
'Spam in the <a href="%s">spam folder</a> older than 1 day is deleted automatically.',
|
99 |
+
'Spam in the <a href="%1$s">spam folder</a> older than %2$d days is deleted automatically.',
|
100 |
+
$delete_interval,
|
101 |
+
'akismet'
|
102 |
+
),
|
103 |
+
admin_url( 'edit-comments.php?comment_status=spam' ),
|
104 |
+
$delete_interval
|
105 |
+
);
|
106 |
+
|
107 |
+
?>
|
108 |
</td>
|
109 |
</tr>
|
110 |
</tbody>
|