/** * Mark an activity item as ham. * * @since BuddyPress (1.6.0) * * @param BP_Activity_Activity $activity The activity item to be hammed. * @param string $source Optional. Default is "by_a_person" (ie, a person has * manually marked the activity as spam). BP core also accepts * 'by_akismet'. */ function bp_activity_mark_as_ham(&$activity, $source = 'by_a_person') { $bp = buddypress(); $activity->is_spam = 0; // Clear the activity stream first page cache wp_cache_delete('bp_activity_sitewide_front', 'bp'); // Clear the activity comment cache for this activity item wp_cache_delete($activity->id, 'bp_activity_comments'); // If Akismet is active, and this was a manual spam/ham request, stop Akismet checking the activity if ('by_a_person' == $source && !empty($bp->activity->akismet)) { remove_action('bp_activity_before_save', array($bp->activity->akismet, 'check_activity'), 4, 1); // Build data package for Akismet $activity_data = BP_Akismet::build_akismet_data_package($activity); // Tell Akismet this is spam $activity_data = $bp->activity->akismet->send_akismet_request($activity_data, 'submit', 'ham'); // Update meta add_action('bp_activity_after_save', array($bp->activity->akismet, 'update_activity_ham_meta'), 1, 1); } do_action('bp_activity_mark_as_ham', $activity, $source); }
/** * Check if the activity item is spam or ham. * * @since 1.6.0 * * @see http://akismet.com/development/api/ * @todo Spam counter? * @todo Auto-delete old spam? * * @param BP_Activity_Activity $activity The activity item to check. */ 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 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'); } // Update activity meta after a spam check. add_action('bp_activity_after_save', array($this, 'update_activity_akismet_meta'), 1, 1); }
/** * Check if the activity item is spam or ham * * @param BP_Activity_Activity $activity The activity item to check * @see http://akismet.com/development/api/ * @since BuddyPress (1.6) * @todo Spam counter? * @todo Auto-delete old spam? */ 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']) { // Action for plugin authors do_action_ref_array('bp_activity_akismet_spam_caught', array(&$activity, $activity_data)); // Mark as spam bp_activity_mark_as_spam($activity, 'by_akismet'); } // Update activity meta after a spam check add_action('bp_activity_after_save', array($this, 'update_activity_akismet_meta'), 1, 1); }
/** * Mark an activity item as ham. * * @since 1.6.0 * * @param BP_Activity_Activity $activity The activity item to be hammed. Passed by reference. * @param string $source Optional. Default is "by_a_person" (ie, a person has * manually marked the activity as spam). BP core also accepts * 'by_akismet'. */ function bp_activity_mark_as_ham(&$activity, $source = 'by_a_person') { $bp = buddypress(); $activity->is_spam = 0; // Clear the activity stream first page cache. wp_cache_delete('bp_activity_sitewide_front', 'bp'); // Clear the activity comment cache for this activity item. wp_cache_delete($activity->id, 'bp_activity_comments'); // If Akismet is active, and this was a manual spam/ham request, stop Akismet checking the activity. if ('by_a_person' == $source && !empty($bp->activity->akismet)) { remove_action('bp_activity_before_save', array($bp->activity->akismet, 'check_activity'), 4, 1); // Build data package for Akismet. $activity_data = BP_Akismet::build_akismet_data_package($activity); // Tell Akismet this is spam. $activity_data = $bp->activity->akismet->send_akismet_request($activity_data, 'submit', 'ham'); // Update meta. add_action('bp_activity_after_save', array($bp->activity->akismet, 'update_activity_ham_meta'), 1, 1); } /** * Fires at the end of the process to mark an activity item as ham. * * @since 1.6.0 * * @param BP_Activity_Activity $activity Activity item being marked as ham. * @param string $source Source of determination of ham status. For example * "by_a_person" or "by_akismet". */ do_action('bp_activity_mark_as_ham', $activity, $source); }