bbp_check_for_moderation( array $anonymous_data = false, int $author_id, string $title = '', string $content = '' )
Checks topics and replies against the discussion moderation 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
function bbp_check_for_moderation( $anonymous_data = false, $author_id = 0, $title = '', $content = '' ) { // Allow for moderation check to be skipped if ( apply_filters( 'bbp_bypass_check_for_moderation', 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(s) $_post = array(); $match_out = ''; /** Blacklist *************************************************************/ // Get the moderation keys $blacklist = trim( get_option( 'moderation_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; /** Max Links *************************************************************/ $max_links = get_option( 'comment_max_links' ); if ( !empty( $max_links ) ) { // How many links? $num_links = preg_match_all( '/<a [^>]*href/i', $content, $match_out ); // Allow for bumping the max to include the user's URL $num_links = apply_filters( 'comment_max_links_url', $num_links, $_post['url'] ); // Das ist zu viele links! if ( $num_links >= $max_links ) { return false; } } /** 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 (r3581) | 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.