bp_document_update_privacy( int $document_id, string $privacy = '', string $type = 'folder' )
Update document privacy with nested level.
Description
Parameters
- $document_id
-
(Required) Document/Folder ID.
- $privacy
-
(Optional) Privacy term to update.
Default value: ''
- $type
-
(Optional) Current type for the document.
Default value: 'folder'
Return
(bool)
Source
File: bp-document/bp-document-functions.php
function bp_document_update_privacy( $document_id = 0, $privacy = '', $type = 'folder' ) {
global $wpdb, $bp;
if ( '' === $document_id || '' === $privacy ) {
return false;
}
if ( ! is_user_logged_in() ) {
return false;
}
if ( 'folder' === $type ) {
if ( (int) $document_id > 0 ) {
$has_access = bp_folder_user_can_edit( $document_id );
if ( ! $has_access ) {
return false;
}
}
$q = $wpdb->prepare( "UPDATE {$bp->document->table_name_folder} SET privacy = %s, date_modified = %s WHERE id = %d", $privacy, bp_core_current_time(), $document_id ); // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare
$wpdb->query( $q );
// Get main folder's child folders.
$get_children = bp_document_get_folder_children( $document_id );
if ( ! empty( $get_children ) ) {
foreach ( $get_children as $child ) {
$query_child_privacy = $wpdb->prepare( "UPDATE {$bp->document->table_name_folder} SET privacy = %s WHERE id = %d", $privacy, $child ); // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare
$wpdb->query( $query_child_privacy );
// Get current folder's documents.
$child_document_ids = bp_document_get_folder_document_ids( $child );
if ( ! empty( $child_document_ids ) ) {
foreach ( $child_document_ids as $child_document_id ) {
$child_document_query = $wpdb->prepare( "UPDATE {$bp->document->table_name} SET privacy = %s WHERE id = %d", $privacy, $child_document_id );
$wpdb->query( $child_document_query );
$document = new BP_Document( $child_document_id );
if ( ! empty( $document ) && ! empty( $document->attachment_id ) ) {
$post_attachment = $document->attachment_id;
$activity_id = get_post_meta( $post_attachment, 'bp_document_parent_activity_id', true );
if ( ! empty( $activity_id ) && bp_is_active( 'activity' ) ) {
$activity = new BP_Activity_Activity( (int) $activity_id );
if ( bp_activity_user_can_delete( $activity ) ) {
$activity->privacy = $privacy;
$activity->save();
}
}
}
}
}
}
}
// Get main folder's documents.
$get_document_ids = bp_document_get_folder_document_ids( $document_id );
if ( ! empty( $get_document_ids ) ) {
foreach ( $get_document_ids as $document_id ) {
$document_query = $wpdb->prepare( "UPDATE {$bp->document->table_name} SET privacy = %s WHERE id = %d", $privacy, $document_id );
$wpdb->query( $document_query );
$document = new BP_Document( $document_id );
if ( ! empty( $document ) && ! empty( $document->attachment_id ) ) {
$post_attachment = $document->attachment_id;
$activity_id = get_post_meta( $post_attachment, 'bp_document_parent_activity_id', true );
if ( ! empty( $activity_id ) && bp_is_active( 'activity' ) ) {
$activity = new BP_Activity_Activity( (int) $activity_id );
if ( bp_activity_user_can_delete( $activity ) ) {
$activity->privacy = $privacy;
$activity->save();
}
}
}
}
}
} else {
if ( (int) $document_id > 0 ) {
$has_access = bp_document_user_can_edit( $document_id );
if ( ! $has_access ) {
return false;
}
}
$document_query = $wpdb->prepare( "UPDATE {$bp->document->table_name} SET privacy = %s, date_modified = %s WHERE id = %d", $privacy, bp_core_current_time(), $document_id );
$wpdb->query( $document_query );
$document = new BP_Document( $document_id );
if ( ! empty( $document ) && ! empty( $document->attachment_id ) ) {
$post_attachment = $document->attachment_id;
$activity_id = get_post_meta( $post_attachment, 'bp_document_parent_activity_id', true );
if ( bp_is_active( 'activity' ) && ! empty( $activity_id ) ) {
$activity = new BP_Activity_Activity( (int) $activity_id );
if ( bp_activity_user_can_delete( $activity ) ) {
$activity->privacy = $privacy;
$activity->save();
}
}
}
}
}
Changelog
| Version | Description |
|---|---|
| BuddyBoss 1.4.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.