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
376
377           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 ) ) ) {
378                if ( empty( $comment_ids ) )
379                     return;
380
381                $wpdb->queries = array();
382
383                foreach ( $comment_ids as $comment_id ) {
384                     do_action( 'delete_comment', $comment_id );
385                     do_action( 'akismet_batch_delete_count', __FUNCTION__ );
386                }
387
388                // Prepared as strings since comment_id is an unsigned BIGINT, and using %d will constrain the value to the maximum signed BIGINT.
389                $format_string = implode( ", ", array_fill( 0, count( $comment_ids ), '%s' ) );
390
391                $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->comments} WHERE comment_id IN ( " . $format_string . " )", $comment_ids ) );
392                $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->commentmeta} WHERE comment_id IN ( " . $format_string . " )", $comment_ids ) );
393
394                clean_comment_cache( $comment_ids );
 
Line Code
413           // after $interval days regardless of the comment status
414           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 ) ) ) {
415                if ( empty( $comment_ids ) )
416                     return;
417
418                $wpdb->queries = array();
419
420                foreach ( $comment_ids as $comment_id ) {
421                     delete_comment_meta( $comment_id, 'akismet_as_submitted' );
422                     do_action( 'akismet_batch_delete_count', __FUNCTION__ );
423                }
424
425                do_action( 'akismet_delete_commentmeta_batch', count( $comment_ids ) );
426           }
427
428           if ( apply_filters( 'akismet_optimize_table', ( mt_rand(1, 5000) == 11), $wpdb->commentmeta ) ) // lucky number
429                $wpdb->query("OPTIMIZE TABLE {$wpdb->commentmeta}");
430      }
431
 
Line Code
442                     return;
443
444                $wpdb->queries = array();
445
446                $commentmeta_deleted = 0;
447
448                foreach ( $commentmeta_results as $commentmeta ) {
449                     if ( 'akismet_' == substr( $commentmeta->meta_key, 0, 8 ) ) {
450                          delete_comment_meta( $commentmeta->comment_id, $commentmeta->meta_key );
451                          do_action( 'akismet_batch_delete_count', __FUNCTION__ );
452                          $commentmeta_deleted++;
453                     }
454
455                     $last_meta_id = $commentmeta->meta_id;
456                }
457
458                do_action( 'akismet_delete_commentmeta_batch', $commentmeta_deleted );
459
460                // If we're getting close to max_execution_time, quit for this round.