BBP_Akismet::check_post( array $post_data = array() )
Converts topic/reply data into Akismet comment checking format
Description Description
Parameters Parameters
- $post_data
-
(Optional)
Default value: array()
Return Return
(array) Array of post data
Source Source
File: includes/extend/akismet.php
public function check_post( $post_data ) { // Define local variables $user_data = array(); $post_permalink = ''; // Post is not published if ( bbp_get_public_status_id() !== $post_data['post_status'] ) { return $post_data; } // Cast the post_author to 0 if it's empty if ( empty( $post_data['post_author'] ) ) { $post_data['post_author'] = 0; } /** Author ************************************************************/ $user_data['last_active'] = ''; $user_data['registered'] = date( 'Y-m-d H:i:s'); $user_data['total_posts'] = (int) bbp_get_user_post_count( $post_data['post_author'] ); // Get user data $userdata = get_userdata( $post_data['post_author'] ); $anonymous_data = bbp_filter_anonymous_post_data(); // Author is anonymous if ( ! empty( $anonymous_data ) ) { $user_data['name'] = $anonymous_data['bbp_anonymous_name']; $user_data['email'] = $anonymous_data['bbp_anonymous_email']; $user_data['website'] = $anonymous_data['bbp_anonymous_website']; // Author is logged in } elseif ( ! empty( $userdata ) ) { $user_data['name'] = $userdata->display_name; $user_data['email'] = $userdata->user_email; $user_data['website'] = $userdata->user_url; $user_data['registered'] = $userdata->user_registered; // Missing author data, so set some empty strings } else { $user_data['name'] = ''; $user_data['email'] = ''; $user_data['website'] = ''; } /** Post **************************************************************/ if ( ! empty( $post_data['post_parent'] ) ) { // Use post parent for permalink $post_permalink = get_permalink( $post_data['post_parent'] ); // Use post parent to get datetime of last reply on this topic $reply_id = bbp_get_topic_last_reply_id( $post_data['post_parent'] ); if ( ! empty( $reply_id ) ) { $user_data['last_active'] = get_post_field( 'post_date', $reply_id ); } } // Pass title & content together into comment content $_post_content = trim( $post_data['post_title'] . "\n\n" . $post_data['post_content'] ); // Check if the post data is spammy... $_post = $this->maybe_spam( array( 'comment_author' => $user_data['name'], 'comment_author_email' => $user_data['email'], 'comment_author_url' => $user_data['website'], 'comment_content' => $_post_content, 'comment_post_ID' => $post_data['post_parent'], 'comment_type' => $post_data['post_type'], 'comment_total' => $user_data['total_posts'], 'comment_last_active_gmt' => $user_data['last_active'], 'comment_account_registered_gmt' => $user_data['registered'], 'permalink' => $post_permalink, 'referrer' => wp_get_raw_referer(), 'user_agent' => bbp_current_author_ua(), 'user_ID' => $post_data['post_author'], 'user_ip' => bbp_current_author_ip(), 'user_role' => $this->get_user_roles( $post_data['post_author'] ), ) ); // Set the result (from maybe_spam() above) $post_data['bbp_akismet_result'] = ! empty( $_post['bbp_akismet_result'] ) ? $_post['bbp_akismet_result'] // raw : esc_html__( 'No response', 'bbpress' ); // Set the data-as-submitted value without the result (recursion avoidance) unset( $_post['bbp_akismet_result'] ); $post_data['bbp_post_as_submitted'] = $_post; // Cleanup to avoid touching this variable again below unset( $_post ); // Allow post_data to be manipulated do_action_ref_array( 'bbp_akismet_check_post', $post_data ); // Parse and log the last response $this->last_post = $this->parse_response( $post_data ); // Return the last response back to the filter return $this->last_post; }
Changelog Changelog
Version | Description |
---|---|
2.0.0 | Introduced. |