bp_activity_admin_reply()
AJAX receiver for Activity replies via the admin screen.
Description
Processes requests to add new activity comments, and echoes HTML for a new table row.
Source
File: bp-activity/bp-activity-admin.php
function bp_activity_admin_reply() {
// Check nonce.
check_ajax_referer( 'bp-activity-admin-reply', '_ajax_nonce-bp-activity-admin-reply' );
$parent_id = ! empty( $_REQUEST['parent_id'] ) ? (int) $_REQUEST['parent_id'] : 0;
$root_id = ! empty( $_REQUEST['root_id'] ) ? (int) $_REQUEST['root_id'] : 0;
// $parent_id is required
if ( empty( $parent_id ) )
die( '-1' );
// If $root_id not set (e.g. for root items), use $parent_id.
if ( empty( $root_id ) )
$root_id = $parent_id;
// Check that a reply has been entered.
if ( empty( $_REQUEST['content'] ) )
die( __( 'ERROR: Please type a reply.', 'buddyboss' ) );
// Check parent activity exists.
$parent_activity = new BP_Activity_Activity( $parent_id );
if ( empty( $parent_activity->component ) )
die( __( 'ERROR: The item you are trying to reply to cannot be found, or it has been deleted.', 'buddyboss' ) );
// @todo: Check if user is allowed to create new activity items
// if ( ! current_user_can( 'bp_new_activity' ) )
if ( ! bp_current_user_can( 'bp_moderate' ) )
die( '-1' );
// Add new activity comment.
$new_activity_id = bp_activity_new_comment( array(
'activity_id' => $root_id, // ID of the root activity item.
'content' => $_REQUEST['content'],
'parent_id' => $parent_id, // ID of a parent comment.
) );
// Fetch the new activity item, as we need it to create table markup to return.
$new_activity = new BP_Activity_Activity( $new_activity_id );
// This needs to be set for the BP_Activity_List_Table constructor to work.
set_current_screen( 'toplevel_page_bp-activity' );
// Set up an output buffer.
ob_start();
$list_table = new BP_Activity_List_Table();
$list_table->single_row( (array) $new_activity );
// Get table markup.
$response = array(
'data' => ob_get_contents(),
'id' => $new_activity_id,
'position' => -1,
'what' => 'bp_activity',
);
ob_end_clean();
// Send response.
$r = new WP_Ajax_Response();
$r->add( $response );
$r->send();
exit();
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 1.6.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.