Source View: akismet_spam_count_incr

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

Line Code
138                // akismet_spam_count will be incremented later by comment_is_spam()
139                self::$last_comment_result = 'spam';
140
141                $discard = ( isset( $commentdata['akismet_pro_tip'] ) && $commentdata['akismet_pro_tip'] === 'discard' && self::allow_discard() );
142
143                do_action( 'akismet_spam_caught', $discard );
144
145                if ( $discard ) {
146                     // akismet_result_spam() won't be called so bump the counter here
147                     if ( $incr = apply_filters('akismet_spam_count_incr', 1) )
148                          update_option( 'akismet_spam_count', get_option('akismet_spam_count') + $incr );
149                     $redirect_to = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : get_permalink( $post );
150                     wp_safe_redirect( esc_url_raw( $redirect_to ) );
151                     die();
152                }
153           }
154           
155           // if the response is neither true nor false, hold the comment for moderation and schedule a recheck
156           if ( 'true' != $response[1] && 'false' != $response[1] ) {
 
Line Code
704      // filter handler used to return a spam result to pre_comment_approved
705      public static function last_comment_status( $approved, $comment ) {
706           // Only do this if it's the correct comment
707           if ( is_null(self::$last_comment_result) || ! self::matches_last_comment( $comment ) ) {
708                self::log( "comment_is_spam mismatched comment, returning unaltered $approved" );
709                return $approved;
710           }
711
712           // bump the counter here instead of when the filter is added to reduce the possibility of overcounting
713           if ( $incr = apply_filters('akismet_spam_count_incr', 1) )
714                update_option( 'akismet_spam_count', get_option('akismet_spam_count') + $incr );
715
716           return self::$last_comment_result;
717      }
718      
719      /**
720       * If Akismet is temporarily unreachable, we don't want to "spam" the blogger with
721       * moderation emails for comments that will be automatically cleared or spammed on
722       * the next retry.