Akismet Anti-Spam - Version 2.5.9

Version Description

  • Update 'Already have a key' link to redirect page rather than depend on javascript
  • Fix some non-translatable strings to be translatable
  • Update Activation banner in plugins page to redirect user to Akismet config page
Download this release

Release Info

Developer nacin
Plugin Icon 128x128 Akismet Anti-Spam
Version 2.5.9
Comparing to
See all releases

Code changes from version 2.5.8 to 2.5.9

Files changed (6) hide show
  1. .htaccess +0 -11
  2. admin.php +38 -24
  3. akismet.php +2 -2
  4. img/logo.png +0 -0
  5. img/logo@2x.png +0 -0
  6. readme.txt +6 -1
.htaccess DELETED
@@ -1,11 +0,0 @@
1
- Order Deny,Allow
2
- Deny from all
3
-
4
- <FilesMatch "^akismet\.(css|js)$">
5
- Allow from all
6
- </FilesMatch>
7
-
8
- #allow access to any image
9
- <FilesMatch "^(.+)\.(png|gif)$">
10
- Allow from all
11
- </FilesMatch>
 
 
 
 
 
 
 
 
 
 
 
admin.php CHANGED
@@ -39,10 +39,10 @@ function akismet_load_js_and_css() {
39
  'plugins_page_akismet-key-config',
40
  'jetpack_page_akismet-key-config',
41
  ) ) ) {
42
- wp_register_style( 'akismet.css', AKISMET_PLUGIN_URL . 'akismet.css', array(), '2.5.4.4' );
43
  wp_enqueue_style( 'akismet.css');
44
 
45
- wp_register_script( 'akismet.js', AKISMET_PLUGIN_URL . 'akismet.js', array('jquery'), '2.5.4.6' );
46
  wp_enqueue_script( 'akismet.js' );
47
  wp_localize_script( 'akismet.js', 'WPAkismet', array(
48
  'comment_author_url_nonce' => wp_create_nonce( 'comment_author_url_nonce' )
@@ -67,11 +67,14 @@ add_filter( 'plugin_action_links', 'akismet_plugin_action_links', 10, 2 );
67
  function akismet_conf() {
68
  global $akismet_nonce, $current_user;
69
 
70
- $new_key_link = 'https://akismet.com/get/';
71
- $api_key = akismet_get_key();
72
- $show_key_form = $api_key;
73
- $key_status = 'empty';
74
- $saved_ok = false;
 
 
 
75
 
76
  $ms = array();
77
 
@@ -98,17 +101,17 @@ function akismet_conf() {
98
  $ms[] = 'key_empty';
99
  }
100
  else
101
- $key_status = akismet_verify_key( $key );
102
-
103
  if ( $key != $api_key && $key_status == 'valid' ) {
104
- update_option('wordpress_api_key', $key);
105
  $ms[] = 'new_key_valid';
 
106
  }
107
  elseif ( $key_status == 'invalid' )
108
  $ms[] = 'new_key_invalid';
109
  elseif ( $key_status == 'failed' )
110
  $ms[] = 'new_key_failed';
111
-
112
  $api_key = $key_status == 'valid' ? $key : false;
113
 
114
  if ( isset( $_POST['akismet_discard_month'] ) )
@@ -130,6 +133,9 @@ function akismet_conf() {
130
  check_admin_referer( $akismet_nonce );
131
  akismet_get_server_connectivity(0);
132
  }
 
 
 
133
 
134
  if ( $show_key_form ) {
135
  //check current key status
@@ -154,7 +160,14 @@ function akismet_conf() {
154
  elseif ( !empty( $key ) && $key_status == 'failed' )
155
  $ms[] = 'key_failed';
156
  }
157
- }
 
 
 
 
 
 
 
158
 
159
  $messages = array(
160
  'new_key_empty' => array( 'class' => 'updated fade', 'text' => __('Your key has been cleared.' ) ),
@@ -174,7 +187,7 @@ function akismet_conf() {
174
  <?php if ( !$api_key ) : ?>
175
  <h2 class="ak-header"><?php _e('Akismet'); ?></h2>
176
  <?php else: ?>
177
- <h2 class="ak-header"><?php printf( __( 'Akismet <a href="%s" class="add-new-h2">Stats</a>' ), esc_url( add_query_arg( array( 'page' => 'akismet-stats-display' ), class_exists( 'Jetpack' ) ? admin_url( 'admin.php' ) : admin_url( 'index.php' ) ) ) ); ?></h2>
178
  <?php endif; ?>
179
  <div class="no-key <?php echo $show_key_form ? 'hidden' : '';?>">
180
  <p><?php _e('Akismet eliminates the comment and trackback spam you get on your site. To use Akismet you may need to sign up for an API key. Click the button below to get started.'); ?></p>
@@ -182,10 +195,10 @@ function akismet_conf() {
182
  <input type="hidden" name="return" value="1"/>
183
  <input type="hidden" name="jetpack" value="<?php echo (string) class_exists( 'Jetpack' );?>"/>
184
  <input type="hidden" name="user" value="<?php echo esc_attr( $current_user->user_login );?>"/>
185
- <input type="submit" class="button button-primary" value="<?php echo esc_attr( __('Create a new Akismet Key') ); ?>"/>
186
  </form>
187
  <br/>
188
- <a href="#" class="switch-have-key"><?php _e('I already have a key'); ?></a>
189
  </div>
190
  <div class="have-key <?php echo $show_key_form ? '' : 'hidden';?>">
191
  <?php if ( !empty($_POST['submit'] ) && $saved_ok ) : ?>
@@ -203,7 +216,7 @@ function akismet_conf() {
203
  <tr>
204
  <th><label for="key"><?php _e('Akismet API Key');?></label></th>
205
  <td>
206
- <input id="key" name="key" type="text" size="15" maxlength="12" value="<?php echo esc_html( get_option('wordpress_api_key') ); ?>" class="regular-text code <?php echo $key_status;?>"><div class="under-input key-status <?php echo $key_status;?>"><?php echo ucfirst( $key_status );?></div>
207
  <p class="need-key description"><?php printf( __('You must enter a valid Akismet API key here. If you need an API key, you can <a href="%s">create one here</a>'), '#' );?></p>
208
  </td>
209
  </tr>
@@ -212,8 +225,8 @@ function akismet_conf() {
212
  <th scope="row"><?php _e('Settings');?></th>
213
  <td>
214
  <fieldset><legend class="screen-reader-text"><span><?php _e('Settings');?></span></legend>
215
- <label for="akismet_discard_month" title="<?php echo esc_attr( __( 'Auto-detete old spam' ) ); ?>"><input name="akismet_discard_month" id="akismet_discard_month" value="true" type="checkbox" <?php echo get_option('akismet_discard_month') == 'true' ? 'checked="checked"':''; ?>> <span><?php _e('Auto-delete spam submitted on posts more than a month old.'); ?></span></label><br>
216
- <label for="akismet_show_user_comments_approved" title="<?php echo esc_attr( __( 'Show approved comments' ) ); ?>"><input name="akismet_show_user_comments_approved" id="akismet_show_user_comments_approved" value="true" type="checkbox" <?php echo get_option('akismet_show_user_comments_approved') == 'true' ? 'checked="checked"':''; ?>> <span><?php _e('Show the number of comments you\'ve approved beside each comment author.'); ?></span></label>
217
  </fieldset>
218
  </td>
219
  </tr>
@@ -301,12 +314,13 @@ function akismet_conf() {
301
  function akismet_stats_display() {
302
  global $akismet_api_host, $akismet_api_port;
303
 
304
- $blog = urlencode( get_bloginfo('url') );
305
- $api_key = akismet_get_key();?>
 
306
 
307
  <div class="wrap"><?php
308
  if ( !$api_key ) :?>
309
- <div id="akismet-warning" class="updated fade"><p><strong><?php _e('Akismet is almost ready.');?></strong> <?php printf( __( 'You must <a href="%1$s">enter your Akismet API key</a> for it to work.' ), esc_url( add_query_arg( array( 'page' => 'akismet-key-config' ), admin_url( 'admin.php' ) ) ) );?></p></div><?php
310
  else :?>
311
  <iframe src="<?php echo esc_url( sprintf( '%s://akismet.com/web/1.0/user-stats.php?blog=%s&api_key=%s', is_ssl()?'https':'http', $blog, $api_key ) ); ?>" width="100%" height="2500px" frameborder="0" id="akismet-stats-frame"></iframe><?php
312
  endif;?>
@@ -368,7 +382,7 @@ function akismet_admin_warnings() {
368
  <style type="text/css">
369
  .akismet_activate{min-width:825px;border:1px solid #4F800D;padding:5px;margin:15px 0;background:#83AF24;background-image:-webkit-gradient(linear,0% 0,80% 100%,from(#83AF24),to(#4F800D));background-image:-moz-linear-gradient(80% 100% 120deg,#4F800D,#83AF24);-moz-border-radius:3px;border-radius:3px;-webkit-border-radius:3px;position:relative;overflow:hidden}.akismet_activate .aa_a{position:absolute;top:-5px;right:10px;font-size:140px;color:#769F33;font-family:Georgia, "Times New Roman", Times, serif;z-index:1}.akismet_activate .aa_button{font-weight:bold;border:1px solid #029DD6;border-top:1px solid #06B9FD;font-size:15px;text-align:center;padding:9px 0 8px 0;color:#FFF;background:#029DD6;background-image:-webkit-gradient(linear,0% 0,0% 100%,from(#029DD6),to(#0079B1));background-image:-moz-linear-gradient(0% 100% 90deg,#0079B1,#029DD6);-moz-border-radius:2px;border-radius:2px;-webkit-border-radius:2px}.akismet_activate .aa_button:hover{text-decoration:none !important;border:1px solid #029DD6;border-bottom:1px solid #00A8EF;font-size:15px;text-align:center;padding:9px 0 8px 0;color:#F0F8FB;background:#0079B1;background-image:-webkit-gradient(linear,0% 0,0% 100%,from(#0079B1),to(#0092BF));background-image:-moz-linear-gradient(0% 100% 90deg,#0092BF,#0079B1);-moz-border-radius:2px;border-radius:2px;-webkit-border-radius:2px}.akismet_activate .aa_button_border{border:1px solid #006699;-moz-border-radius:2px;border-radius:2px;-webkit-border-radius:2px;background:#029DD6;background-image:-webkit-gradient(linear,0% 0,0% 100%,from(#029DD6),to(#0079B1));background-image:-moz-linear-gradient(0% 100% 90deg,#0079B1,#029DD6)}.akismet_activate .aa_button_container{cursor:pointer;display:inline-block;background:#DEF1B8;padding:5px;-moz-border-radius:2px;border-radius:2px;-webkit-border-radius:2px;width:266px}.akismet_activate .aa_description{position:absolute;top:22px;left:285px;margin-left:25px;color:#E5F2B1;font-size:15px;z-index:1000}.akismet_activate .aa_description strong{color:#FFF;font-weight:normal}
370
  </style>
371
- <form name="akismet_activate" action="https://akismet.com/get/" method="POST">
372
  <input type="hidden" name="return" value="1"/>
373
  <input type="hidden" name="jetpack" value="'.(string) class_exists( 'Jetpack' ).'"/>
374
  <input type="hidden" name="user" value="'.esc_attr( $current_user->user_login ).'"/>
@@ -376,10 +390,10 @@ function akismet_admin_warnings() {
376
  <div class="aa_a">A</div>
377
  <div class="aa_button_container" onclick="document.akismet_activate.submit();">
378
  <div class="aa_button_border">
379
- <div class="aa_button">Activate your Akismet account</div>
380
  </div>
381
  </div>
382
- <div class="aa_description"><strong>Almost done</strong> - activate your account and say goodbye to comment spam.</div>
383
  </div>
384
  </form>
385
  </div>
39
  'plugins_page_akismet-key-config',
40
  'jetpack_page_akismet-key-config',
41
  ) ) ) {
42
+ wp_register_style( 'akismet.css', AKISMET_PLUGIN_URL . 'akismet.css', array(), '2.5.9' );
43
  wp_enqueue_style( 'akismet.css');
44
 
45
+ wp_register_script( 'akismet.js', AKISMET_PLUGIN_URL . 'akismet.js', array('jquery'), '2.5.9' );
46
  wp_enqueue_script( 'akismet.js' );
47
  wp_localize_script( 'akismet.js', 'WPAkismet', array(
48
  'comment_author_url_nonce' => wp_create_nonce( 'comment_author_url_nonce' )
67
  function akismet_conf() {
68
  global $akismet_nonce, $current_user;
69
 
70
+ $new_key_link = 'https://akismet.com/get/';
71
+ $config_link = esc_url( add_query_arg( array( 'page' => 'akismet-key-config', 'show' => 'enter-api-key' ), class_exists( 'Jetpack' ) ? admin_url( 'admin.php' ) : admin_url( 'plugins.php' ) ) );
72
+ $stats_link = esc_url( add_query_arg( array( 'page' => 'akismet-stats-display' ), class_exists( 'Jetpack' ) ? admin_url( 'admin.php' ) : admin_url( 'index.php' ) ) );
73
+ $api_key = akismet_get_key();
74
+ $show_key_form = $api_key;
75
+ $key_status = 'empty';
76
+ $saved_ok = false;
77
+ $key_status_text = '';
78
 
79
  $ms = array();
80
 
101
  $ms[] = 'key_empty';
102
  }
103
  else
104
+ $key_status = akismet_verify_key( $key );
105
+
106
  if ( $key != $api_key && $key_status == 'valid' ) {
 
107
  $ms[] = 'new_key_valid';
108
+ update_option('wordpress_api_key', $key);
109
  }
110
  elseif ( $key_status == 'invalid' )
111
  $ms[] = 'new_key_invalid';
112
  elseif ( $key_status == 'failed' )
113
  $ms[] = 'new_key_failed';
114
+
115
  $api_key = $key_status == 'valid' ? $key : false;
116
 
117
  if ( isset( $_POST['akismet_discard_month'] ) )
133
  check_admin_referer( $akismet_nonce );
134
  akismet_get_server_connectivity(0);
135
  }
136
+ elseif ( isset( $_GET['show'] ) && $_GET['show'] == 'enter-api-key' ) {
137
+ $show_key_form = true;
138
+ }
139
 
140
  if ( $show_key_form ) {
141
  //check current key status
160
  elseif ( !empty( $key ) && $key_status == 'failed' )
161
  $ms[] = 'key_failed';
162
  }
163
+ }
164
+
165
+ $key_status_strings = array(
166
+ 'empty' => __( 'Empty' ),
167
+ 'valid' => __( 'Valid' ),
168
+ 'invalid' => __( 'Invalid' ),
169
+ 'failed' => __( 'Failed' ),
170
+ );
171
 
172
  $messages = array(
173
  'new_key_empty' => array( 'class' => 'updated fade', 'text' => __('Your key has been cleared.' ) ),
187
  <?php if ( !$api_key ) : ?>
188
  <h2 class="ak-header"><?php _e('Akismet'); ?></h2>
189
  <?php else: ?>
190
+ <h2 class="ak-header"><?php printf( __( 'Akismet <a href="%s" class="add-new-h2">Stats</a>' ), $stats_link ); ?></h2>
191
  <?php endif; ?>
192
  <div class="no-key <?php echo $show_key_form ? 'hidden' : '';?>">
193
  <p><?php _e('Akismet eliminates the comment and trackback spam you get on your site. To use Akismet you may need to sign up for an API key. Click the button below to get started.'); ?></p>
195
  <input type="hidden" name="return" value="1"/>
196
  <input type="hidden" name="jetpack" value="<?php echo (string) class_exists( 'Jetpack' );?>"/>
197
  <input type="hidden" name="user" value="<?php echo esc_attr( $current_user->user_login );?>"/>
198
+ <input type="submit" class="button button-primary" value="<?php esc_attr_e( 'Create a new Akismet Key' ); ?>"/>
199
  </form>
200
  <br/>
201
+ <a href="<?php echo $config_link;?>"><?php _e('I already have a key'); ?></a>
202
  </div>
203
  <div class="have-key <?php echo $show_key_form ? '' : 'hidden';?>">
204
  <?php if ( !empty($_POST['submit'] ) && $saved_ok ) : ?>
216
  <tr>
217
  <th><label for="key"><?php _e('Akismet API Key');?></label></th>
218
  <td>
219
+ <input id="key" name="key" type="text" size="15" maxlength="12" value="<?php echo esc_attr( get_option('wordpress_api_key') ); ?>" class="regular-text code <?php echo $key_status;?>"><div class="under-input key-status <?php echo $key_status;?>"><?php echo isset( $key_status_strings[ $key_status ] ) ? $key_status_strings[ $key_status ] : '';?></div>
220
  <p class="need-key description"><?php printf( __('You must enter a valid Akismet API key here. If you need an API key, you can <a href="%s">create one here</a>'), '#' );?></p>
221
  </td>
222
  </tr>
225
  <th scope="row"><?php _e('Settings');?></th>
226
  <td>
227
  <fieldset><legend class="screen-reader-text"><span><?php _e('Settings');?></span></legend>
228
+ <label for="akismet_discard_month" title="<?php esc_attr_e( 'Auto-detete old spam' ); ?>"><input name="akismet_discard_month" id="akismet_discard_month" value="true" type="checkbox" <?php echo get_option('akismet_discard_month') == 'true' ? 'checked="checked"':''; ?>> <span><?php _e('Auto-delete spam submitted on posts more than a month old.'); ?></span></label><br>
229
+ <label for="akismet_show_user_comments_approved" title="<?php esc_attr_e( 'Show approved comments' ); ?>"><input name="akismet_show_user_comments_approved" id="akismet_show_user_comments_approved" value="true" type="checkbox" <?php echo get_option('akismet_show_user_comments_approved') == 'true' ? 'checked="checked"':''; ?>> <span><?php _e('Show the number of comments you\'ve approved beside each comment author.'); ?></span></label>
230
  </fieldset>
231
  </td>
232
  </tr>
314
  function akismet_stats_display() {
315
  global $akismet_api_host, $akismet_api_port;
316
 
317
+ $blog = urlencode( get_bloginfo('url') );
318
+ $api_key = akismet_get_key();
319
+ $config_link = esc_url( add_query_arg( array( 'page' => 'akismet-key-config' ), class_exists( 'Jetpack' ) ? admin_url( 'admin.php' ) : admin_url( 'plugins.php' ) ) );?>
320
 
321
  <div class="wrap"><?php
322
  if ( !$api_key ) :?>
323
+ <div id="akismet-warning" class="updated fade"><p><strong><?php _e('Akismet is almost ready.');?></strong> <?php printf( __( 'You must <a href="%1$s">enter your Akismet API key</a> for it to work.' ), $config_link );?></p></div><?php
324
  else :?>
325
  <iframe src="<?php echo esc_url( sprintf( '%s://akismet.com/web/1.0/user-stats.php?blog=%s&api_key=%s', is_ssl()?'https':'http', $blog, $api_key ) ); ?>" width="100%" height="2500px" frameborder="0" id="akismet-stats-frame"></iframe><?php
326
  endif;?>
382
  <style type="text/css">
383
  .akismet_activate{min-width:825px;border:1px solid #4F800D;padding:5px;margin:15px 0;background:#83AF24;background-image:-webkit-gradient(linear,0% 0,80% 100%,from(#83AF24),to(#4F800D));background-image:-moz-linear-gradient(80% 100% 120deg,#4F800D,#83AF24);-moz-border-radius:3px;border-radius:3px;-webkit-border-radius:3px;position:relative;overflow:hidden}.akismet_activate .aa_a{position:absolute;top:-5px;right:10px;font-size:140px;color:#769F33;font-family:Georgia, "Times New Roman", Times, serif;z-index:1}.akismet_activate .aa_button{font-weight:bold;border:1px solid #029DD6;border-top:1px solid #06B9FD;font-size:15px;text-align:center;padding:9px 0 8px 0;color:#FFF;background:#029DD6;background-image:-webkit-gradient(linear,0% 0,0% 100%,from(#029DD6),to(#0079B1));background-image:-moz-linear-gradient(0% 100% 90deg,#0079B1,#029DD6);-moz-border-radius:2px;border-radius:2px;-webkit-border-radius:2px}.akismet_activate .aa_button:hover{text-decoration:none !important;border:1px solid #029DD6;border-bottom:1px solid #00A8EF;font-size:15px;text-align:center;padding:9px 0 8px 0;color:#F0F8FB;background:#0079B1;background-image:-webkit-gradient(linear,0% 0,0% 100%,from(#0079B1),to(#0092BF));background-image:-moz-linear-gradient(0% 100% 90deg,#0092BF,#0079B1);-moz-border-radius:2px;border-radius:2px;-webkit-border-radius:2px}.akismet_activate .aa_button_border{border:1px solid #006699;-moz-border-radius:2px;border-radius:2px;-webkit-border-radius:2px;background:#029DD6;background-image:-webkit-gradient(linear,0% 0,0% 100%,from(#029DD6),to(#0079B1));background-image:-moz-linear-gradient(0% 100% 90deg,#0079B1,#029DD6)}.akismet_activate .aa_button_container{cursor:pointer;display:inline-block;background:#DEF1B8;padding:5px;-moz-border-radius:2px;border-radius:2px;-webkit-border-radius:2px;width:266px}.akismet_activate .aa_description{position:absolute;top:22px;left:285px;margin-left:25px;color:#E5F2B1;font-size:15px;z-index:1000}.akismet_activate .aa_description strong{color:#FFF;font-weight:normal}
384
  </style>
385
+ <form name="akismet_activate" action="'.esc_url( add_query_arg( array( 'page' => 'akismet-key-config' ), class_exists( 'Jetpack' ) ? admin_url( 'admin.php' ) : admin_url( 'plugins.php' ) ) ).'" method="POST">
386
  <input type="hidden" name="return" value="1"/>
387
  <input type="hidden" name="jetpack" value="'.(string) class_exists( 'Jetpack' ).'"/>
388
  <input type="hidden" name="user" value="'.esc_attr( $current_user->user_login ).'"/>
390
  <div class="aa_a">A</div>
391
  <div class="aa_button_container" onclick="document.akismet_activate.submit();">
392
  <div class="aa_button_border">
393
+ <div class="aa_button">'.__('Activate your Akismet account').'</div>
394
  </div>
395
  </div>
396
+ <div class="aa_description">'.__('<strong>Almost done</strong> - activate your account and say goodbye to comment spam').'</div>
397
  </div>
398
  </form>
399
  </div>
akismet.php CHANGED
@@ -6,7 +6,7 @@
6
  Plugin Name: Akismet
7
  Plugin URI: http://akismet.com/?return=true
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/?return=true">Sign up for an Akismet API key</a>, and 3) Go to your Akismet configuration page, and save your API key.
9
- Version: 2.5.8
10
  Author: Automattic
11
  Author URI: http://automattic.com/wordpress-plugins/
12
  License: GPLv2 or later
@@ -34,7 +34,7 @@ if ( !function_exists( 'add_action' ) ) {
34
  exit;
35
  }
36
 
37
- define('AKISMET_VERSION', '2.5.8');
38
  define('AKISMET_PLUGIN_URL', plugin_dir_url( __FILE__ ));
39
 
40
  /** If you hardcode a WP.com API key here, all key config screens will be hidden */
6
  Plugin Name: Akismet
7
  Plugin URI: http://akismet.com/?return=true
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/?return=true">Sign up for an Akismet API key</a>, and 3) Go to your Akismet configuration page, and save your API key.
9
+ Version: 2.5.9
10
  Author: Automattic
11
  Author URI: http://automattic.com/wordpress-plugins/
12
  License: GPLv2 or later
34
  exit;
35
  }
36
 
37
+ define('AKISMET_VERSION', '2.5.9');
38
  define('AKISMET_PLUGIN_URL', plugin_dir_url( __FILE__ ));
39
 
40
  /** If you hardcode a WP.com API key here, all key config screens will be hidden */
img/logo.png ADDED
Binary file
img/logo@2x.png ADDED
Binary file
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: matt, ryan, andy, mdawaffe, tellyworth, josephscott, lessbloat, eo
3
  Tags: akismet, comments, spam
4
  Requires at least: 3.0
5
  Tested up to: 3.6
6
- Stable tag: 2.5.8
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.
@@ -31,6 +31,11 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co
31
 
32
  == Changelog ==
33
 
 
 
 
 
 
34
  = 2.5.8 =
35
  * Simplify the activation process for new users
36
  * Remove the reporter_ip parameter
3
  Tags: akismet, comments, spam
4
  Requires at least: 3.0
5
  Tested up to: 3.6
6
+ Stable tag: 2.5.9
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.
31
 
32
  == Changelog ==
33
 
34
+ = 2.5.9 =
35
+ * Update 'Already have a key' link to redirect page rather than depend on javascript
36
+ * Fix some non-translatable strings to be translatable
37
+ * Update Activation banner in plugins page to redirect user to Akismet config page
38
+
39
  = 2.5.8 =
40
  * Simplify the activation process for new users
41
  * Remove the reporter_ip parameter