|
1 <?php |
|
2 |
|
3 WP_CLI::add_command( 'akismet', 'Akismet_CLI' ); |
|
4 |
|
5 /** |
|
6 * Filter spam comments. |
|
7 */ |
|
8 class Akismet_CLI extends WP_CLI_Command { |
|
9 /** |
|
10 * Checks one or more comments against the Akismet API. |
|
11 * |
|
12 * ## OPTIONS |
|
13 * <comment_id>... |
|
14 * : The ID(s) of the comment(s) to check. |
|
15 * |
|
16 * [--noaction] |
|
17 * : Don't change the status of the comment. Just report what Akismet thinks it is. |
|
18 * |
|
19 * ## EXAMPLES |
|
20 * |
|
21 * wp akismet check 12345 |
|
22 * |
|
23 * @alias comment-check |
|
24 */ |
|
25 public function check( $args, $assoc_args ) { |
|
26 foreach ( $args as $comment_id ) { |
|
27 if ( isset( $assoc_args['noaction'] ) ) { |
|
28 // Check the comment, but don't reclassify it. |
|
29 $api_response = Akismet::check_db_comment( $comment_id, 'wp-cli' ); |
|
30 } |
|
31 else { |
|
32 $api_response = Akismet::recheck_comment( $comment_id, 'wp-cli' ); |
|
33 } |
|
34 |
|
35 if ( 'true' === $api_response ) { |
|
36 WP_CLI::line( sprintf( __( "Comment #%d is spam.", 'akismet' ), $comment_id ) ); |
|
37 } |
|
38 else if ( 'false' === $api_response ) { |
|
39 WP_CLI::line( sprintf( __( "Comment #%d is not spam.", 'akismet' ), $comment_id ) ); |
|
40 } |
|
41 else { |
|
42 if ( false === $api_response ) { |
|
43 WP_CLI::error( __( "Failed to connect to Akismet.", 'akismet' ) ); |
|
44 } |
|
45 else if ( is_wp_error( $api_response ) ) { |
|
46 WP_CLI::warning( sprintf( __( "Comment #%d could not be checked.", 'akismet' ), $comment_id ) ); |
|
47 } |
|
48 } |
|
49 } |
|
50 } |
|
51 |
|
52 /** |
|
53 * Recheck all comments in the Pending queue. |
|
54 * |
|
55 * ## EXAMPLES |
|
56 * |
|
57 * wp akismet recheck_queue |
|
58 * |
|
59 * @alias recheck-queue |
|
60 */ |
|
61 public function recheck_queue() { |
|
62 $batch_size = 100; |
|
63 $start = 0; |
|
64 |
|
65 $total_counts = array(); |
|
66 |
|
67 do { |
|
68 $result_counts = Akismet_Admin::recheck_queue_portion( $start, $batch_size ); |
|
69 |
|
70 if ( $result_counts['processed'] > 0 ) { |
|
71 foreach ( $result_counts as $key => $count ) { |
|
72 if ( ! isset( $total_counts[ $key ] ) ) { |
|
73 $total_counts[ $key ] = $count; |
|
74 } |
|
75 else { |
|
76 $total_counts[ $key ] += $count; |
|
77 } |
|
78 } |
|
79 $start += $batch_size; |
|
80 $start -= $result_counts['spam']; // These comments will have been removed from the queue. |
|
81 } |
|
82 } while ( $result_counts['processed'] > 0 ); |
|
83 |
|
84 WP_CLI::line( sprintf( _n( "Processed %d comment.", "Processed %d comments.", $total_counts['processed'], 'akismet' ), number_format( $total_counts['processed'] ) ) ); |
|
85 WP_CLI::line( sprintf( _n( "%d comment moved to Spam.", "%d comments moved to Spam.", $total_counts['spam'], 'akismet' ), number_format( $total_counts['spam'] ) ) ); |
|
86 |
|
87 if ( $total_counts['error'] ) { |
|
88 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'] ) ) ); |
|
89 } |
|
90 } |
|
91 } |