home *** CD-ROM | disk | FTP | other *** search
/ HTML Examples / WP.iso / wordpress2 / wp-content / plugins / akismet / class.akismet-cli.php < prev    next >
Encoding:
PHP Script  |  2016-06-05  |  2.6 KB  |  91 lines

  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. }