| Current File : /home/digitaw/www/wp-content/plugins/event-tickets/src/Tribe/RSVP/Attendance_Totals.php |
<?php
/**
* Calculates RSVP attendance totals for a specified event (ie, how many
* are going, not going, etc).
*
* Also has the capability to print this information as HTML, intended for
* use in the attendee summary screen.
*
* Note that the totals are calculated upon instantiation, effectively making
* the object a snapshot in time. Therefore if the status of RSVPs is modified
* or if RSVPs are added/deleted later in the request, it would be necessary
* to obtain a new object of this type to get accurate results.
*/
class Tribe__Tickets__RSVP__Attendance_Totals extends Tribe__Tickets__Abstract_Attendance_Totals {
protected $total_rsvps = 0;
protected $total_going = 0;
protected $total_not_going = 0;
protected $has_rsvp_enabled = false;
/**
* Calculate total RSVP attendance for the current event.
*/
protected function calculate_totals() {
$rsvp = Tribe__Tickets__RSVP::get_instance();
$this->total_going = $rsvp->get_attendees_count_going( $this->event_id );
$this->total_not_going = $rsvp->get_attendees_count_not_going( $this->event_id );
$this->total_rsvps = $this->total_going + $this->total_not_going;
$rsvp_tickets = $rsvp->get_tickets( $this->event_id );
$this->has_rsvp_enabled = ! empty( $rsvp_tickets );
}
/**
* Prints an HTML (unordered) list of attendance totals.
*/
public function print_totals() {
// Skip output if there are no RSVP attendees going/not going AND if there are no current RSVP tickets.
if (
false === $this->has_rsvp_enabled
&& 0 === $this->get_total_rsvps()
) {
return;
}
// Note this now uses the `attendees-totals-list` template, so the array values don't quite logically line up
$args = [
'total_type_label' => tribe_get_rsvp_label_plural( 'total_type_label' ),
'total_sold_label' => esc_html( sprintf( _x( 'Total %s:', 'attendee summary', 'event-tickets' ), tribe_get_rsvp_label_plural( 'total_sold_label' ) ) ),
'total_complete_label' => _x( 'Going:', 'attendee summary', 'event-tickets' ),
'total_cancelled_label' => _x( 'Not Going:', 'attendee summary', 'event-tickets' ),
'total_sold' => $this->get_total_rsvps(),
'total_complete' => $this->get_total_going(),
'total_cancelled' => $this->get_total_not_going(),
'total_refunded' => 0,
'total_sold_tooltip' => '',
'total_completed_tooltip' => '',
'total_cancelled_tooltip' => '',
'total_refunded_tooltip' => '',
];
$html = tribe( 'tickets.admin.views' )->template( 'attendees/attendees-event/totals-list', $args, false );
/**
* Filters the HTML that should be printed to display RSVP attendance lines.
*
* @param string $html The default HTML code displaying going and not going data.
*/
$html = apply_filters( 'tribe_tickets_rsvp_print_totals_html', $html );
echo $html;
}
/**
* The total number of RSVPs received for this event.
*
* @return int
*/
public function get_total_rsvps() {
/**
* Returns the total RSVP count for an event.
*
* @param int $total_rsvps
* @param int $original_total_rsvps
* @param int $event_id
*/
return (int) apply_filters( 'tribe_tickets_rsvp_get_total_rsvps', $this->total_rsvps, $this->total_rsvps, $this->event_id );
}
/**
* The total number of RSVPs for this event that indicate they are
* going.
*
* @return int
*/
public function get_total_going() {
/**
* Returns the total going count for an event.
*
* @param int $total_going
* @param int $original_total_going
* @param int $event_id
*/
return (int) apply_filters( 'tribe_tickets_rsvp_get_total_going', $this->total_going, $this->total_going, $this->event_id );
}
/**
* The total number of RSVPs for this event that indicate they are
* not going.
*
* @return int
*/
public function get_total_not_going() {
/**
* Returns the total not going count for an event.
*
* @param int $total_not_going
* @param int $original_total_not_going
* @param int $event_id
*/
return (int) apply_filters( 'tribe_tickets_rsvp_get_total_not_going', $this->total_not_going, $this->total_not_going, $this->event_id );
}
}