BBP_Akismet::check_post( string $post_data )

Converts topic/reply data into Akismet comment checking format

Description

Parameters

$post_data

(string) (Required)

Return

(array) Array of post data

Source

File: bp-forums/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 ************************************************************/

		// 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;

		// Missing author data, so set some empty strings
		} else {
			$user_data['name']    = '';
			$user_data['email']   = '';
			$user_data['website'] = '';
		}

		/** Post **************************************************************/

		// Use post parent for permalink
		if ( !empty( $post_data['post_parent'] ) )
			$post_permalink = get_permalink( $post_data['post_parent'] );

		// Put post_data back into usable array
		$_post = array(
			'comment_author'       => $user_data['name'],
			'comment_author_email' => $user_data['email'],
			'comment_author_url'   => $user_data['website'],
			'comment_content'      => $post_data['post_content'],
			'comment_post_ID'      => $post_data['post_parent'],
			'comment_type'         => $post_data['post_type'],
			'permalink'            => $post_permalink,
			'referrer'             => $_SERVER['HTTP_REFERER'],
			'user_agent'           => $_SERVER['HTTP_USER_AGENT'],
			'user_ID'              => $post_data['post_author'],
			'user_ip'              => bbp_current_author_ip(),
			'user_role'            => $this->get_user_roles( $post_data['post_author'] ),
		);

		// Check the post_data
		$_post = $this->maybe_spam( $_post );

		// Get the result
		$post_data['bbp_akismet_result'] = $_post['bbp_akismet_result'];
		unset( $_post['bbp_akismet_result'] );

		// Store the data as submitted
		$post_data['bbp_post_as_submitted'] = $_post;

		// Allow post_data to be manipulated
		do_action_ref_array( 'bbp_akismet_check_post', $post_data );

		// Spam
		if ( 'true' === $post_data['bbp_akismet_result'] ) {

			// Let plugins do their thing
			do_action( 'bbp_akismet_spam_caught' );

			// This is spam
			$post_data['post_status'] = bbp_get_spam_status_id();

			// We don't want your spam tags here
			add_filter( 'bbp_new_reply_pre_set_terms', array( $this, 'filter_post_terms' ), 1, 3 );

			// @todo Spam counter?
		}

		// @todo Topic/reply moderation? No true/false response - 'pending' or 'draft'
		// @todo Auto-delete old spam?

		// Log the last post
		$this->last_post = $post_data;

		// Pass the data back to the filter
		return $post_data;
	}

Changelog

Changelog
Version Description
bbPress (r3277) 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.