bp_nouveau_get_activity_comment_buttons( array $args )
Get the action buttons for the activity comments
Description
Parameters
- $args
-
(Optional) See bp_nouveau_wrapper() for the description of parameters.
Return
(array)
Source
File: bp-templates/bp-nouveau/includes/activity/template-tags.php
function bp_nouveau_get_activity_comment_buttons($args) {
$buttons = array();
if ( ! isset( $GLOBALS['activities_template'] ) ) {
return $buttons;
}
$activity_comment_id = bp_get_activity_comment_id();
$activity_id = bp_get_activity_id();
if ( ! $activity_comment_id || ! $activity_id ) {
return $buttons;
}
/*
* If the 'container' is set to 'ul'
* set a var $parent_element to li
* otherwise simply pass any value found in args
* or set var false.
*/
if ( 'ul' === $args['container'] ) {
$parent_element = 'li';
} elseif ( ! empty( $args['parent_element'] ) ) {
$parent_element = $args['parent_element'];
} else {
$parent_element = false;
}
$parent_attr = ( ! empty( $args['parent_attr'] ) ) ? $args['parent_attr'] : array();
/*
* If we have an arg value for $button_element passed through
* use it to default all the $buttons['button_element'] values
* otherwise default to 'a' (anchor).
*/
if ( ! empty( $args['button_element'] ) ) {
$button_element = $args['button_element'] ;
} else {
$button_element = 'a';
}
$buttons = array(
'activity_comment_reply' => array(
'id' => 'activity_comment_reply',
'position' => 5,
'component' => 'activity',
'must_be_logged_in' => true,
'parent_element' => $parent_element,
'parent_attr' => $parent_attr,
'button_element' => $button_element,
'link_text' => __( 'Reply', 'buddyboss' ),
'button_attr' => array(
'class' => "acomment-reply bp-primary-action",
'id' => sprintf( 'acomment-reply-%1$s-from-%2$s', $activity_id, $activity_comment_id ),
),
),
'activity_comment_delete' => array(
'id' => 'activity_comment_delete',
'position' => 15,
'component' => 'activity',
'must_be_logged_in' => true,
'parent_element' => $parent_element,
'parent_attr' => $parent_attr,
'button_element' => $button_element,
'link_text' => __( 'Delete', 'buddyboss' ),
'button_attr' => array(
'class' => 'delete acomment-delete confirm bp-secondary-action',
'rel' => 'nofollow',
),
),
);
// If button element set add nonce link to data-attr attr
if ( 'button' === $button_element ) {
$buttons['activity_comment_reply']['button_attr']['data-bp-act-reply-nonce'] = sprintf( '#acomment-%s', $activity_comment_id );
$buttons['activity_comment_delete']['button_attr']['data-bp-act-reply-delete-nonce'] = bp_get_activity_comment_delete_link();
} else {
$buttons['activity_comment_reply']['button_attr']['href'] = sprintf( '#acomment-%s', $activity_comment_id );
$buttons['activity_comment_delete']['button_attr']['href'] = bp_get_activity_comment_delete_link();
}
// Add the Spam Button if supported
if ( bp_is_akismet_active() && isset( buddypress()->activity->akismet ) && bp_activity_user_can_mark_spam() ) {
$buttons['activity_comment_spam'] = array(
'id' => 'activity_comment_spam',
'position' => 25,
'component' => 'activity',
'must_be_logged_in' => true,
'parent_element' => $parent_element,
'parent_attr' => $parent_attr,
'button_element' => $button_element,
'link_text' => __( 'Spam', 'buddyboss' ),
'button_attr' => array(
'id' => "activity_make_spam_{$activity_comment_id}",
'class' => 'bp-secondary-action spam-activity-comment confirm',
'rel' => 'nofollow',
),
);
// If button element set add nonce link to data-attr attr
if ( 'button' === $button_element ) {
$data_element = 'data-bp-act-spam-nonce';
} else {
$data_element = 'href';
}
$buttons['activity_comment_spam']['button_attr'][ $data_element ] = wp_nonce_url(
bp_get_root_domain() . '/' . bp_get_activity_slug() . '/spam/' . $activity_comment_id . '/?cid=' . $activity_comment_id,
'bp_activity_akismet_spam_' . $activity_comment_id
);
}
/**
* Filter to add your buttons, use the position argument to choose where to insert it.
*
* @since BuddyPress 3.0.0
*
* @param array $buttons The list of buttons.
* @param int $activity_comment_id The current activity comment ID.
* @param int $activity_id The current activity ID.
*/
$buttons_group = apply_filters( 'bp_nouveau_get_activity_comment_buttons', $buttons, $activity_comment_id, $activity_id );
if ( ! $buttons_group ) {
return $buttons;
}
// It's the first comment of the loop, so build the Group and sort it
if ( ! isset( bp_nouveau()->activity->comment_buttons ) || ! is_a( bp_nouveau()->activity->comment_buttons, 'BP_Buttons_Group' ) ) {
$sort = true;
bp_nouveau()->activity->comment_buttons = new BP_Buttons_Group( $buttons_group );
// It's not the first comment, the order is set, we simply need to update the Buttons Group
} else {
$sort = false;
bp_nouveau()->activity->comment_buttons->update( $buttons_group );
}
$return = bp_nouveau()->activity->comment_buttons->get( $sort );
if ( ! $return ) {
return array();
}
/**
* If post comment / Activity comment sync is on, it's safer
* to unset the comment button just before returning it.
*/
// if ( ! bp_activity_can_comment_reply( bp_activity_current_comment() ) ) {
// unset( $return['activity_comment_reply'] );
// }
/**
* If there was an activity of the user before one af another
* user as we're updating buttons, we need to unset the delete link
*/
if ( ! bp_activity_user_can_delete() ) {
unset( $return['activity_comment_delete'] );
}
if ( isset( $return['activity_comment_spam'] ) && ( ! bp_activity_current_comment() || ! in_array( bp_activity_current_comment()->type, BP_Akismet::get_activity_types(), true ) ) ) {
unset( $return['activity_comment_spam'] );
}
/**
* Leave a chance to adjust the $return
*
* @since BuddyPress 3.0.0
*
* @param array $return The list of buttons ordered.
* @param int $activity_comment_id The current activity comment ID.
* @param int $activity_id The current activity ID.
*/
do_action_ref_array( 'bp_nouveau_return_activity_comment_buttons', array( &$return, $activity_comment_id, $activity_id ) );
return $return;
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 3.0.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.