BP_Activity_Activity::save()
Save the activity item to the database.
Description
Return
(WP_Error|bool) True on success.
Source
File: bp-activity/classes/class-bp-activity-activity.php
public function save() {
global $wpdb;
$bp = buddypress();
$this->id = apply_filters_ref_array( 'bp_activity_id_before_save', array( $this->id, &$this ) );
$this->item_id = apply_filters_ref_array( 'bp_activity_item_id_before_save', array( $this->item_id, &$this ) );
$this->secondary_item_id = apply_filters_ref_array( 'bp_activity_secondary_item_id_before_save', array( $this->secondary_item_id, &$this ) );
$this->user_id = apply_filters_ref_array( 'bp_activity_user_id_before_save', array( $this->user_id, &$this ) );
$this->primary_link = apply_filters_ref_array( 'bp_activity_primary_link_before_save', array( $this->primary_link, &$this ) );
$this->component = apply_filters_ref_array( 'bp_activity_component_before_save', array( $this->component, &$this ) );
$this->type = apply_filters_ref_array( 'bp_activity_type_before_save', array( $this->type, &$this ) );
$this->action = apply_filters_ref_array( 'bp_activity_action_before_save', array( $this->action, &$this ) );
$this->content = apply_filters_ref_array( 'bp_activity_content_before_save', array( $this->content, &$this ) );
$this->date_recorded = apply_filters_ref_array( 'bp_activity_date_recorded_before_save', array( $this->date_recorded, &$this ) );
$this->hide_sitewide = apply_filters_ref_array( 'bp_activity_hide_sitewide_before_save', array( $this->hide_sitewide, &$this ) );
$this->mptt_left = apply_filters_ref_array( 'bp_activity_mptt_left_before_save', array( $this->mptt_left, &$this ) );
$this->mptt_right = apply_filters_ref_array( 'bp_activity_mptt_right_before_save', array( $this->mptt_right, &$this ) );
$this->is_spam = apply_filters_ref_array( 'bp_activity_is_spam_before_save', array( $this->is_spam, &$this ) );
$this->privacy = apply_filters_ref_array( 'bp_activity_privacy_before_save', array( $this->privacy, &$this ) );
/**
* Fires before the current activity item gets saved.
*
* Please use this hook to filter the properties above. Each part will be passed in.
*
* @since BuddyPress 1.0.0
*
* @param BP_Activity_Activity $this Current instance of the activity item being saved. Passed by reference.
*/
do_action_ref_array( 'bp_activity_before_save', array( &$this ) );
if ( 'wp_error' === $this->error_type && $this->errors->get_error_code() ) {
return $this->errors;
}
if ( empty( $this->component ) || empty( $this->type ) ) {
if ( 'bool' === $this->error_type ) {
return false;
} else {
if ( empty( $this->component ) ) {
$this->errors->add( 'bp_activity_missing_component' );
} else {
$this->errors->add( 'bp_activity_missing_type' );
}
return $this->errors;
}
}
if ( empty( $this->primary_link ) ) {
$this->primary_link = bp_loggedin_user_domain();
}
// If we have an existing ID, update the activity item, otherwise insert it.
if ( ! empty( $this->id ) ) {
$q = $wpdb->prepare( "UPDATE {$bp->activity->table_name} SET user_id = %d, component = %s, type = %s, action = %s, content = %s, primary_link = %s, date_recorded = %s, item_id = %d, secondary_item_id = %d, hide_sitewide = %d, is_spam = %d, privacy = %s WHERE id = %d", $this->user_id, $this->component, $this->type, $this->action, $this->content, $this->primary_link, $this->date_recorded, $this->item_id, $this->secondary_item_id, $this->hide_sitewide, $this->is_spam, $this->privacy, $this->id );
} else {
$q = $wpdb->prepare( "INSERT INTO {$bp->activity->table_name} ( user_id, component, type, action, content, primary_link, date_recorded, item_id, secondary_item_id, hide_sitewide, is_spam, privacy ) VALUES ( %d, %s, %s, %s, %s, %s, %s, %d, %d, %d, %d, %s )", $this->user_id, $this->component, $this->type, $this->action, $this->content, $this->primary_link, $this->date_recorded, $this->item_id, $this->secondary_item_id, $this->hide_sitewide, $this->is_spam, $this->privacy );
}
if ( false === $wpdb->query( $q ) ) {
return false;
}
// If this is a new activity item, set the $id property.
if ( empty( $this->id ) ) {
$this->id = $wpdb->insert_id;
// If an existing activity item, prevent any changes to the content generating new @mention notifications.
} else {
add_filter( 'bp_activity_at_name_do_notifications', '__return_false' );
}
/**
* Fires after an activity item has been saved to the database.
*
* @since BuddyPress 1.0.0
*
* @param BP_Activity_Activity $this Current instance of activity item being saved. Passed by reference.
*/
do_action_ref_array( 'bp_activity_after_save', array( &$this ) );
return true;
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 1.0.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.