Menu Adam R Brown

WP hooks navigation: Home/browseActions indexFilters index

Source View: akismet_scheduled_recheck

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 5 times in this file.

Line Code
208           // if the response is neither true nor false, hold the comment for moderation and schedule a recheck
209           if ( 'true' != $response[1] && 'false' != $response[1] ) {
210                if ( !current_user_can('moderate_comments') ) {
211                     // Comment status should be moderated
212                     self::$last_comment_result = '0';
213                }
214                if ( function_exists('wp_next_scheduled') && function_exists('wp_schedule_single_event') ) {
215                     if ( !wp_next_scheduled( 'akismet_schedule_cron_recheck' ) ) {
216                          wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' );
217                          do_action( 'akismet_scheduled_recheck', 'invalid-response-' . $response[1] );
218                     }
219                }
220
221                self::$prevent_moderation_email_for_these_comments[] = $commentdata;
222           }
223
224           if ( function_exists('wp_next_scheduled') && function_exists('wp_schedule_event') ) {
225                // WP 2.1+: delete old comments daily
226                if ( !wp_next_scheduled( 'akismet_scheduled_delete' ) )
 
Line Code
617      public static function cron_recheck() {
618           global $wpdb;
619
620           $api_key = self::get_api_key();
621
622           $status = self::verify_key( $api_key );
623           if ( get_option( 'akismet_alert_code' ) || $status == 'invalid' ) {
624                // since there is currently a problem with the key, reschedule a check for 6 hours hence
625                wp_schedule_single_event( time() + 21600, 'akismet_schedule_cron_recheck' );
626                do_action( 'akismet_scheduled_recheck', 'key-problem-' . get_option( 'akismet_alert_code' ) . '-' . $status );
627                return false;
628           }
629
630           delete_option('akismet_available_servers');
631
632           $comment_errors = $wpdb->get_col( "SELECT comment_id FROM {$wpdb->commentmeta} WHERE meta_key = 'akismet_error'     LIMIT 100" );
633           
634           load_plugin_textdomain( 'akismet' );
635
 
Line Code
679                     // If this comment has been pending moderation for longer than MAX_DELAY_BEFORE_MODERATION_EMAIL,
680                     // send a moderation email now.
681                     if ( ( intval( gmdate( 'U' ) ) - strtotime( $comment->comment_date_gmt ) ) < self::MAX_DELAY_BEFORE_MODERATION_EMAIL ) {
682                          delete_comment_meta( $comment_id, 'akismet_delayed_moderation_email' );
683                          wp_notify_moderator( $comment_id );
684                     }
685
686                     delete_comment_meta( $comment_id, 'akismet_rechecking' );
687                     wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' );
688                     do_action( 'akismet_scheduled_recheck', 'check-db-comment-' . $status );
689                     return;
690                }
691                delete_comment_meta( $comment_id, 'akismet_rechecking' );
692           }
693
694           $remaining = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->commentmeta} WHERE meta_key = 'akismet_error'" );
695           if ( $remaining && !wp_next_scheduled('akismet_schedule_cron_recheck') ) {
696                wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' );
697                do_action( 'akismet_scheduled_recheck', 'remaining' );
698           }
699      }
700
701      public static function fix_scheduled_recheck() {
702           $future_check = wp_next_scheduled( 'akismet_schedule_cron_recheck' );
703           if ( !$future_check ) {
704                return;
705           }
706
707           if ( get_option( 'akismet_alert_code' ) > 0 ) {
708                return;
709           }
710
711           $check_range = time() + 1200;
712           if ( $future_check > $check_range ) {
713                wp_clear_scheduled_hook( 'akismet_schedule_cron_recheck' );
714                wp_schedule_single_event( time() + 300, 'akismet_schedule_cron_recheck' );
715                do_action( 'akismet_scheduled_recheck', 'fix-scheduled-recheck' );
716           }
717      }
718
719      public static function add_comment_nonce( $post_id ) {
720           echo '<p style="display: none;">';
721           wp_nonce_field( 'akismet_comment_nonce_' . $post_id, 'akismet_comment_nonce', FALSE );
722           echo '</p>';
723      }
724