BP_Akismet::send_akismet_request( array $activity_data, string $check = 'check', string $spam = 'spam' )

Contact Akismet to check if this is spam or ham.


Description Description

Props to WordPress core Akismet plugin for a lot of this.


Top ↑

Parameters Parameters

$activity_data

(array) (Required) Packet of information to submit to Akismet.

$check

(string) (Optional) "check" or "submit".

Default value: 'check'

$spam

(string) (Optional) "spam" or "ham".

Default value: 'spam'


Top ↑

Return Return

(array) $activity_data Activity data, with Akismet data added.


Source Source

File: bp-activity/classes/class-bp-akismet.php

	public function send_akismet_request( $activity_data, $check = 'check', $spam = 'spam' ) {
		$query_string = $path = '';

		$activity_data['blog']         = bp_get_option( 'home' );
		$activity_data['blog_charset'] = bp_get_option( 'blog_charset' );
		$activity_data['blog_lang']    = get_locale();
		$activity_data['referrer']     = $_SERVER['HTTP_REFERER'];
		$activity_data['user_agent']   = bp_core_current_user_ua();
		$activity_data['user_ip']      = bp_core_current_user_ip();

		if ( Akismet::is_test_mode() )
			$activity_data['is_test'] = 'true';

		// Loop through _POST args and rekey strings.
		foreach ( $_POST as $key => $value )
			if ( is_string( $value ) && 'cookie' != $key )
				$activity_data['POST_' . $key] = $value;

		// Keys to ignore.
		$ignore = array( 'HTTP_COOKIE', 'HTTP_COOKIE2', 'PHP_AUTH_PW' );

		// Loop through _SERVER args and remove specified keys.
		foreach ( $_SERVER as $key => $value ) {

			// Key should not be ignored.
			if ( !in_array( $key, $ignore ) && is_string( $value ) ) {
				$activity_data[$key] = $value;

			// Key should be ignored.
			} else {
				$activity_data[$key] = '';
			}
		}

		foreach ( $activity_data as $key => $data )
			$query_string .= $key . '=' . urlencode( stripslashes( $data ) ) . '&';

		if ( 'check' == $check )
			$path = 'comment-check';
		elseif ( 'submit' == $check )
			$path = 'submit-' . $spam;

		// Send to Akismet.
		add_filter( 'akismet_ua', array( $this, 'buddypress_ua' ) );
		$response = Akismet::http_post( $query_string, $path );
		remove_filter( 'akismet_ua', array( $this, 'buddypress_ua' ) );

		// Save response data.
		$activity_data['bp_as_result'] = $response[1];
		if ( isset( $response[0]['x-akismet-pro-tip'] ) ) {
			$activity_data['akismet_pro_tip'] = $response[0]['x-akismet-pro-tip'];
		}

		// Perform a daily tidy up.
		if ( ! wp_next_scheduled( 'bp_activity_akismet_delete_old_metadata' ) )
			wp_schedule_event( time(), 'daily', 'bp_activity_akismet_delete_old_metadata' );

		return $activity_data;
	}


Top ↑

Changelog Changelog

Changelog
Version Description
1.6.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

You must log in before being able to contribute a note or feedback.