bbp_check_for_blacklist( array $anonymous_data = false, int $author_id, string $title = '', string $content = '' )

Checks topics and replies against the discussion blacklist of blocked keys

Description

Parameters

$anonymous_data

(Optional) Anonymous user data

Default value: false

$author_id

(Required) Topic or reply author ID

$title

(Optional) The title of the content

Default value: ''

$content

(Optional) The content being posted

Default value: ''

Return

(bool) True if test is passed, false if fail

Source

File: bp-forums/common/functions.php

941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
function bbp_check_for_blacklist( $anonymous_data = false, $author_id = 0, $title = '', $content = '' ) {
 
    // Allow for blacklist check to be skipped
    if ( apply_filters( 'bbp_bypass_check_for_blacklist', false, $anonymous_data, $author_id, $title, $content ) )
        return true;
 
    // Bail if keymaster is author
    if ( !empty( $author_id ) && bbp_is_user_keymaster( $author_id ) )
        return true;
 
    // Define local variable
    $_post = array();
 
    /** Blacklist *************************************************************/
 
    // Get the moderation keys
    $blacklist = trim( get_option( 'blacklist_keys' ) );
 
    // Bail if blacklist is empty
    if ( empty( $blacklist ) )
        return true;
 
    /** User Data *************************************************************/
 
    // Map anonymous user data
    if ( !empty( $anonymous_data ) ) {
        $_post['author'] = $anonymous_data['bbp_anonymous_name'];
        $_post['email']  = $anonymous_data['bbp_anonymous_email'];
        $_post['url']    = $anonymous_data['bbp_anonymous_website'];
 
    // Map current user data
    } elseif ( !empty( $author_id ) ) {
 
        // Get author data
        $user = get_userdata( $author_id );
 
        // If data exists, map it
        if ( !empty( $user ) ) {
            $_post['author'] = $user->display_name;
            $_post['email']  = $user->user_email;
            $_post['url']    = $user->user_url;
        }
    }
 
    // Current user IP and user agent
    $_post['user_ip'] = bbp_current_author_ip();
    $_post['user_ua'] = bbp_current_author_ua();
 
    // Post title and content
    $_post['title']   = $title;
    $_post['content'] = $content;
 
    /** Words *****************************************************************/
 
    // Get words separated by new lines
    $words = explode( "\n", $blacklist );
 
    // Loop through words
    foreach ( (array) $words as $word ) {
 
        // Trim the whitespace from the word
        $word = trim( $word );
 
        // Skip empty lines
        if ( empty( $word ) ) { continue; }
 
        // Do some escaping magic so that '#' chars in the
        // spam words don't break things:
        $word    = preg_quote( $word, '#' );
        $pattern = "#$word#i";
 
        // Loop through post data
        foreach ( $_post as $post_data ) {
 
            // Check each user data for current word
            if ( preg_match( $pattern, $post_data ) ) {
 
                // Post does not pass
                return false;
            }
        }
    }
 
    // Check passed successfully
    return true;
}

Changelog

Changelog
Version Description
bbPress (r3446) Introduced.

Questions?

We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.