Esempio n. 1
0
/**
 * 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);
}