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
358
359           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 ) ) ) {
360                if ( empty( $comment_ids ) )
361                     return;
362
363                $wpdb->queries = array();
364
365                foreach ( $comment_ids as $comment_id ) {
366                     do_action( 'delete_comment', $comment_id );
367                     do_action( 'akismet_batch_delete_count', __FUNCTION__ );
368                }
369
370                // Prepared as strings since comment_id is an unsigned BIGINT, and using %d will constrain the value to the maximum signed BIGINT.
371                $format_string = implode( ", ", array_fill( 0, count( $comment_ids ), '%s' ) );
372
373                $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->comments} WHERE comment_id IN ( " . $format_string . " )", $comment_ids ) );
374                $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->commentmeta} WHERE comment_id IN ( " . $format_string . " )", $comment_ids ) );
375
376                clean_comment_cache( $comment_ids );
 
Line Code
395           // after $interval days regardless of the comment status
396           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 ) ) ) {
397                if ( empty( $comment_ids ) )
398                     return;
399
400                $wpdb->queries = array();
401
402                foreach ( $comment_ids as $comment_id ) {
403                     delete_comment_meta( $comment_id, 'akismet_as_submitted' );
404                     do_action( 'akismet_batch_delete_count', __FUNCTION__ );
405                }
406
407                do_action( 'akismet_delete_commentmeta_batch', count( $comment_ids ) );
408           }
409
410           if ( apply_filters( 'akismet_optimize_table', ( mt_rand(1, 5000) == 11), $wpdb->commentmeta ) ) // lucky number
411                $wpdb->query("OPTIMIZE TABLE {$wpdb->commentmeta}");
412      }
413
 
Line Code
424                     return;
425
426                $wpdb->queries = array();
427
428                $commentmeta_deleted = 0;
429
430                foreach ( $commentmeta_results as $commentmeta ) {
431                     if ( 'akismet_' == substr( $commentmeta->meta_key, 0, 8 ) ) {
432                          delete_comment_meta( $commentmeta->comment_id, $commentmeta->meta_key );
433                          do_action( 'akismet_batch_delete_count', __FUNCTION__ );
434                          $commentmeta_deleted++;
435                     }
436
437                     $last_meta_id = $commentmeta->meta_id;
438                }
439
440                do_action( 'akismet_delete_commentmeta_batch', $commentmeta_deleted );
441
442                // If we're getting close to max_execution_time, quit for this round.