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
390
391           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 ) ) ) {
392                if ( empty( $comment_ids ) )
393                     return;
394
395                $wpdb->queries = array();
396
397                foreach ( $comment_ids as $comment_id ) {
398                     do_action( 'delete_comment', $comment_id );
399                     do_action( 'akismet_batch_delete_count', __FUNCTION__ );
400                }
401
402                // Prepared as strings since comment_id is an unsigned BIGINT, and using %d will constrain the value to the maximum signed BIGINT.
403                $format_string = implode( ", ", array_fill( 0, count( $comment_ids ), '%s' ) );
404
405                $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->comments} WHERE comment_id IN ( " . $format_string . " )", $comment_ids ) );
406                $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->commentmeta} WHERE comment_id IN ( " . $format_string . " )", $comment_ids ) );
407
408                clean_comment_cache( $comment_ids );
 
Line Code
427           // after $interval days regardless of the comment status
428           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 ) ) ) {
429                if ( empty( $comment_ids ) )
430                     return;
431
432                $wpdb->queries = array();
433
434                foreach ( $comment_ids as $comment_id ) {
435                     delete_comment_meta( $comment_id, 'akismet_as_submitted' );
436                     do_action( 'akismet_batch_delete_count', __FUNCTION__ );
437                }
438
439                do_action( 'akismet_delete_commentmeta_batch', count( $comment_ids ) );
440           }
441
442           if ( apply_filters( 'akismet_optimize_table', ( mt_rand(1, 5000) == 11), $wpdb->commentmeta ) ) // lucky number
443                $wpdb->query("OPTIMIZE TABLE {$wpdb->commentmeta}");
444      }
445
 
Line Code
456                     return;
457
458                $wpdb->queries = array();
459
460                $commentmeta_deleted = 0;
461
462                foreach ( $commentmeta_results as $commentmeta ) {
463                     if ( 'akismet_' == substr( $commentmeta->meta_key, 0, 8 ) ) {
464                          delete_comment_meta( $commentmeta->comment_id, $commentmeta->meta_key );
465                          do_action( 'akismet_batch_delete_count', __FUNCTION__ );
466                          $commentmeta_deleted++;
467                     }
468
469                     $last_meta_id = $commentmeta->meta_id;
470                }
471
472                do_action( 'akismet_delete_commentmeta_batch', $commentmeta_deleted );
473
474                // If we're getting close to max_execution_time, quit for this round.