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
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.