diff options
Diffstat (limited to 'plugins/akismet/class.akismet-cli.php')
-rw-r--r-- | plugins/akismet/class.akismet-cli.php | 185 |
1 files changed, 0 insertions, 185 deletions
diff --git a/plugins/akismet/class.akismet-cli.php b/plugins/akismet/class.akismet-cli.php deleted file mode 100644 index 9cbe7a92..00000000 --- a/plugins/akismet/class.akismet-cli.php +++ /dev/null @@ -1,185 +0,0 @@ -<?php - -WP_CLI::add_command( 'akismet', 'Akismet_CLI' ); - -/** - * Filter spam comments. - */ -class Akismet_CLI extends WP_CLI_Command { - /** - * Checks one or more comments against the Akismet API. - * - * ## OPTIONS - * <comment_id>... - * : The ID(s) of the comment(s) to check. - * - * [--noaction] - * : Don't change the status of the comment. Just report what Akismet thinks it is. - * - * ## EXAMPLES - * - * wp akismet check 12345 - * - * @alias comment-check - */ - public function check( $args, $assoc_args ) { - foreach ( $args as $comment_id ) { - if ( isset( $assoc_args['noaction'] ) ) { - // Check the comment, but don't reclassify it. - $api_response = Akismet::check_db_comment( $comment_id, 'wp-cli' ); - } - else { - $api_response = Akismet::recheck_comment( $comment_id, 'wp-cli' ); - } - - if ( 'true' === $api_response ) { - WP_CLI::line( sprintf( __( "Comment #%d is spam.", 'akismet' ), $comment_id ) ); - } - else if ( 'false' === $api_response ) { - WP_CLI::line( sprintf( __( "Comment #%d is not spam.", 'akismet' ), $comment_id ) ); - } - else { - if ( false === $api_response ) { - WP_CLI::error( __( "Failed to connect to Akismet.", 'akismet' ) ); - } - else if ( is_wp_error( $api_response ) ) { - WP_CLI::warning( sprintf( __( "Comment #%d could not be checked.", 'akismet' ), $comment_id ) ); - } - } - } - } - - /** - * Recheck all comments in the Pending queue. - * - * ## EXAMPLES - * - * wp akismet recheck_queue - * - * @alias recheck-queue - */ - public function recheck_queue() { - $batch_size = 100; - $start = 0; - - $total_counts = array(); - - do { - $result_counts = Akismet_Admin::recheck_queue_portion( $start, $batch_size ); - - if ( $result_counts['processed'] > 0 ) { - foreach ( $result_counts as $key => $count ) { - if ( ! isset( $total_counts[ $key ] ) ) { - $total_counts[ $key ] = $count; - } - else { - $total_counts[ $key ] += $count; - } - } - $start += $batch_size; - $start -= $result_counts['spam']; // These comments will have been removed from the queue. - } - } while ( $result_counts['processed'] > 0 ); - - WP_CLI::line( sprintf( _n( "Processed %d comment.", "Processed %d comments.", $total_counts['processed'], 'akismet' ), number_format( $total_counts['processed'] ) ) ); - WP_CLI::line( sprintf( _n( "%d comment moved to Spam.", "%d comments moved to Spam.", $total_counts['spam'], 'akismet' ), number_format( $total_counts['spam'] ) ) ); - - if ( $total_counts['error'] ) { - WP_CLI::line( sprintf( _n( "%d comment could not be checked.", "%d comments could not be checked.", $total_counts['error'], 'akismet' ), number_format( $total_counts['error'] ) ) ); - } - } - - /** - * Fetches stats from the Akismet API. - * - * ## OPTIONS - * - * [<interval>] - * : The time period for which to retrieve stats. - * --- - * default: all - * options: - * - days - * - months - * - all - * --- - * - * [--format=<format>] - * : Allows overriding the output of the command when listing connections. - * --- - * default: table - * options: - * - table - * - json - * - csv - * - yaml - * - count - * --- - * - * [--summary] - * : When set, will display a summary of the stats. - * - * ## EXAMPLES - * - * wp akismet stats - * wp akismet stats all - * wp akismet stats days - * wp akismet stats months - * wp akismet stats all --summary - */ - public function stats( $args, $assoc_args ) { - $api_key = Akismet::get_api_key(); - - if ( empty( $api_key ) ) { - WP_CLI::error( __( 'API key must be set to fetch stats.', 'akismet' ) ); - } - - switch ( $args[0] ) { - case 'days': - $interval = '60-days'; - break; - case 'months': - $interval = '6-months'; - break; - default: - $interval = 'all'; - break; - } - - $response = Akismet::http_post( - Akismet::build_query( array( - 'blog' => get_option( 'home' ), - 'key' => $api_key, - 'from' => $interval, - ) ), - 'get-stats' - ); - - if ( empty( $response[1] ) ) { - WP_CLI::error( __( 'Currently unable to fetch stats. Please try again.', 'akismet' ) ); - } - - $response_body = json_decode( $response[1], true ); - - if ( is_null( $response_body ) ) { - WP_CLI::error( __( 'Stats response could not be decoded.', 'akismet' ) ); - } - - if ( isset( $assoc_args['summary'] ) ) { - $keys = array( - 'spam', - 'ham', - 'missed_spam', - 'false_positives', - 'accuracy', - 'time_saved', - ); - - WP_CLI\Utils\format_items( $assoc_args['format'], array( $response_body ), $keys ); - } - else { - $stats = $response_body['breakdown']; - WP_CLI\Utils\format_items( $assoc_args['format'], $stats, array_keys( end( $stats ) ) ); - } - } -}
\ No newline at end of file |