Source View: akismet_optimize_table

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.

  • Action hooks look like this: do_action( "hook_name" )
  • Filter hooks look like this: apply_filters( "hook_name", "what_to_filter" ).

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
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 );
377                do_action( 'akismet_delete_comment_batch', count( $comment_ids ) );
378           }
379
380           if ( apply_filters( 'akismet_optimize_table', ( mt_rand(1, 5000) == 11), $wpdb->comments ) ) // lucky number
381                $wpdb->query("OPTIMIZE TABLE {$wpdb->comments}");
382      }
383
384      public static function delete_old_comments_meta() {
385           global $wpdb;
386
387           $interval = apply_filters( 'akismet_delete_commentmeta_interval', 15 );
388
389           # enforce a minimum of 1 day
 
Line Code
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
414      // Clear out comments meta that no longer have corresponding comments in the database
415      public static function delete_orphaned_commentmeta() {
416           global $wpdb;
417
418           $last_meta_id = 0;
419           $start_time = isset( $_SERVER['REQUEST_TIME_FLOAT'] ) ? $_SERVER['REQUEST_TIME_FLOAT'] : microtime( true );
 
Line Code
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.
443                if ( microtime(true) - $start_time > $max_exec_time )
444                     return;
445           }
446
447           if ( apply_filters( 'akismet_optimize_table', ( mt_rand(1, 5000) == 11), $wpdb->commentmeta ) ) // lucky number
448                $wpdb->query("OPTIMIZE TABLE {$wpdb->commentmeta}");
449      }
450
451      // how many approved comments does this author have?
452      public static function get_user_comments_approved( $user_id, $comment_author_email, $comment_author, $comment_author_url ) {
453           global $wpdb;
454
455           if ( !empty( $user_id ) )
456                return (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->comments} WHERE user_id = %d AND comment_approved = 1", $user_id ) );