".sprintf(__('Akismet %s required WordPress 3.0 or higher.'), AKISMET_VERSION) ." ".sprintf(__('Please upgrade WordPress to a current version, or downgrade to version 2.4 of the Akismet plugin.'), 'http://codex.wordpress.org/Upgrading_WordPress', 'http://wordpress.org/extend/plugins/akismet/download/'). "
"; } add_action('admin_notices', 'akismet_version_warning'); return; } if ( function_exists( 'get_plugin_page_hook' ) ) $hook = get_plugin_page_hook( 'akismet-stats-display', 'index.php' ); else $hook = 'dashboard_page_akismet-stats-display'; add_action('admin_head-'.$hook, 'akismet_stats_script'); add_meta_box('akismet-status', __('Akismet Status'), 'akismet_comment_status_meta_box', 'comment', 'normal'); } add_action('admin_init', 'akismet_admin_init'); function akismet_nonce_field($action = -1) { return wp_nonce_field($action); } $akismet_nonce = 'akismet-update-key'; function akismet_config_page() { if ( function_exists('add_submenu_page') ) add_submenu_page('plugins.php', __('Akismet Configuration'), __('Akismet Configuration'), 'manage_options', 'akismet-key-config', 'akismet_conf'); } function akismet_conf() { global $akismet_nonce, $wpcom_api_key; if ( isset($_POST['submit']) ) { if ( function_exists('current_user_can') && !current_user_can('manage_options') ) die(__('Cheatin’ uh?')); check_admin_referer( $akismet_nonce ); $key = preg_replace( '/[^a-h0-9]/i', '', $_POST['key'] ); if ( empty($key) ) { $key_status = 'empty'; $ms[] = 'new_key_empty'; delete_option('wordpress_api_key'); } else { $key_status = akismet_verify_key( $key ); } if ( $key_status == 'valid' ) { update_option('wordpress_api_key', $key); $ms[] = 'new_key_valid'; } else if ( $key_status == 'invalid' ) { $ms[] = 'new_key_invalid'; } else if ( $key_status == 'failed' ) { $ms[] = 'new_key_failed'; } if ( isset( $_POST['akismet_discard_month'] ) ) update_option( 'akismet_discard_month', 'true' ); else update_option( 'akismet_discard_month', 'false' ); } elseif ( isset($_POST['check']) ) { akismet_get_server_connectivity(0); } if ( empty( $key_status) || $key_status != 'valid' ) { $key = get_option('wordpress_api_key'); if ( empty( $key ) ) { if ( empty( $key_status ) || $key_status != 'failed' ) { if ( akismet_verify_key( '1234567890ab' ) == 'failed' ) $ms[] = 'no_connection'; else $ms[] = 'key_empty'; } $key_status = 'empty'; } else { $key_status = akismet_verify_key( $key ); } if ( $key_status == 'valid' ) { $ms[] = 'key_valid'; } else if ( $key_status == 'invalid' ) { delete_option('wordpress_api_key'); $ms[] = 'key_empty'; } else if ( !empty($key) && $key_status == 'failed' ) { $ms[] = 'key_failed'; } } $messages = array( 'new_key_empty' => array('color' => 'aa0', 'text' => __('Your key has been cleared.')), 'new_key_valid' => array('color' => '2d2', 'text' => __('Your key has been verified. Happy blogging!')), 'new_key_invalid' => array('color' => 'd22', 'text' => __('The key you entered is invalid. Please double-check it.')), 'new_key_failed' => array('color' => 'd22', 'text' => __('The key you entered could not be verified because a connection to akismet.com could not be established. Please check your server configuration.')), 'no_connection' => array('color' => 'd22', 'text' => __('There was a problem connecting to the Akismet server. Please check your server configuration.')), 'key_empty' => array('color' => 'aa0', 'text' => sprintf(__('Please enter an API key. (Get your key.)'), 'http://akismet.com/get/')), 'key_valid' => array('color' => '2d2', 'text' => __('This key is valid.')), 'key_failed' => array('color' => 'aa0', 'text' => __('The key below was previously validated but a connection to akismet.com can not be established at this time. Please check your server configuration.'))); ?>'.sprintf(__('Akismet has protected your site from %3$s spam comments.'), 'http://akismet.com/', clean_url("$link?page=akismet-admin"), number_format_i18n($count) ).'
'; } add_action('activity_box_end', 'akismet_stats'); function akismet_admin_warnings() { global $wpcom_api_key; if ( !get_option('wordpress_api_key') && !$wpcom_api_key && !isset($_POST['submit']) ) { function akismet_warning() { echo " "; } add_action('admin_notices', 'akismet_warning'); return; } elseif ( get_option('akismet_connectivity_time') && empty($_POST) && is_admin() && !akismet_server_connectivity_ok() ) { function akismet_warning() { echo " "; } add_action('admin_notices', 'akismet_warning'); return; } } // FIXME placeholder function akismet_comment_row_action( $a, $comment ) { $akismet_result = get_comment_meta( $comment->comment_ID, 'akismet_result', true ); $user_result = get_comment_meta( $comment->comment_ID, 'akismet_user_result', true); $desc = null; if ( !$user_result || $user_result == $akismet_result ) { // Show the original Akismet result if the user hasn't overridden it, or if their decision was the same if ( $akismet_result == 'true' ) $desc = 'Flagged as spam by Akismet'; elseif ( $akismet_result == 'false' ) $desc = 'Cleared by Akismet'; } else { $who = get_comment_meta( $comment->comment_ID, 'akismet_user', true ); if ( $user_result == 'true' ) $desc = sprintf( __('Flagged as spam by %s'), $who ); else $desc = sprintf( __('Un-spammed by %s'), $who ); } if ( $desc ) echo ''.htmlspecialchars($desc).''; return $a; } add_filter( 'comment_row_actions', 'akismet_comment_row_action', 10, 2 ); function akismet_comment_status_meta_box($comment) { $history = akismet_get_comment_history( $comment->comment_ID ); if ( $history ) { echo ' '; } } // add an extra column header to the comments screen function akismet_comments_columns( $columns ) { $columns[ 'akismet' ] = __( 'Akismet' ); return $columns; } #add_filter( 'manage_edit-comments_columns', 'akismet_comments_columns' ); // Show stuff in the extra column function akismet_comment_column_row( $column, $comment_id ) { if ( $column != 'akismet' ) return; $history = akismet_get_comment_history( $comment_id ); if ( $history ) { echo ' '; } } #add_action( 'manage_comments_custom_column', 'akismet_comment_column_row', 10, 2 ); // END FIXME // WP 2.5+ function akismet_rightnow() { global $submenu, $wp_db_version; $plural_func = '__ngettext'; if ( function_exists( '_n' ) ) $plural_func = '_n'; // clean_url was deprecated in WP 3.0 $esc_url = 'clean_url'; if ( function_exists( 'esc_url' ) ) $esc_url = 'esc_url'; if ( 8645 < $wp_db_version ) // 2.7 $link = 'edit-comments.php?comment_status=spam'; elseif ( isset( $submenu['edit-comments.php'] ) ) $link = 'edit-comments.php?page=akismet-admin'; else $link = 'edit.php?page=akismet-admin'; if ( $count = get_option('akismet_spam_count') ) { $intro = sprintf( $plural_func( 'Akismet has protected your site from %2$s spam comment already,', 'Akismet has protected your site from %2$s spam comments already,', $count ), 'http://akismet.com/', number_format_i18n( $count ) ); } else { $intro = sprintf( __('Akismet blocks spam from getting to your blog,'), 'http://akismet.com/' ); } if ( $queue_count = akismet_spam_count() ) { $queue_text = sprintf( $plural_func( 'and there\'s %1$s comment in your spam queue right now.', 'and there are %1$s comments in your spam queue right now.', $queue_count ), number_format_i18n( $queue_count ), $esc_url($link) ); } else { $queue_text = sprintf( __( " but there's nothing in your spam queue at the moment." ), $esc_url($link) ); } // _c was deprecated in WP 2.9.0 if ( function_exists( '_x' ) ) $text = sprintf( _x( '%1$s%2$s', 'akismet_rightnow' ), $intro, $queue_text ); else $text = sprintf( _c( '%1$s%2$s|akismet_rightnow' ), $intro, $queue_text ); echo " \n"; } add_action('rightnow_end', 'akismet_rightnow'); // For WP >= 2.5 function akismet_check_for_spam_button($comment_status) { if ( 'approved' == $comment_status ) return; if ( function_exists('plugins_url') ) $link = 'admin.php?action=akismet_recheck_queue'; else $link = 'edit-comments.php?page=akismet-admin&recheckqueue=true&noheader=true'; echo "