Skip to:
Content

bbPress.org


Ignore:
Timestamp:
06/02/2016 01:57:59 AM (10 years ago)
Author:
netweb
Message:

Moderation: Add new bbp_moderation_keys and bbp_blacklist_keys filters

This changeset allows external plugins to filter the list of moderation and blacklist keyword terms, IP, URLs, words, etc.

Also cleans up bbp_check_for_moderation() to bails early if there are no moderation keys inline with bbp_check_for_blacklist()

Props thebrandonallen, satollo.
Fixes #2861.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/includes/common/functions.php

    r5954 r6050  
    802802    $match_out = '';
    803803
     804    /** Max Links *************************************************************/
     805
     806    $max_links = get_option( 'comment_max_links' );
     807    if ( ! empty( $max_links ) ) {
     808
     809        // How many links?
     810        $num_links = preg_match_all( '/(http|ftp|https):\/\//i', $content, $match_out );
     811
     812        // Allow for bumping the max to include the user's URL
     813        if ( ! empty( $_post['url'] ) ) {
     814            $num_links = apply_filters( 'comment_max_links_url', $num_links, $_post['url'] );
     815        }
     816
     817        // Das ist zu viele links!
     818        if ( $num_links >= $max_links ) {
     819            return false;
     820        }
     821    }
     822
     823    /** Moderation ************************************************************/
     824
     825    /**
     826     * Filters the bbPress moderation keys.
     827     *
     828     * @since 2.6.0 bbPress (r6050)
     829     *
     830     * @param string $moderation List of moderation keys. One per new line.
     831     */
     832    $moderation = apply_filters(
     833        'bbp_moderation_keys',
     834        trim( get_option( 'moderation_keys' )
     835    ) );
     836
     837    // Bail if blacklist is empty
     838    if ( empty( $moderation ) ) {
     839        return true;
     840    }
     841
    804842    /** User Data *************************************************************/
    805843
     
    832870    $_post['content'] = $content;
    833871
    834     /** Max Links *************************************************************/
    835 
    836     $max_links = get_option( 'comment_max_links' );
    837     if ( ! empty( $max_links ) ) {
    838 
    839         // How many links?
    840         $num_links = preg_match_all( '/(http|ftp|https):\/\//i', $content, $match_out );
    841 
    842         // Allow for bumping the max to include the user's URL
    843         if ( ! empty( $_post['url'] ) ) {
    844             $num_links = apply_filters( 'comment_max_links_url', $num_links, $_post['url'] );
     872    /** Words *****************************************************************/
     873
     874    // Get words separated by new lines
     875    $words = explode( "\n", $moderation );
     876
     877    // Loop through words
     878    foreach ( (array) $words as $word ) {
     879
     880        // Trim the whitespace from the word
     881        $word = trim( $word );
     882
     883        // Skip empty lines
     884        if ( empty( $word ) ) {
     885            continue;
    845886        }
    846887
    847         // Das ist zu viele links!
    848         if ( $num_links >= $max_links ) {
    849             return false;
    850         }
    851     }
    852 
    853     /** Blacklist *************************************************************/
    854 
    855     // Get the moderation keys
    856     $blacklist = trim( get_option( 'moderation_keys' ) );
    857 
    858     // Bail if blacklist is empty
    859     if ( ! empty( $blacklist ) ) {
    860 
    861         // Get words separated by new lines
    862         $words = explode( "\n", $blacklist );
    863 
    864         // Loop through words
    865         foreach ( (array) $words as $word ) {
    866 
    867             // Trim the whitespace from the word
    868             $word = trim( $word );
    869 
    870             // Skip empty lines
    871             if ( empty( $word ) ) {
    872                 continue;
    873             }
    874 
    875             // Do some escaping magic so that '#' chars in the
    876             // spam words don't break things:
    877             $word    = preg_quote( $word, '#' );
    878             $pattern = "#$word#i";
    879 
    880             // Loop through post data
    881             foreach ( $_post as $post_data ) {
    882 
    883                 // Check each user data for current word
    884                 if ( preg_match( $pattern, $post_data ) ) {
    885 
    886                     // Post does not pass
    887                     return false;
    888                 }
     888        // Do some escaping magic so that '#' chars in the
     889        // spam words don't break things:
     890        $word    = preg_quote( $word, '#' );
     891        $pattern = "#$word#i";
     892
     893        // Loop through post data
     894        foreach ( $_post as $post_data ) {
     895
     896            // Check each user data for current word
     897            if ( preg_match( $pattern, $post_data ) ) {
     898
     899                // Post does not pass
     900                return false;
    889901            }
    890902        }
     
    921933    }
    922934
    923     // Define local variable
    924     $_post = array();
    925 
    926935    /** Blacklist *************************************************************/
    927936
    928     // Get the moderation keys
    929     $blacklist = trim( get_option( 'blacklist_keys' ) );
     937    /**
     938     * Filters the bbPress blacklist keys.
     939     *
     940     * @since 2.6.0 bbPress (r6050)
     941     *
     942     * @param string $blacklist List of blacklist keys. One per new line.
     943     */
     944    $blacklist = apply_filters(
     945        'bbp_blacklist_keys',
     946        trim( get_option( 'blacklist_keys' )
     947    ) );
    930948
    931949    // Bail if blacklist is empty
     
    935953
    936954    /** User Data *************************************************************/
     955
     956    // Define local variable
     957    $_post = array();
    937958
    938959    // Map anonymous user data
Note: See TracChangeset for help on using the changeset viewer.