BP_Akismet::check_activity( BP_Activity_Activity $activity )
Check if the activity item is spam or ham.
Description
See also
Parameters
- $activity
-
(Required) The activity item to check.
Source
File: bp-activity/classes/class-bp-akismet.php
public function check_activity( $activity ) {
// By default, only handle activity updates and activity comments.
if ( !in_array( $activity->type, BP_Akismet::get_activity_types() ) )
return;
// Make sure last_activity is clear to avoid any confusion.
$this->last_activity = null;
// Build data package for Akismet.
$activity_data = BP_Akismet::build_akismet_data_package( $activity );
// Check with Akismet to see if this is spam.
$activity_data = $this->send_akismet_request( $activity_data, 'check', 'spam' );
// Record this item.
$this->last_activity = $activity;
// Store a copy of the data that was submitted to Akismet.
$this->last_activity->akismet_submission = $activity_data;
// Spam.
if ( 'true' == $activity_data['bp_as_result'] ) {
/**
* Fires after an activity item has been proven to be spam, but before officially being marked as spam.
*
* @since BuddyPress 1.6.0
*
* @param BP_Activity_Activity $activity The activity item proven to be spam.
* @param array $activity_data Array of activity data for item including
* Akismet check results data.
*/
do_action_ref_array( 'bp_activity_akismet_spam_caught', array( &$activity, $activity_data ) );
// Mark as spam.
bp_activity_mark_as_spam( $activity, 'by_akismet' );
if (
Akismet::allow_discard() &&
! empty( $activity_data['akismet_pro_tip'] ) &&
'discard' === $activity_data['akismet_pro_tip']
) {
// If this is so spammy it's not worth your time, let's just delete it.
if ( $activity->type === 'activity_comment' ) {
bp_activity_delete_comment( $activity->item_id, $activity->id );
} else {
bp_activity_delete( array( 'id' => $activity->id ) );
}
}
}
// Update activity meta after a spam check.
add_action( 'bp_activity_after_save', array( $this, 'update_activity_akismet_meta' ), 1, 1 );
}
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.