BP_REST_Invites_Endpoint
Email Invites endpoints.
Description
Source
File: bp-invites/classes/class-bp-rest-invites-endpoint.php
class BP_REST_Invites_Endpoint extends WP_REST_Controller {
/**
* Constructor.
*
* @since 0.1.0
*/
public function __construct() {
$this->namespace = bp_rest_namespace() . '/' . bp_rest_version();
$this->rest_base = 'invites';
}
/**
* Register the component routes.
*
* @since 0.1.0
*/
public function register_routes() {
register_rest_route(
$this->namespace,
'/' . $this->rest_base,
array(
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_items' ),
'permission_callback' => array( $this, 'get_items_permissions_check' ),
'args' => $this->get_collection_params(),
),
array(
'methods' => WP_REST_Server::CREATABLE,
'callback' => array( $this, 'create_item' ),
'permission_callback' => array( $this, 'create_item_permissions_check' ),
'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::CREATABLE ),
),
'schema' => array( $this, 'get_item_schema' ),
)
);
register_rest_route(
$this->namespace,
'/' . $this->rest_base . '/(?P<id>[\d]+)',
array(
'args' => array(
'id' => array(
'description' => __( 'A unique numeric ID for the member invitation.', 'buddyboss' ),
'type' => 'integer',
'required' => true,
),
),
array(
'methods' => WP_REST_Server::DELETABLE,
'callback' => array( $this, 'delete_item' ),
'permission_callback' => array( $this, 'delete_item_permissions_check' ),
),
'schema' => array( $this, 'get_item_schema' ),
)
);
register_rest_route(
$this->namespace,
'/' . $this->rest_base . '/profile-type',
array(
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_invite_profile_type' ),
'permission_callback' => array( $this, 'get_invite_profile_type_permissions_check' ),
),
'schema' => array( $this, 'get_item_schema' ),
)
);
}
/**
* Sent Invites.
*
* @param WP_REST_Request $request Full details about the request.
*
* @return WP_REST_Response | WP_Error List of bp-invite post's object data.
* @since 0.1.0
*
* @api {GET} /wp-json/buddyboss/v1/invites Sent Invites
* @apiName GetBBInvites
* @apiGroup Email Invites
* @apiDescription Retrieve Sent Invites.
* @apiVersion 1.0.0
* @apiPermission LoggedInUser
* @apiParam {Number} [page=1] Current page of the collection.
* @apiParam {Number} [per_page=10] Maximum number of items to be returned in result set.
* @apiParam {String=asc,desc} [order=desc] Designates ascending or descending order of invites.
* @apiParam {String=date,ID,rand} [orderby=date] Sort retrieved invites by parameter.
*/
public function get_items( $request ) {
$args = array(
'post_type' => bp_get_invite_post_type(),
'author' => (int) get_current_user_id(),
'paged' => ( ! empty( $request['page'] ) ? $request['page'] : '' ),
'posts_per_page' => ( ! empty( $request['per_page'] ) ? $request['per_page'] : '' ),
'orderby' => ( ! empty( $request['orderby'] ) ? $request['orderby'] : 'date' ),
'order' => ( ! empty( $request['order'] ) ? $request['order'] : 'desc' ),
);
$invites_query = new WP_Query( $args );
$sent_invites = ( ! empty( $invites_query->posts ) ? $invites_query->posts : array() );
$retval = array();
foreach ( $sent_invites as $invite ) {
$retval[] = $this->prepare_response_for_collection(
$this->prepare_item_for_response( $invite, $request )
);
}
wp_reset_postdata();
$response = rest_ensure_response( $retval );
$response = bp_rest_response_add_total_headers( $response, $invites_query->found_posts, $args['posts_per_page'] );
/**
* Fires after a list of sent invites is fetched via the REST API.
*
* @param array $sent_invites Fetched Invites.
* @param WP_REST_Response $response The response data.
* @param WP_REST_Request $request The request sent to the API.
*
* @since 0.1.0
*/
do_action( 'bp_rest_invites_get_items', $sent_invites, $response, $request );
return $response;
}
/**
* Check if a given request has access to invites items.
*
* @param WP_REST_Request $request Full details about the request.
*
* @return bool|WP_Error
* @since 0.1.0
*/
public function get_items_permissions_check( $request ) {
$retval = true;
if ( ! is_user_logged_in() ) {
$retval = new WP_Error(
'bp_rest_authorization_required',
__( 'Sorry, you need to be logged in to view invites.', 'buddyboss' ),
array(
'status' => rest_authorization_required_code(),
)
);
}
if ( true === $retval && ! ( bp_current_user_can( 'bp_moderate' ) || current_user_can( 'edit_users' ) ) ) {
$retval = new WP_Error(
'bp_rest_authorization_required',
__( 'Sorry, you don\'t have permission to view invites.', 'buddyboss' ),
array(
'status' => rest_authorization_required_code(),
)
);
}
/**
* Filter the invites `get_items` permissions check.
*
* @param bool|WP_Error $retval Returned value.
* @param WP_REST_Request $request The request sent to the API.
*
* @since 0.1.0
*/
return apply_filters( 'bp_rest_invites_get_items_permissions_check', $retval, $request );
}
/**
* Create an Invites/Send Invites.
*
* @param WP_REST_Request $request Full data about the request.
*
* @return WP_REST_Response | WP_Error
* @since 0.1.0
*
* @api {POST} /wp-json/buddyboss/v1/invites Send Invites
* @apiName CreateBBInvites
* @apiGroup Email Invites
* @apiDescription Create an Invites/Send Invites.
* @apiVersion 1.0.0
* @apiPermission LoggedInUser
* @apiParam {Array} fields Fields array with name, email_id and profile_type to create an invites.
* @apiParam {string} [email_subject] Subject for invite a member.
* @apiParam {String} [email_content] Content for invite a member.
*/
public function create_item( $request ) {
$fields = $request->get_param( 'fields' );
if ( empty( $fields ) ) {
return new WP_Error(
'bp_rest_required_fields',
__( 'Sorry, you need to set the fields parameter.', 'buddyboss' ),
array(
'status' => 400,
)
);
}
$invite_exists_array = array();
$failed_invite = array();
$bp = buddypress();
if ( ! empty( $fields ) ) {
foreach ( $fields as $k => $field ) {
if (
isset( $field['name'] )
&& isset( $field['email_id'] )
&& '' !== $field['name']
&& '' !== $field['name']
&& '' !== $field['email_id']
&& is_email( $field['email_id'] )
) {
if ( email_exists( (string) $field['email_id'] ) ) {
$invite_exists_array[] = $field['email_id'];
} else {
$invite_correct_array[] = array(
'name' => $field['name'],
'email' => $field['email_id'],
'member_type' => ( isset( $field['profile_type'] ) && ! empty( $field['profile_type'] ) ) ? $field['profile_type'] : '',
);
}
} else {
$invite_wrong_array[] = array(
'name' => ( isset( $field['name'] ) ? $field['name'] : '' ),
'email' => ( isset( $field['email_id'] ) ? $field['email_id'] : '' ),
'member_type' => ( isset( $field['profile_type'] ) ? $field['profile_type'] : '' ),
);
}
}
}
$invitations_ids = array();
$query_string = array();
if ( ! empty( $invite_correct_array ) ) {
require trailingslashit( buddypress()->plugin_dir . 'bp-invites/actions' ) . '/invites.php';
foreach ( $invite_correct_array as $key => $value ) {
$_POST = array();
$email = $value['email'];
$name = $value['name'];
$member_type = $value['member_type'];
$query_string[] = $email;
$inviter_name = bp_core_get_user_displayname( bp_loggedin_user_id() );
if ( true === bp_disable_invite_member_email_subject() ) {
$subject = $request->get_param( 'email_subject' );
if ( empty( $subject ) ) {
$subject = stripslashes( wp_strip_all_tags( bp_get_member_invitation_subject() ) );
} else {
$_POST['bp_member_invites_custom_subject'] = $subject;
}
} else {
$subject = stripslashes( wp_strip_all_tags( bp_get_member_invitation_subject() ) );
}
if ( true === bp_disable_invite_member_email_content() ) {
$message = $request->get_param( 'email_content' );
if ( empty( $message ) ) {
$message = stripslashes( wp_strip_all_tags( bp_get_member_invitation_message() ) );
} else {
$_POST['bp_member_invites_custom_content'] = $message;
}
} else {
$message = stripslashes( wp_strip_all_tags( bp_get_member_invitation_message() ) );
}
$message .= '
' . bp_get_member_invites_wildcard_replace( stripslashes( wp_strip_all_tags( bp_get_invites_member_invite_url() ) ), $email );
$inviter_name = bp_core_get_user_displayname( bp_loggedin_user_id() );
$site_name = get_bloginfo( 'name' );
$inviter_url = bp_loggedin_user_domain();
$email_encode = rawurlencode( $email );
// set post variable.
$_POST['custom_user_email'] = $email;
// Set both variable which will use in email.
$_POST['custom_user_name'] = $name;
$_POST['custom_user_avatar'] = apply_filters( 'bp_sent_invite_email_avatar', buddypress()->plugin_url . 'bp-core/images/mystery-man.jpg' );
$accept_link = add_query_arg(
array(
'bp-invites' => 'accept-member-invitation',
'email' => $email_encode,
// phpcs:ignore
'inviter' => base64_encode( bp_loggedin_user_id() ),
),
bp_get_root_domain() . '/' . bp_get_signup_slug() . '/'
);
$accept_link = apply_filters( 'bp_member_invitation_accept_url', $accept_link );
$args = array(
'tokens' => array(
'inviter.name' => $inviter_name,
'inviter.url' => $inviter_url,
'invitee.url' => $accept_link,
),
);
/**
* Remove Recipients avatar and name.
*
* T:1602 - https://trello.com/c/p2VKGMHs/1602-recipients-name-and-avatar-should-not-be-showing-on-email-invite-template
*/
add_filter( 'bp_email_get_salutation', '__return_false' );
$insert_post_args = array(
'post_author' => $bp->loggedin_user->id,
'post_content' => $message,
'post_title' => $subject,
'post_status' => 'publish',
'post_type' => bp_get_invite_post_type(),
);
$post_id = wp_insert_post( $insert_post_args );
if ( ! empty( $post_id ) || ! is_wp_error( $post_id ) ) {
$invitations_ids[] = $post_id;
// Send invitation email.
bp_send_email( 'invites-member-invite', $email, $args );
// Save a blank bp_ia_accepted post_meta.
update_post_meta( $post_id, 'bp_member_invites_accepted', '' );
update_post_meta( $post_id, '_bp_invitee_email', $email );
update_post_meta( $post_id, '_bp_invitee_name', $name );
update_post_meta( $post_id, '_bp_inviter_name', $inviter_name );
update_post_meta( $post_id, '_bp_invitee_status', 0 );
update_post_meta( $post_id, '_bp_invitee_member_type', $member_type );
} else {
$failed_invite[] = $value;
}
}
}
if ( empty( $invitations_ids ) ) {
return new WP_Error(
'bp_rest_no_invitation_send',
__( 'Sorry, No any invitation has been send.', 'buddyboss' ),
array(
'status' => 400,
)
);
}
$send_invitations = get_posts(
array(
'post_type' => bp_get_invite_post_type(),
'include' => $invitations_ids,
)
);
$retval = array(
'data' => array(),
'exists' => $invite_exists_array,
'failed' => wp_list_pluck( array_filter( $failed_invite ), 'email' ),
);
foreach ( $send_invitations as $invite ) {
$retval['data'][] = $this->prepare_response_for_collection(
$this->prepare_item_for_response( $invite, $request )
);
}
$response = rest_ensure_response( $retval );
/**
* Fires after a list of invites has been send via the REST API.
*
* @param WP_REST_Response $response The response data.
* @param WP_REST_Request $request The request sent to the API.
*
* @since 0.1.0
*/
do_action( 'bp_rest_invites_get_items', $response, $request );
return $response;
}
/**
* Checks if a given request has access to create an invites.
*
* @param WP_REST_Request $request Full details about the request.
*
* @return bool|WP_Error
* @since 0.1.0
*/
public function create_item_permissions_check( $request ) {
$retval = true;
if ( ! is_user_logged_in() ) {
$retval = new WP_Error(
'bp_rest_authorization_required',
__( 'Sorry, you need to be logged in to create invites.', 'buddyboss' ),
array(
'status' => rest_authorization_required_code(),
)
);
}
if ( true === $retval && ! ( bp_current_user_can( 'bp_moderate' ) || current_user_can( 'edit_users' ) ) ) {
$retval = new WP_Error(
'bp_rest_authorization_required',
__( 'Sorry, you don\'t have permission to create invites.', 'buddyboss' ),
array(
'status' => rest_authorization_required_code(),
)
);
}
/**
* Filter the invites `create_item` permissions check.
*
* @param bool|WP_Error $retval Returned value.
* @param WP_REST_Request $request The request sent to the API.
*
* @since 0.1.0
*/
return apply_filters( 'bp_rest_invites_create_item_permissions_check', $retval, $request );
}
/**
* Delete a invites.
*
* @param WP_REST_Request $request Full details about the request.
*
* @return WP_REST_Response | WP_Error
* @since 0.1.0
*
* @api {DELETE} /wp-json/buddyboss/v1/invites/:id Revoke Invite
* @apiName DeleteBBInvites
* @apiGroup Email Invites
* @apiDescription Remoke Invites.
* @apiVersion 1.0.0
* @apiPermission LoggedInUser
* @apiParam {Number} id A unique numeric ID for the member invitation.
*/
public function delete_item( $request ) {
// Setting context.
$request->set_param( 'context', 'edit' );
$invite = get_post( $request['id'] );
$previous = $this->prepare_response_for_collection(
$this->prepare_item_for_response( $invite, $request )
);
$success = wp_delete_post( $invite->ID );
// Build the response.
$response = new WP_REST_Response();
$response->set_data(
array(
'deleted' => ( ! empty( $success ) && ! is_wp_error( $success ) ? true : $success ),
'previous' => $previous,
)
);
/**
* Fires after a invitation is deleted via the REST API.
*
* @param object $invite The deleted invitation.
* @param WP_REST_Response $response The response data.
* @param WP_REST_Request $request The request sent to the API.
*
* @since 0.1.0
*/
do_action( 'bp_rest_invites_delete_item', $invite, $response, $request );
return $response;
}
/**
* Check if a given request has access to delete an invite.
*
* @param WP_REST_Request $request Full details about the request.
*
* @return bool|WP_Error
* @since 0.1.0
*/
public function delete_item_permissions_check( $request ) {
$retval = true;
if ( ! is_user_logged_in() ) {
$retval = new WP_Error(
'bp_rest_authorization_required',
__( 'Sorry, you need to be logged in to revoke invite.', 'buddyboss' ),
array(
'status' => rest_authorization_required_code(),
)
);
}
if ( true === $retval && ! ( bp_current_user_can( 'bp_moderate' ) || current_user_can( 'edit_users' ) ) ) {
$retval = new WP_Error(
'bp_rest_authorization_required',
__( 'Sorry, you don\'t have permission to revoke invite.', 'buddyboss' ),
array(
'status' => rest_authorization_required_code(),
)
);
}
$invite = get_post( $request['id'] );
if ( true === $retval && empty( $invite->ID ) ) {
$retval = new WP_Error(
'bp_rest_invite_invalid_id',
__( 'Invalid invite ID.', 'buddyboss' ),
array(
'status' => 404,
)
);
}
if ( true === $retval && ( ! isset( $invite->post_type ) || 'bp-invite' !== $invite->post_type ) ) {
$retval = new WP_Error(
'bp_rest_invite_invalid_id',
__( 'Invalid invite ID.', 'buddyboss' ),
array(
'status' => 404,
)
);
}
/**
* Filter the invites `delete_item` permissions check.
*
* @param bool|WP_Error $retval Returned value.
* @param WP_REST_Request $request The request sent to the API.
*
* @since 0.1.0
*/
return apply_filters( 'bp_rest_invites_delete_item_permissions_check', $retval, $request );
}
/**
* Sent Invites Profile Type.
*
* @param WP_REST_Request $request Full details about the request.
*
* @return WP_REST_Response | WP_Error List of bp-invite profile types
* @since 0.1.0
*
* @api {GET} /wp-json/buddyboss/v1/invites/profile-type Invites Profile Type
* @apiName GetBBInvitesProfileType
* @apiGroup Email Invites
* @apiDescription Retrieve Sent Invites Profile Type.
* @apiVersion 1.0.0
* @apiPermission LoggedInUser
*/
public function get_invite_profile_type( $request ) {
$member_types = array();
if ( function_exists( 'bp_check_member_send_invites_tab_member_type_allowed' ) && true === bp_check_member_send_invites_tab_member_type_allowed() ) {
$current_user = bp_loggedin_user_id();
$member_type = bp_get_member_type( $current_user );
$member_type_post_id = bp_member_type_post_by_type( $member_type );
$get_selected_member_types = get_post_meta( $member_type_post_id, '_bp_member_type_allowed_member_type_invite', true );
if ( isset( $get_selected_member_types ) && ! empty( $get_selected_member_types ) ) {
$member_types = $get_selected_member_types;
} else {
$member_types = bp_get_active_member_types();
}
}
$retval = array();
if ( ! empty( $member_types ) ) {
foreach ( $member_types as $type ) {
$name = bp_get_member_type_key( $type );
$type_obj = bp_get_member_type_object( $name );
if ( ! empty( $type_obj ) ) {
$member_type = $type_obj->labels['singular_name'];
}
$retval[] = array(
'value' => $name,
'label' => esc_html( $member_type ),
);
}
}
$response = rest_ensure_response( $retval );
/**
* Fires after a list of sent invites profile type is fetched via the REST API.
*
* @param WP_REST_Response $response The response data.
* @param WP_REST_Request $request The request sent to the API.
*
* @since 0.1.0
*/
do_action( 'bp_rest_invites_get_invite_profile_type', $response, $request );
return $response;
}
/**
* Check if a given request has access to invites profile type items.
*
* @param WP_REST_Request $request Full details about the request.
*
* @return bool|WP_Error
* @since 0.1.0
*/
public function get_invite_profile_type_permissions_check( $request ) {
$retval = true;
if ( ! is_user_logged_in() ) {
$retval = new WP_Error(
'bp_rest_authorization_required',
__( 'Sorry, you need to be logged in to view invites profile type.', 'buddyboss' ),
array(
'status' => rest_authorization_required_code(),
)
);
}
if ( true === $retval && ! ( bp_current_user_can( 'bp_moderate' ) || current_user_can( 'edit_users' ) ) ) {
$retval = new WP_Error(
'bp_rest_authorization_required',
__( 'Sorry, you don\'t have permission to view invites profile type.', 'buddyboss' ),
array(
'status' => rest_authorization_required_code(),
)
);
}
/**
* Filter the invites `get_invite_profile_type` permissions check.
*
* @param bool|WP_Error $retval Returned value.
* @param WP_REST_Request $request The request sent to the API.
*
* @since 0.1.0
*/
return apply_filters( 'bp_rest_invites_get_invite_profile_type_permissions_check', $retval, $request );
}
/**
* Prepares Invite data for return as an object.
*
* @param WP_Post $item bp-invite post object.
* @param WP_REST_Request $request Full details about the request.
*
* @return WP_REST_Response
* @since 0.1.0
*/
public function prepare_item_for_response( $item, $request ) {
$data = array(
'id' => $item->ID,
'name' => get_post_meta( $item->ID, '_bp_invitee_name', true ),
'email' => get_post_meta( $item->ID, '_bp_invitee_email', true ),
'date' => $this->prepare_date_response( $item->post_date_gmt, $item->post_date ),
'date_gmt' => $this->prepare_date_response( $item->post_date_gmt ),
'status' => '',
'invitee-status' => (bool) get_post_meta( $item->ID, '_bp_invitee_status', true ),
'revoke-invite' => false,
);
if (
function_exists( 'bp_allow_custom_registration' )
&& function_exists( 'bp_custom_register_page_url' )
&& bp_allow_custom_registration()
&& '' !== bp_custom_register_page_url()
) {
$data['status'] = ( '1' === get_post_meta( $item->ID, '_bp_invitee_status', true ) ) ? __( 'Registered', 'buddyboss' ) : __( 'Invited', 'buddyboss' );
} else {
$data['status'] = ( '1' === get_post_meta( $item->ID, '_bp_invitee_status', true ) ) ? __( 'Registered', 'buddyboss' ) : __( 'Revoke Invite', 'buddyboss' );
$data['revoke-invite'] = ( '1' === get_post_meta( $item->ID, '_bp_invitee_status', true ) ) ? false : true;
}
$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
$data = $this->add_additional_fields_to_object( $data, $request );
$data = $this->filter_response_by_context( $data, $context );
$response = rest_ensure_response( $data );
/**
* Filter a invite value returned from the API.
*
* @param WP_REST_Response $response The response data.
* @param WP_REST_Request $request Request used to generate the response.
* @param WP_Post $item bp-invite post object.
*
* @since 0.1.0
*/
return apply_filters( 'bp_rest_invites_prepare_value', $response, $request, $item );
}
/**
* Edit some arguments for the endpoint's CREATABLE and EDITABLE methods.
*
* @param string $method Optional. HTTP method of the request.
*
* @return array Endpoint arguments.
* @since 0.1.0
*/
public function get_endpoint_args_for_item_schema( $method = WP_REST_Server::CREATABLE ) {
$args = WP_REST_Controller::get_endpoint_args_for_item_schema( $method );
$key = 'create_item';
if ( WP_REST_Server::CREATABLE === $method ) {
$args = array(
'fields' => array(
'description' => __( 'Fields array with name and email_id to create an invites.', 'buddyboss' ),
'type' => 'array',
'items' => array( 'type' => 'object' ),
'required' => true,
'properties' => array(
'name' => array(
'description' => __( 'Recipient Name for the invite.', 'buddyboss' ),
'type' => 'string',
'required' => true,
'sanitize_callback' => 'sanitize_text_field',
'validate_callback' => 'rest_validate_request_arg',
),
'email_id' => array(
'description' => __( 'Recipient Email for the invite.', 'buddyboss' ),
'type' => 'string',
'required' => true,
'sanitize_callback' => 'sanitize_text_field',
'validate_callback' => 'rest_validate_request_arg',
),
),
),
);
if ( true === bp_check_member_send_invites_tab_member_type_allowed() ) {
$args['fields']['description'] = __( 'Fields array with name, email_id and profile_type to create an invites.', 'buddyboss' );
$args['fields']['properties']['profile_type'] = array(
'description' => __( 'Profile Type for the invite.', 'buddyboss' ),
'type' => 'string',
'required' => true,
'sanitize_callback' => 'sanitize_text_field',
'validate_callback' => 'rest_validate_request_arg',
);
}
if ( true === bp_disable_invite_member_email_subject() ) {
$args['email_subject'] = array(
'description' => __( 'Subject for invite a member.', 'buddyboss' ),
'type' => 'string',
'default' => stripslashes( wp_strip_all_tags( bp_get_member_invitation_subject() ) ),
'validate_callback' => 'rest_validate_request_arg',
);
}
if ( true === bp_disable_invite_member_email_content() ) {
$args['email_content'] = array(
'description' => __( 'Content for invite a member.', 'buddyboss' ),
'type' => 'string',
'default' => bp_get_member_invites_wildcard_replace( bp_get_member_invitation_message() ),
'validate_callback' => 'rest_validate_request_arg',
);
}
}
/**
* Filters the method query arguments.
*
* @param array $args Query arguments.
* @param string $method HTTP method of the request.
*
* @since 0.1.0
*/
return apply_filters( "bp_rest_invites_{$key}_query_arguments", $args, $method );
}
/**
* Get the invite schema, conforming to JSON Schema.
*
* @return array
* @since 0.1.0
*/
public function get_item_schema() {
$schema = array(
'$schema' => 'http://json-schema.org/draft-04/schema#',
'title' => 'bp_invites',
'type' => 'object',
'properties' => array(
'id' => array(
'description' => __( 'Unique identifier for the invite.', 'buddyboss' ),
'type' => 'integer',
'context' => array( 'embed', 'view', 'edit' ),
'readonly' => true,
),
'name' => array(
'description' => __( 'Member\'s name.', 'buddyboss' ),
'type' => 'string',
'context' => array( 'embed', 'view', 'edit' ),
'readonly' => true,
),
'email' => array(
'description' => __( 'Member\'s email address', 'buddyboss' ),
'type' => 'string',
'context' => array( 'embed', 'view', 'edit' ),
'readonly' => true,
),
'date' => array(
'description' => __( 'The date the object was published, in the site\'s timezone.', 'buddyboss' ),
'type' => 'string',
'format' => 'date-time',
'context' => array( 'embed', 'view', 'edit' ),
),
'date_gmt' => array(
'description' => __( 'The date the object was published, as GMT.', 'buddyboss' ),
'type' => 'string',
'format' => 'date-time',
'context' => array( 'embed', 'view', 'edit' ),
),
'status' => array(
'description' => __( 'Status to perform on it.', 'buddyboss' ),
'type' => 'string',
'context' => array( 'embed', 'view', 'edit' ),
),
'invitee-status' => array(
'description' => __( 'Whether invitee is registered or not.', 'buddyboss' ),
'type' => 'boolean',
'context' => array( 'embed', 'view', 'edit' ),
),
'revoke-invite' => array(
'description' => __( 'Whether revoke invite or not.', 'buddyboss' ),
'type' => 'boolean',
'context' => array( 'embed', 'view', 'edit' ),
),
),
);
/**
* Filters the Invites schema.
*
* @param array $schema The endpoint schema.
*/
return apply_filters( 'bp_rest_invites_schema', $this->add_additional_fields_schema( $schema ) );
}
/**
* Get the query params for collections of invites.
*
* @return array
* @since 0.1.0
*/
public function get_collection_params() {
$params = parent::get_collection_params();
$params['context']['default'] = 'view';
unset( $params['search'] );
$params['order'] = array(
'description' => __( 'Designates ascending or descending order of invites.', 'buddyboss' ),
'default' => 'desc',
'type' => 'string',
'enum' => array( 'asc', 'desc' ),
'sanitize_callback' => 'sanitize_key',
'validate_callback' => 'rest_validate_request_arg',
);
$params['orderby'] = array(
'description' => __( 'Sort retrieved invites by parameter.', 'buddyboss' ),
'type' => 'array',
'items' => array(
'type' => 'string',
'enum' => array(
'date',
'ID',
'rand',
),
),
'sanitize_callback' => 'bp_rest_sanitize_string_list',
'validate_callback' => 'rest_validate_request_arg',
);
/**
* Filters the collection query params.
*
* @param array $params Query params.
*/
return apply_filters( 'bp_rest_invites_collection_params', $params );
}
/**
* Check the post_date_gmt or modified_gmt and prepare any post or
* modified date for single post output.
*
* @param string $date_gmt GMT date format.
* @param string|null $date forum date.
*
* @return string|null ISO8601/RFC3339 formatted datetime.
*/
protected function prepare_date_response( $date_gmt, $date = null ) {
// Use the date if passed.
if ( isset( $date ) ) {
return mysql_to_rfc3339( $date );
}
// Return null if $date_gmt is empty/zeros.
if ( '0000-00-00 00:00:00' === $date_gmt ) {
return null;
}
// Return the formatted datetime.
return mysql_to_rfc3339( $date_gmt );
}
}
Changelog
| Version | Description |
|---|---|
| 0.1.0 | Introduced. |
Methods
- __construct — Constructor.
- create_item — Create an Invites/Send Invites.
- create_item_permissions_check — Checks if a given request has access to create an invites.
- delete_item — Delete a invites.
- delete_item_permissions_check — Check if a given request has access to delete an invite.
- get_collection_params — Get the query params for collections of invites.
- get_endpoint_args_for_item_schema — Edit some arguments for the endpoint's CREATABLE and EDITABLE methods.
- get_invite_profile_type — Sent Invites Profile Type.
- get_invite_profile_type_permissions_check — Check if a given request has access to invites profile type items.
- get_item_schema — Get the invite schema, conforming to JSON Schema.
- get_items — Sent Invites.
- get_items_permissions_check — Check if a given request has access to invites items.
- prepare_date_response — Check the post_date_gmt or modified_gmt and prepare any post or modified date for single post output.
- prepare_item_for_response — Prepares Invite data for return as an object.
- register_routes — Register the component routes.
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.