BP_REST_Notifications_Endpoint::bp_rest_get_notification_actions( BP_Notifications_Notification $notification )
Action to perform.
Description
Parameters
- $notification
-
(Required) A notification object.
Return
(array|string)
Source
File: bp-notifications/classes/class-bp-rest-notifications-endpoint.php
public function bp_rest_get_notification_actions( $notification ) {
$component_action = $notification->component_action;
$data = array(
'status' => '',
'accept' => array(),
'reject' => array(),
);
switch ( $component_action ) {
case 'friendship_accepted':
case 'membership_request_accepted':
case 'membership_request_rejected':
case 'member_promoted_to_admin':
case 'member_promoted_to_mod':
break;
case 'friendship_request':
if (
! empty( $notification->secondary_item_id )
&& bp_is_active( 'friends' )
&& class_exists( 'BP_Friends_Friendship' )
) {
$friendship = new BP_Friends_Friendship( $notification->secondary_item_id );
if ( $friendship->id === $notification->secondary_item_id ) {
if ( ! empty( $friendship->is_confirmed ) ) {
$data['status'] = __( 'Accepted', 'buddyboss' );
} else {
$data['status'] = __( 'Pending', 'buddyboss' );
$data['accept']['endpoint'] = rest_url( $this->namespace . '/' . buddypress()->friends->id . '/' . $friendship->id );
$data['accept']['method'] = 'PATCH';
$data['accept']['link_url'] = bp_loggedin_user_domain() . bp_get_friends_slug();
$data['reject']['endpoint'] = rest_url( $this->namespace . '/' . buddypress()->friends->id . '/' . $friendship->id );
$data['reject']['method'] = 'DELETE';
$data['reject']['link_url'] = bp_loggedin_user_domain() . bp_get_friends_slug();
}
} else {
$data['status'] = __( 'Rejected', 'buddyboss' );
}
}
break;
case 'new_membership_request':
if (
! empty( $notification->secondary_item_id )
&& bp_is_active( 'groups' )
&& function_exists( 'groups_get_requests' )
) {
$group = groups_get_group( $notification->item_id );
$is_member = groups_is_user_member( $notification->secondary_item_id, $notification->item_id );
if ( ! empty( $is_member ) ) {
$data['status'] = __( 'Accepted', 'buddyboss' );
} else {
$requests = groups_get_requests(
array(
'user_id' => $notification->secondary_item_id,
'item_id' => $notification->item_id,
)
);
if ( ! empty( $requests ) ) {
$current_request = current( $requests );
if ( ! empty( $current_request->accepted ) ) {
$data['status'] = __( 'Accepted', 'buddyboss' );
} else {
$data['status'] = __( 'Pending', 'buddyboss' );
$data['accept']['endpoint'] = rest_url( $this->namespace . '/' . buddypress()->groups->id . '/membership-requests/' . $current_request->id );
$data['accept']['method'] = 'PATCH';
$data['accept']['link_url'] = trailingslashit( bp_get_group_permalink( $group ) . 'members' );
$data['reject']['endpoint'] = rest_url( $this->namespace . '/' . buddypress()->groups->id . '/membership-requests/' . $current_request->id );
$data['reject']['method'] = 'DELETE';
$data['reject']['link_url'] = trailingslashit( bp_get_group_permalink( $group ) . 'members' );
}
} else {
$data['status'] = __( 'Rejected', 'buddyboss' );
}
}
}
break;
case 'group_invite':
if ( bp_is_active( 'groups' ) && function_exists( 'groups_get_invites' ) ) {
$group = groups_get_group( $notification->item_id );
$is_member = groups_is_user_member( $notification->user_id, $notification->item_id );
if ( ! empty( $is_member ) ) {
$data['status'] = __( 'Accepted', 'buddyboss' );
} else {
$invites = groups_get_invites(
array(
'user_id' => $notification->user_id,
'item_id' => $notification->item_id,
)
);
if ( ! empty( $invites ) ) {
$current_invites = current( $invites );
if ( ! empty( $current_invites->accepted ) ) {
$data['status'] = __( 'Accepted', 'buddyboss' );
} else {
$data['status'] = __( 'Pending', 'buddyboss' );
$data['accept']['endpoint'] = rest_url( $this->namespace . '/' . buddypress()->groups->id . '/invites/' . $current_invites->id );
$data['accept']['method'] = 'PATCH';
$data['accept']['link_url'] = bp_get_group_permalink( $group );
$data['reject']['endpoint'] = rest_url( $this->namespace . '/' . buddypress()->groups->id . '/invites/' . $current_invites->id );
$data['reject']['method'] = 'DELETE';
$data['reject']['link_url'] = bp_get_group_permalink( $group );
}
} else {
$data['status'] = __( 'Rejected', 'buddyboss' );
}
}
}
break;
}
if ( array(
'status' => '',
'accept' => array(),
'reject' => array(),
) === $data ) {
return '';
}
return $data;
}
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.