BP_REST_Invites_Endpoint::create_item( WP_REST_Request $request )
Create an Invites/Send Invites.
Description
Parameters
- $request
-
(Required) Full data about the request.
Return
(WP_REST_Response) | WP_Error
Source
File: bp-invites/classes/class-bp-rest-invites-endpoint.php
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; }
Changelog
Version | Description |
---|---|
0.1.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.