BP_REST_Document_Endpoint::bp_rest_create_document( array $args )
Create the Document IDs from Upload IDs.
Description
Parameters
- $args
-
(Required) Key value array of query var to query value.
Return
(array|WP_Error)
Source
File: bp-document/classes/class-bp-rest-document-endpoint.php
public function bp_rest_create_document( $args ) {
$document_privacy = ( ! empty( $args['privacy'] ) ? $args['privacy'] : 'public' );
$document_upload_ids = ( ! empty( $args['document_ids'] ) ? $args['document_ids'] : '' );
$activity_id = ( ! empty( $args['activity_id'] ) ? $args['activity_id'] : false );
$content = ( ! empty( $args['content'] ) ? $args['content'] : false );
$user_id = ( ! empty( $args['user_id'] ) ? $args['user_id'] : get_current_user_id() );
$id = ( ! empty( $args['id'] ) ? $args['id'] : '' );
$group_id = ( ! empty( $args['group_id'] ) ? $args['group_id'] : false );
$folder_id = ( ! empty( $args['folder_id'] ) ? $args['folder_id'] : false );
// Override the privacy if Folder ID is given.
if ( ! empty( $folder_id ) ) {
$folders = bp_folder_get_specific( array( 'folder_ids' => array( $folder_id ) ) );
if ( ! empty( $folders['folders'] ) ) {
$folder = array_pop( $folders['folders'] );
$document_privacy = $folder->privacy;
}
}
// Update Document.
if ( ! empty( $id ) ) {
$wp_attachment_id = $args['attachment_id'];
$wp_attachment_url = wp_get_attachment_url( $wp_attachment_id );
// when the file found to be empty it's means it's not a valid attachment.
if ( empty( $wp_attachment_url ) ) {
return;
}
$document_activity_id = $activity_id;
// extract the nice title name.
$title = get_the_title( $wp_attachment_id );
$document_id = bp_document_add(
array(
'id' => $id,
'attachment_id' => $wp_attachment_id,
'title' => $title,
'activity_id' => $document_activity_id,
'folder_id' => ( ! empty( $args['folder_id'] ) ? $args['folder_id'] : false ),
'group_id' => ( ! empty( $args['group_id'] ) ? $args['group_id'] : false ),
'privacy' => $document_privacy,
'user_id' => $user_id,
'error_type' => 'wp_error',
)
);
if ( is_int( $document_id ) ) {
// save document is saved in attachment.
update_post_meta( $wp_attachment_id, 'bp_document_saved', true );
// save document meta for activity.
if ( ! empty( $document_activity_id ) ) {
update_post_meta( $wp_attachment_id, 'bp_document_activity_id', $document_activity_id );
}
$created_document_ids[] = $document_id;
}
}
// created Documents.
if ( ! empty( $document_upload_ids ) ) {
$valid_upload_ids = array();
foreach ( $document_upload_ids as $wp_attachment_id ) {
$wp_attachment_url = wp_get_attachment_url( $wp_attachment_id );
// when the file found to be empty it's means it's not a valid attachment.
if ( empty( $wp_attachment_url ) ) {
continue;
}
$valid_upload_ids[] = $wp_attachment_id;
}
$documents = array();
if ( ! empty( $valid_upload_ids ) ) {
foreach ( $valid_upload_ids as $wp_attachment_id ) {
// extract the nice title name.
$title = get_the_title( $wp_attachment_id );
$documents[] = array(
'id' => $wp_attachment_id,
'name' => $title,
);
}
}
if ( ! empty( $documents ) ) {
$created_document_ids = bp_document_add_handler( $documents, $document_privacy, $content, $group_id, $folder_id );
}
}
if ( empty( $created_document_ids ) ) {
return new WP_Error(
'bp_rest_document_creation_error',
__( 'Error creating document, please try again.', 'buddyboss' ),
array(
'status' => 400,
)
);
}
// Link all uploaded document to main activity.
if ( ! empty( $activity_id ) && empty( $id ) ) {
$created_document_ids_joined = implode( ',', $created_document_ids );
bp_activity_update_meta( $activity_id, 'bp_document_ids', $created_document_ids_joined );
$main_activity = new BP_Activity_Activity( $activity_id );
if ( ! empty( $main_activity ) && empty( $group_id ) ) {
$main_activity->privacy = $document_privacy;
$main_activity->save();
}
}
return $created_document_ids;
}
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.