BP_REST_Media_Endpoint::bbp_media_update_rest_field_callback( object $object, object $value )
The function to use to update the medias’s value of the topic REST Field.
Description
Parameters
- $object
-
(Required) Value for the schema.
- $value
-
(Required) The value of the REST Field to save.
Return
(object)
Source
File: bp-media/classes/class-bp-rest-media-endpoint.php
protected function bbp_media_update_rest_field_callback( $object, $value ) {
$medias = wp_parse_id_list( $object );
if ( empty( $medias ) ) {
$value->bbp_media = null;
return $value;
}
$p_id = $value->ID;
// save activity id if it is saved in forums and enabled in platform settings.
$main_activity_id = get_post_meta( $p_id, '_bbp_activity_id', true );
// Get current forum ID.
if ( 'reply' === $value->post_type ) {
$forum_id = bbp_get_reply_forum_id( $p_id );
} else {
$forum_id = bbp_get_topic_forum_id( $p_id );
}
$group_ids = bbp_get_forum_group_ids( $forum_id );
$group_id = ( ! empty( $group_ids ) ? current( $group_ids ) : 0 );
// fetch currently uploaded media ids.
$existing_media = array();
$existing_media_ids = get_post_meta( $p_id, 'bp_media_ids', true );
$existing_media_attachment_ids = array();
if ( ! empty( $existing_media_ids ) ) {
$existing_media_ids = explode( ',', $existing_media_ids );
foreach ( $existing_media_ids as $existing_media_id ) {
$existing_media[ $existing_media_id ] = new BP_Media( $existing_media_id );
if ( ! empty( $existing_media[ $existing_media_id ]->attachment_id ) ) {
$existing_media_attachment_ids[] = $existing_media[ $existing_media_id ]->attachment_id;
}
}
}
$args = array(
'upload_ids' => $medias,
'privacy' => 'public',
'activity_id' => $main_activity_id,
);
if ( ! empty( $group_id ) ) {
$args['group_id'] = $group_id;
$args['privacy'] = 'grouponly';
}
$medias_ids = $this->bp_rest_create_media( $args );
if ( is_wp_error( $medias_ids ) ) {
return;
}
$medias_ids = implode( ',', $medias_ids );
// Save all attachment ids in forums post meta.
update_post_meta( $p_id, 'bp_media_ids', $medias_ids );
// delete medias which were not saved or removed from form.
if ( ! empty( $existing_media_ids ) ) {
foreach ( $existing_media_ids as $media_id ) {
bp_media_delete( array( 'id' => $media_id ) );
}
}
}
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.