~canonical-sysadmins/wordpress/4.8

« back to all changes in this revision

Viewing changes to wp-content/plugins/akismet/class.akismet-cli.php

  • Committer: Barry Price
  • Date: 2016-09-08 02:50:41 UTC
  • mfrom: (1.1.19 upstream)
  • Revision ID: barry.price@canonical.com-20160908025041-xblhpbi3hq55m5y3
Merge WP4.6.1 from upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
}
 
 
b'\\ No newline at end of file'