Menu Adam R Brown

WP hooks navigation: Home/browseActions indexFilters index

Source View: akismet_batch_delete_count

To save our bandwidth, we show only a snippet of code around each occurence of the hook. View complete file in SVN (without highlighting).

Understanding Source Code

The best way to understand what a hook does is to look at where it occurs in the source code.

Remember, this hook may occur in more than one file. Moreover, the hook's context may change from version to version.

Source View

This hook occurs 3 times in this file.

Line Code
363
364           while ( $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_id FROM {$wpdb->comments} WHERE DATE_SUB(NOW(), INTERVAL %d DAY) > comment_date_gmt AND comment_approved = 'spam' LIMIT %d", $delete_interval, $delete_limit ) ) ) {
365                if ( empty( $comment_ids ) )
366                     return;
367
368                $wpdb->queries = array();
369
370                foreach ( $comment_ids as $comment_id ) {
371                     do_action( 'delete_comment', $comment_id );
372                     do_action( 'akismet_batch_delete_count', __FUNCTION__ );
373                }
374
375                // Prepared as strings since comment_id is an unsigned BIGINT, and using %d will constrain the value to the maximum signed BIGINT.
376                $format_string = implode( ", ", array_fill( 0, count( $comment_ids ), '%s' ) );
377
378                $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->comments} WHERE comment_id IN ( " . $format_string . " )", $comment_ids ) );
379                $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->commentmeta} WHERE comment_id IN ( " . $format_string . " )", $comment_ids ) );
380
381                clean_comment_cache( $comment_ids );
 
Line Code
400           // after $interval days regardless of the comment status
401           while ( $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT m.comment_id FROM {$wpdb->commentmeta} as m INNER JOIN {$wpdb->comments} as c USING(comment_id) WHERE m.meta_key = 'akismet_as_submitted' AND DATE_SUB(NOW(), INTERVAL %d DAY) > c.comment_date_gmt LIMIT 10000", $interval ) ) ) {
402                if ( empty( $comment_ids ) )
403                     return;
404
405                $wpdb->queries = array();
406
407                foreach ( $comment_ids as $comment_id ) {
408                     delete_comment_meta( $comment_id, 'akismet_as_submitted' );
409                     do_action( 'akismet_batch_delete_count', __FUNCTION__ );
410                }
411
412                do_action( 'akismet_delete_commentmeta_batch', count( $comment_ids ) );
413           }
414
415           if ( apply_filters( 'akismet_optimize_table', ( mt_rand(1, 5000) == 11), $wpdb->commentmeta ) ) // lucky number
416                $wpdb->query("OPTIMIZE TABLE {$wpdb->commentmeta}");
417      }
418
 
Line Code
429                     return;
430
431                $wpdb->queries = array();
432
433                $commentmeta_deleted = 0;
434
435                foreach ( $commentmeta_results as $commentmeta ) {
436                     if ( 'akismet_' == substr( $commentmeta->meta_key, 0, 8 ) ) {
437                          delete_comment_meta( $commentmeta->comment_id, $commentmeta->meta_key );
438                          do_action( 'akismet_batch_delete_count', __FUNCTION__ );
439                          $commentmeta_deleted++;
440                     }
441
442                     $last_meta_id = $commentmeta->meta_id;
443                }
444
445                do_action( 'akismet_delete_commentmeta_batch', $commentmeta_deleted );
446
447                // If we're getting close to max_execution_time, quit for this round.