bp_nouveau_activity_privacy()
Output the privacy option inside an Activity Loop.
Description
Source
File: bp-templates/bp-nouveau/includes/activity/template-tags.php
function bp_nouveau_activity_privacy() {
if ( bp_activity_user_can_edit() && ! bp_is_group() ) {
if ( bp_is_active( 'groups' ) && buddypress()->groups->id === bp_get_activity_object_name() ) {
return;
}
$privacy = bp_get_activity_privacy();
$media_activity = ( 'media' === $privacy || ( isset( $_REQUEST['action'] ) && 'media_get_activity' === $_REQUEST['action'] ) );
$document_activity = ( 'document' === $privacy || ( isset( $_REQUEST['action'] ) && 'document_get_activity' === $_REQUEST['action'] ) );
$parent_activity_id = false;
$parent_activity_permalink = false;
$group_id = false;
$album_id = false;
$album_url = '';
$folder_id = false;
$folder_url = '';
// Get media privacy to show.
if ( bp_is_active( 'media' ) ) {
if ( $media_activity ) {
$media_id = BP_Media::get_activity_media_id( bp_get_activity_id() );
$media = new BP_Media( $media_id );
if ( ! empty( $media ) ) {
$privacy = $media->privacy;
$group_id = $media->group_id;
$album_id = $media->album_id;
if ( ! empty( $album_id ) ) {
$album = new BP_Media_Album( $album_id );
$privacy = $album->privacy;
$album_url = trailingslashit( bp_core_get_user_domain( $album->user_id ) . bp_get_media_slug() . '/albums/' . $album_id );
} else {
$parent_activity_id = get_post_meta( $media->attachment_id, 'bp_media_parent_activity_id', true );
$parent_activity_permalink = bp_activity_get_permalink( $parent_activity_id );
}
}
}
if ( $document_activity ) {
$document_id = BP_Document::get_activity_document_id( bp_get_activity_id() );
$document = new BP_Document( $document_id );
if ( ! empty( $document ) ) {
$privacy = $document->privacy;
$group_id = $document->group_id;
$folder_id = $document->folder_id;
if ( ! empty( $folder_id ) ) {
$folder_id = bp_document_get_root_parent_id( $folder_id );
$folder = new BP_Document_Folder( $folder_id );
$privacy = $folder->privacy;
$folder_url = trailingslashit( bp_core_get_user_domain( $folder->user_id ) . bp_get_document_slug() . '/folders/' . $folder_id );
} else {
$parent_activity_id = get_post_meta( $document->attachment_id, 'bp_document_parent_activity_id', true );
$parent_activity_permalink = bp_activity_get_permalink( $parent_activity_id );
}
}
}
$activity_album_id = bp_activity_get_meta( bp_get_activity_id(), 'bp_media_album_activity', true );
if ( ! empty( $activity_album_id ) ) {
$album_id = $activity_album_id;
$album = new BP_Media_Album( $album_id );
$privacy = $album->privacy;
$album_url = trailingslashit( bp_core_get_user_domain( $album->user_id ) . bp_get_media_slug() . '/albums/' . $album_id );
$media_activity = true;
} else {
$media_ids = bp_activity_get_meta( bp_get_activity_id(), 'bp_media_ids', true );
if ( ! empty( $media_ids ) ) {
$media_ids = explode( ',', $media_ids );
$media_id = ! empty( $media_ids ) ? $media_ids[0] : false;
$media = new BP_Media( $media_id );
if ( ! empty( $media->album_id ) ) {
$album_id = $media->album_id;
$album = new BP_Media_Album( $album_id );
$privacy = $album->privacy;
$album_url = trailingslashit( bp_core_get_user_domain( $album->user_id ) . bp_get_media_slug() . '/albums/' . $album_id );
$media_activity = true;
bp_activity_update_meta( bp_get_activity_id(), 'bp_media_album_activity', $album_id );
}
}
}
$activity_folder_id = bp_activity_get_meta( bp_get_activity_id(), 'bp_document_folder_activity', true );
if ( ! empty( $activity_folder_id ) ) {
$folder_id = $activity_folder_id;
$folder_id = bp_document_get_root_parent_id( $folder_id );
$folder = new BP_Document_Folder( $folder_id );
$privacy = $folder->privacy;
$folder_url = trailingslashit( bp_core_get_user_domain( $folder->user_id ) . bp_get_document_slug() . '/folders/' . $folder_id );
$document_activity = true;
} else {
$document_ids = bp_activity_get_meta( bp_get_activity_id(), 'bp_document_ids', true );
if ( ! empty( $document_ids ) ) {
$document_ids = explode( ',', $document_ids );
$document_id = ! empty( $document_ids ) ? $document_ids[0] : false;
$document = new BP_Document( $document_id );
if ( ! empty( $document->folder_id ) ) {
$folder_id = $document->folder_id;
$folder_id = bp_document_get_root_parent_id( $folder_id );
$folder = new BP_Document_Folder( $folder_id );
$privacy = $folder->privacy;
$folder_url = trailingslashit( bp_core_get_user_domain( $folder->user_id ) . bp_get_document_slug() . '/folders/' . $folder_id );
$document_activity = true;
bp_activity_update_meta( bp_get_activity_id(), 'bp_document_folder_activity', $folder_id );
}
}
}
}
if ( $media_activity && empty( $group_id ) && $parent_activity_id ) {
$parent_activity = new BP_Activity_Activity( $parent_activity_id );
if ( ! empty( $parent_activity->id ) ) {
$group_id = $parent_activity->item_id;
}
}
if ( $document_activity && empty( $group_id ) && $parent_activity_id ) {
$parent_activity = new BP_Activity_Activity( $parent_activity_id );
if ( ! empty( $parent_activity->id ) ) {
$group_id = $parent_activity->item_id;
}
}
if ( ! empty( $group_id ) ) {
return;
}
$privacy_items = bp_activity_get_visibility_levels();
if ( $media_activity && ( ( $parent_activity_id && $parent_activity_permalink ) || ( $album_id && ! empty( $album_url ) ) ) ) {
?>
<div class="bb-media-privacy-wrap">
<span class="bp-tooltip privacy-wrap" data-bp-tooltip-pos="up" data-bp-tooltip="<?php echo ! empty( $privacy_items[ $privacy ] ) ? $privacy_items[ $privacy ] : $privacy; ?>"><span class="privacy selected <?php echo $privacy; ?>"></span></span>
<ul class="activity-privacy">
<?php if ( $album_id && ! empty( $album_url ) ) : ?>
<li class="bb-edit-privacy" data-value="<?php echo $album_url; ?>" >
<a href="<?php echo $album_url; ?>" data-value="<?php echo $album_url; ?>"><?php _e( 'Edit Album Privacy', 'buddyboss' ); ?></a></li>
<?php elseif ( $parent_activity_id && $parent_activity_permalink ) : ?>
<li class="bb-edit-privacy" data-value="<?php echo $parent_activity_permalink; ?>" >
<a href="<?php echo $parent_activity_permalink; ?>" data-value="<?php echo $parent_activity_permalink; ?>"><?php _e( 'Edit Post Privacy', 'buddyboss' ); ?></a>
</li>
<?php endif; ?>
</ul>
</div><?php
} elseif ( $document_activity && ( ( $parent_activity_id && $parent_activity_permalink ) || ( $folder_id && ! empty( $folder_url ) ) ) ) {
?>
<div class="bb-media-privacy-wrap">
<span class="bp-tooltip privacy-wrap" data-bp-tooltip-pos="up" data-bp-tooltip="<?php echo ! empty( $privacy_items[ $privacy ] ) ? $privacy_items[ $privacy ] : $privacy; ?>"><span class="privacy selected <?php echo $privacy; ?>"></span></span>
<ul class="activity-privacy">
<?php if ( $folder_id && ! empty( $folder_url ) ) :
$folder_url = $folder_url . '#openEditFolder';
?>
<li data-value="<?php echo $folder_url; ?>" class="bb-edit-privacy <?php echo $privacy; ?>">
<a data-value="<?php echo $folder_url; ?>" href="<?php echo $folder_url; ?>"><?php _e( 'Edit Folder Privacy', 'buddyboss' ); ?></a></li>
<?php elseif ( $parent_activity_id && $parent_activity_permalink ) : ?>
<li data-value="<?php echo $parent_activity_permalink; ?>" class="bb-edit-privacy <?php echo $privacy; ?>">
<a data-value="<?php echo $parent_activity_permalink; ?>" href="<?php echo $parent_activity_permalink; ?>"><?php _e( 'Edit Post Privacy', 'buddyboss' ); ?></a>
</li>
<?php endif; ?>
</ul>
</div><?php
} else {
?>
<div class="bb-media-privacy-wrap">
<span class="bp-tooltip privacy-wrap" data-bp-tooltip-pos="up" data-bp-tooltip="<?php echo ! empty( $privacy_items[ $privacy ] ) ? $privacy_items[ $privacy ] : $privacy; ?>"><span class="privacy selected <?php echo $privacy; ?>"></span></span>
<?php
$class = 'activity-privacy';
if ( $media_activity ) {
$class = 'media-privacy';
} elseif ( $document_activity ) {
$class = 'document-privacy';
}
?>
<ul class="<?php echo esc_attr( $class ); ?>">
<?php foreach ( $privacy_items as $item_key => $privacy_item ) {
?>
<li data-value="<?php echo $item_key; ?>" class="<?php echo $item_key; ?> <?php echo $item_key === $privacy ? 'selected' : ''; ?>"><?php echo $privacy_item; ?></li><?php
} ?>
</ul>
</div><?php
}
}
}
Changelog
| Version | Description |
|---|---|
| BuddyBoss 1.2.3 | 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.