Tribe__Tickets__RSVP::process_rsvp_step( array $args )
Handle processing the RSVP step based on current arguments.
Contents
Parameters
- $args
-
(array) (Required) The list of step template arguments.
- 'rsvp_id'
(int) The RSVP ticket ID. - 'post_id'
(int) The ticket ID. - 'rsvp'
(Tribe__Tickets__Ticket_Object) The RSVP ticket object. - 'step'
(null|string) Which step being rendered. - 'must_login'
(boolean) Whether login is required to register. - 'login_url'
(string) The site login URL. - 'threshold'
(int) The RSVP ticket threshold.
- 'rsvp_id'
Return
(array) The process result.
Source
File: src/Tribe/RSVP.php
public function process_rsvp_step( array $args ) {
$result = [
'success' => null,
'errors' => [],
];
// Process the attendee.
if ( 'success' === $args['step'] ) {
$first_attendee = $this->parse_attendee_details();
/**
* These are the inputs we should be seeing:
*
* tribe_tickets[{$ticket_id}][ticket_id] (previously product_id[])
* tribe_tickets[{$ticket_id}][quantity] (previously quantity_{$ticket_id})
* tribe_tickets[{$ticket_id}][attendees][0][order_status] (previously attendee[order_status])
* tribe_tickets[{$ticket_id}][attendees][0][full_name] (previously attendee[full_name])
* tribe_tickets[{$ticket_id}][attendees][0][email] (previously attendee[email])
* tribe_tickets[{$ticket_id}][attendees][0][meta][{$field_slug}] (previously tribe-tickets-meta[{$ticket_id}][0][{$field_slug}])
* tribe_tickets[{$ticket_id}][attendees][1][full_name] (new for IAC)
* tribe_tickets[{$ticket_id}][attendees][1][email] (new for IAC)
* tribe_tickets[{$ticket_id}][attendees][1][meta][{$field_slug}] (previously tribe-tickets-meta[{$ticket_id}][1][{$field_slug}])
*/
$attendee_ids = $this->generate_tickets( $args['post_id'], false );
if ( false === $attendee_ids ) {
$result['success'] = false;
$result['errors'][] = __( 'Your RSVP was unsuccessful, please try again.', 'event-tickets' );
return $result;
}
$attendee_ids = implode( ',', $attendee_ids );
$nonce_action = 'tribe-tickets-rsvp-opt-in-' . md5( $attendee_ids );
$result['success'] = true;
$result['opt_in_args'] = [
'is_going' => ! empty( $first_attendee['order_status'] ) ? 'yes' === $first_attendee['order_status'] : false,
'checked' => false,
'attendee_ids' => $attendee_ids,
'opt_in_nonce' => wp_create_nonce( $nonce_action ),
];
} elseif ( 'opt-in' === $args['step'] ) {
/**
* These are the inputs we should be seeing:
*
* opt_in
* attendee_ids
* opt_in_nonce
*/
// @todo Handle opt-in setting for each attendee in order.
$optout = ! tribe_is_truthy( tribe_get_request_var( 'opt_in', true ) );
$attendee_ids = Tribe__Utils__Array::list_to_array( tribe_get_request_var( 'attendee_ids', [] ) );
$attendee_ids = array_map( 'absint', $attendee_ids );
$attendee_ids_flat = implode( ',', $attendee_ids );
$nonce_value = tribe_get_request_var( 'opt_in_nonce', '' );
$nonce_action = 'tribe-tickets-rsvp-opt-in-' . md5( $attendee_ids_flat );
if ( false === wp_verify_nonce( $nonce_value, $nonce_action ) ) {
$result['success'] = false;
$result['errors'][] = __( 'Unable to verify your opt-in request, please try again.', 'event-tickets' );
return $result;
}
foreach ( $attendee_ids as $attendee_id ) {
// @todo This class is not setting $this->attendee_optout_key.
update_post_meta( $attendee_id, self::ATTENDEE_OPTOUT_KEY, (int) $optout );
}
$result['success'] = true;
$result['opt_in_args'] = [
'is_going' => true,
'checked' => ! $optout,
'attendee_ids' => $attendee_ids_flat,
'opt_in_nonce' => $nonce_value,
];
}
return $result;
}
Changelog
| Version | Description |
|---|---|
| 4.12.3 | Introduced. |