bbp_check_for_duplicate( array $post_data = array() )
Check for duplicate topics/replies
Description
Check to make sure that a user is not making a duplicate post
Parameters
- $post_data
-
(Optional) Contains information about the comment
Default value: array()
Return
(bool) True if it is not a duplicate, false if it is
Source
File: bp-forums/common/functions.php
function bbp_check_for_duplicate( $post_data = array() ) { // No duplicate checks for those who can throttle if ( current_user_can( 'throttle' ) ) return true; // Define global to use get_meta_sql() and get_var() methods global $wpdb; // Parse arguments against default values $r = bbp_parse_args( $post_data, array( 'post_author' => 0, 'post_type' => array( bbp_get_topic_post_type(), bbp_get_reply_post_type() ), 'post_parent' => 0, 'post_content' => '', 'post_status' => bbp_get_trash_status_id(), 'anonymous_data' => false ), 'check_for_duplicate' ); // Check for anonymous post if ( empty( $r['post_author'] ) && ( !empty( $r['anonymous_data'] ) && !empty( $r['anonymous_data']['bbp_anonymous_email'] ) ) ) { $clauses = get_meta_sql( array( array( 'key' => '_bbp_anonymous_email', 'value' => sanitize_email( $r['anonymous_data']['bbp_anonymous_email'] ) ) ), 'post', $wpdb->posts, 'ID' ); $join = $clauses['join']; $where = $clauses['where']; } else { $join = $where = ''; } // Unslash $r to pass through $wpdb->prepare() // // @see: http://bbpress.trac.wordpress.org/ticket/2185/ // @see: http://core.trac.wordpress.org/changeset/23973/ $r = function_exists( 'wp_unslash' ) ? wp_unslash( $r ) : stripslashes_deep( $r ); // Prepare duplicate check query $query = $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} {$join} WHERE post_type = %s AND post_status != %s AND post_author = %d AND post_content = %s {$where}", $r['post_type'], $r['post_status'], $r['post_author'], $r['post_content'] ); $query .= !empty( $r['post_parent'] ) ? $wpdb->prepare( " AND post_parent = %d", $r['post_parent'] ) : ''; $query .= " LIMIT 1"; $dupe = apply_filters( 'bbp_check_for_duplicate_query', $query, $r ); if ( $wpdb->get_var( $dupe ) ) { do_action( 'bbp_check_for_duplicate_trigger', $post_data ); return false; } return true; }
Changelog
Version | Description |
---|---|
bbPress (r2763) | 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.