BP_REST_Activity_Endpoint::prepare_item_for_database( WP_REST_Request $request )
Prepare an activity for create or update.
Description
Parameters
- $request
-
(Required) Request object.
Return
(stdClass|WP_Error) Object or WP_Error.
Source
File: bp-activity/classes/class-bp-rest-activity-endpoint.php
protected function prepare_item_for_database( $request ) {
$prepared_activity = new stdClass();
$schema = $this->get_item_schema();
$activity = $this->get_activity_object( $request );
if ( ! empty( $schema['properties']['id'] ) && ! empty( $activity->id ) ) {
$prepared_activity = $activity;
$prepared_activity->id = $activity->id;
if ( 'activity_comment' !== $request['type'] ) {
$prepared_activity->error_type = 'wp_error';
}
}
// Activity author ID.
if ( ! empty( $schema['properties']['user_id'] ) && isset( $request['user_id'] ) ) {
$prepared_activity->user_id = (int) $request['user_id'];
} else {
$prepared_activity->user_id = get_current_user_id();
}
// Activity component.
if ( ! empty( $schema['properties']['component'] ) && isset( $request['component'] ) ) {
$prepared_activity->component = $request['component'];
} else {
$prepared_activity->component = buddypress()->activity->id;
}
// Activity Item ID.
if ( ! empty( $schema['properties']['primary_item_id'] ) && isset( $request['primary_item_id'] ) ) {
$item_id = (int) $request['primary_item_id'];
// Set the group ID of the activity.
if ( bp_is_active( 'groups' ) && isset( $prepared_activity->component ) && buddypress()->groups->id === $prepared_activity->component ) {
$prepared_activity->group_id = $item_id;
$status = bp_get_group_status( groups_get_group( $item_id ) );
// Use a generic item ID for other components.
} else {
$prepared_activity->item_id = $item_id;
}
}
// Secondary Item ID.
if ( ! empty( $schema['properties']['secondary_item_id'] ) && isset( $request['secondary_item_id'] ) ) {
$prepared_activity->secondary_item_id = (int) $request['secondary_item_id'];
}
// Activity type.
if ( ! empty( $schema['properties']['type'] ) && isset( $request['type'] ) ) {
$prepared_activity->type = $request['type'];
}
// Activity content.
if ( ! empty( $schema['properties']['content'] ) && isset( $request['content'] ) ) {
if ( is_string( $request['content'] ) ) {
$prepared_activity->content = $request['content'];
} elseif ( isset( $request['content']['raw'] ) ) {
$prepared_activity->content = $request['content']['raw'];
}
}
// Activity Sitewide visibility.
if ( ! empty( $schema['properties']['hidden'] ) && isset( $request['hidden'] ) ) {
$prepared_activity->hide_sitewide = (bool) $request['hidden'];
}
// Activity Privacy.
if ( ! empty( $schema['properties']['privacy'] ) && isset( $request['privacy'] ) ) {
$prepared_activity->privacy = $request['privacy'];
} else {
if ( ! empty( $activity->privacy ) ) {
$prepared_activity->privacy = $activity->privacy;
} else {
$prepared_activity->privacy = 'public';
}
}
if ( ! empty( $status ) && in_array( $status, array( 'hidden', 'private' ), true ) ) {
$prepared_activity->hide_sitewide = true;
}
// Ignore privacy passed when posting into group.
if ( ! empty( $status ) ) {
$prepared_activity->privacy = 'public';
}
/**
* Filters an activity before it is inserted or updated via the REST API.
*
* @param stdClass $prepared_activity An object prepared for inserting or updating the database.
* @param WP_REST_Request $request Request object.
*
* @since 0.1.0
*/
return apply_filters( 'bp_rest_activity_pre_insert_value', $prepared_activity, $request );
}
Changelog
| Version | Description |
|---|---|
| 0.1.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.