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