bp_core_check_for_moderation( int $user_id, string $title = '', string $content = '', string $error_type = 'bool' )
Check for moderation keys and too many links.
Description
Parameters
- $user_id
-
(Required) User ID.
- $title
-
(Optional) The title of the content.
Default value: ''
- $content
-
(Optional) The content being posted.
Default value: ''
- $error_type
-
(Optional) The error type to return. Either 'bool' or 'wp_error'.
Default value: 'bool'
Return
(bool|WP_Error) True if test is passed, false if fail.
Source
File: bp-core/bp-core-moderation.php
function bp_core_check_for_moderation( $user_id = 0, $title = '', $content = '', $error_type = 'bool' ) { /** * Filters whether or not to bypass checking for moderation keys and too many links. * * @since BuddyPress 2.2.0 * * @param bool $value Whether or not to bypass checking. Default false. * @param int $user_id Topic of reply author ID. * @param string $title The title of the content. * @param string $content $the content being posted. */ if ( apply_filters( 'bp_bypass_check_for_moderation', false, $user_id, $title, $content ) ) { return true; } // Bail if super admin is author. if ( is_super_admin( $user_id ) ) { return true; } // Define local variable(s). $_post = array(); $match_out = ''; /** User Data ************************************************************ */ if ( ! empty( $user_id ) ) { // Get author data. $user = get_userdata( $user_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'] = bp_core_current_user_ip(); $_post['user_ua'] = bp_core_current_user_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( '/(http|ftp|https):\/\//i', $content, $match_out ); // Allow for bumping the max to include the user's URL. if ( ! empty( $_post['url'] ) ) { /** * Filters the maximum amount of links allowed to include the user's URL. * * @since BuddyPress 1.6.0 * * @param string $num_links How many links found. * @param string $value 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 ) { if ( 'bool' === $error_type ) { return false; } else { return new WP_Error( 'bp_moderation_too_many_links', __( 'You have posted too many links', 'buddyboss' ) ); } } } /** Blacklist ************************************************************ */ // Get the moderation keys. $blacklist = trim( get_option( 'moderation_keys' ) ); // Bail if blacklist is empty. if ( ! empty( $blacklist ) ) { // 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 ) ) { if ( 'bool' === $error_type ) { return false; } else { return new WP_Error( 'bp_moderation_word_match', __( 'You have posted an inappropriate word.', 'buddyboss' ) ); } } } } } // Check passed successfully. return true; }
Changelog
Version | Description |
---|---|
BuddyPress 2.6.0 Added $error_type parameter. | BuddyPress 2.6.0 Added $error_type parameter. |
BuddyPress 1.6.0 | 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.