| Current File : /home/digitaw/www/wp-content/plugins/event-tickets/src/views/registration-js/content.php |
<?php
/**
* This template renders the registration/purchase attendee fields
*
* Override this template in your own theme by creating a file at:
* [your-theme]/tribe/tickets/registration-js/content.php
*
* @link https://evnt.is/1amp Help article for RSVP & Ticket template files.
*
* @since 4.11.0
* @since 4.11.3.1 Fix handling where $provider is an object.
* @since 4.12.0 Prevent potential errors when $provider_obj is not valid.
* @since 4.12.1 Set the notice as hidden by default. The JavaScript will show if needed.
* @since 4.12.3 Update for getting ticket provider now returning instance or False. Remove duplicate array property.
* Retrieve $is_meta_up_to_date in a manner consistent with other template variables. Moved `novalidate` from
* div to form, as it used to be. Implement short array syntax.
* @since 5.0.3 Add `event-tickets` class to the wrapper.
* @since 5.0.4 Remove extraneous "Save and checkout" heading.
*
* @version 5.0.4
*
* @var Tribe__Tickets__Attendee_Registration__View $this
*/
$provider = $this->get( 'provider' ) ?: tribe_get_request_var( tribe_tickets_get_provider_query_slug() );
$events = (array) $this->get( 'events' );
/** @var Tribe__Tickets_Plus__Meta $meta */
$meta = tribe( 'tickets-plus.meta' );
if ( empty( $provider ) ) {
$event_keys = array_keys( $events );
$event_key = array_shift( $event_keys );
$provider_obj = Tribe__Tickets__Tickets::get_event_ticket_provider_object( $event_key );
$provider = $provider_obj->attendee_object;
} elseif ( is_string( $provider ) ) {
/** @var Tribe__Tickets__Attendee_Registration__View $reg_view */
$reg_view = tribe( 'tickets.attendee_registration.view' );
$provider_obj = $reg_view->get_cart_provider( $provider );
$provider = $provider_obj->attendee_object;
} elseif ( $provider instanceof Tribe__Tickets__Tickets ) {
$provider_obj = $provider;
$provider = $provider_obj->attendee_object;
}
if ( ! empty( $provider_obj ) && method_exists( $provider_obj, 'get_checkout_url' ) ) {
$checkout_url = $provider_obj->get_checkout_url();
} else {
$checkout_url = '';
}
$non_meta_count = 0;
$provider_class = $this->get_form_class( $provider );
$all_tickets = [];
$classes = [
'tribe-common',
'event-tickets',
'tribe-tickets__registration',
];
?>
<div <?php tribe_classes( $classes ); ?> data-provider="<?php echo esc_attr( $provider ); ?>">
<?php
/**
* Before the output, whether $events is empty.
*
* @since 4.11.0
*
* @param string $provider The 'provider' $_REQUEST var.
* @param string $provider_class The class string or empty string if ticket provider is not found.
* @param array $events The array of events, which might be empty.
*/
do_action( 'tribe_tickets_registration_content_before_all_events', $provider, $provider_class, $events );
?>
<div class="tribe-common-h8 tribe-common-h--alt tribe-tickets__registration__actions">
<?php $this->template( 'registration/button-cart', [ 'provider' => $provider ] ); ?>
</div>
<h1 class="tribe-common-h2 tribe-common-h1--min-medium tribe-common-h--alt tribe-tickets__registration__page-title">
<?php echo esc_html( tribe( 'tickets.attendee_registration.template' )->get_page_title() ); ?>
</h1>
<form
method="post"
id="tribe-tickets__registration__form"
action="<?php echo esc_url( $checkout_url ); ?>"
data-provider="<?php echo esc_attr( $provider ); ?>"
novalidate
>
<div class="tribe-tickets__registration__grid">
<?php
$this->template(
'components/notice',
[
'id' => 'tribe-tickets__notice__attendee-registration',
'notice_classes' => [
'tribe-tickets__notice--error',
'tribe-tickets__validation-notice',
],
'content' => sprintf(
esc_html_x(
'You have %s ticket(s) with a field that requires information.',
'Note about missing required fields, %s is the html-wrapped number of tickets.',
'event-tickets'
),
'<span class="tribe-tickets__notice--error__count">1</span>'
),
]
);
$args = [
'cart_url' => $this->get( 'cart_url' ),
'events' => $events,
'has_tickets_on_sale' => $this->get( 'has_tickets_on_sale' ),
'is_sale_past' => $this->get( 'is_sale_past' ),
'post_id' => $this->get( 'post_id' ),
'provider_id' => $this->get( 'provider_id' ),
'provider' => $provider,
'tickets_on_sale' => $this->get( 'tickets_on_sale' ),
'tickets' => $this->get( 'tickets', [] ),
];
$this->template( 'registration-js/mini-cart', $args );
?>
<div class="tribe-tickets__registration__content">
<input type="hidden" name="tribe_tickets_saving_attendees" value="1" />
<input type="hidden" name="tribe_tickets_ar" value="1" />
<input type="hidden" name="tribe_tickets_ar_page" value="1" />
<input type="hidden" name="tribe_tickets_ar_data" value="" id="tribe_tickets_ar_data" />
<input type="hidden" name="tribe_tickets_provider" value="<?php echo esc_attr( $provider ); ?>" />
<?php foreach ( $events as $event_id => $tickets ) : ?>
<?php
$providers = wp_list_pluck( $tickets, 'provider' );
$providers_arr = array_unique( wp_list_pluck( $providers, 'attendee_object' ) );
if (
empty( $provider_class )
&& ! empty( $providers_arr[ $event_id ] )
) :
$provider_class = 'tribe-tickets__item__attendee__fields__form--' . $providers_arr[ $event_id ];
endif;
$has_tpp = Tribe__Tickets__Commerce__PayPal__Main::ATTENDEE_OBJECT === $provider || in_array( Tribe__Tickets__Commerce__PayPal__Main::ATTENDEE_OBJECT, $providers_arr, true );
?>
<div
class="tribe-tickets__registration__event"
data-event-id="<?php echo esc_attr( $event_id ); ?>"
data-is-meta-up-to-date="<?php echo absint( $this->get( 'is_meta_up_to_date' ) ); ?>"
>
<?php $this->template( 'registration/summary/content', [ 'event_id' => $event_id, 'tickets' => $tickets ] ); ?>
<div class="tribe-tickets__item__attendee__fields">
<?php $this->template( 'registration-js/attendees/error', [ 'event_id' => $event_id, 'tickets' => $tickets ] ); ?>
<div
class="tribe-tickets__item__attendee__fields__form <?php echo sanitize_html_class( $provider_class ); ?> tribe-validation"
name="event<?php echo esc_attr( $event_id ); ?>"
>
<?php
foreach ( $tickets as $ticket ) :
$all_tickets[] = $ticket;
// Only include tickets with meta.
if ( ! $meta->ticket_has_meta( $ticket['id'] ) ) {
$non_meta_count++;
continue;
}
?>
<div class="tribe-tickets__item__attendee__fields__container" data-ticket-id="<?php echo esc_attr( $ticket['id'] ); ?>">
<h3 class="tribe-common-h5 tribe-common-h5--min-medium tribe-common-h--alt tribe-ticket__heading">
<?php echo esc_html( get_the_title( $ticket['id'] ) ); ?>
</h3>
</div>
<?php endforeach; ?>
</div>
</div>
</div>
<?php $this->template( 'registration-js/attendees/content', [ 'event_id' => $event_id, 'tickets' => $tickets, 'provider' => $providers[0] ] ); ?>
<?php endforeach; ?>
</div>
</div>
<div class="tribe-tickets__registration__footer">
<?php
$notice_classes = [
'tribe-tickets__notice--non-ar',
'tribe-common-a11y-hidden', // Set as hidden. JavaScript will show it if needed.
];
$this->template(
'components/notice',
[
'notice_classes' => $notice_classes,
'content' => sprintf(
esc_html_x(
'There are %s other tickets in your cart that do not require attendee information.',
'Note that there are more tickets in the cart, %s is the html-wrapped number.',
'event-tickets'
),
'<span id="tribe-tickets__non-ar-count">' . absint( $non_meta_count ) . '</span>'
)
]
); ?>
<?php $this->template( 'blocks/tickets/registration/attendee/submit' ); ?>
</div>
</form>
</div>
<?php include Tribe__Tickets__Templates::get_template_hierarchy( 'components/loader.php' ); ?>