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
Props to WordPress core Akismet plugin for a lot of this.
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'
Return
(array) $activity_data Activity data, with Akismet data added.
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 whitelisted 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; }
Changelog
Version | Description |
---|---|
BuddyPress 1.6.0 | 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.