File Editor
Directories:
.. (Back)
Status
Files:
Attendance_Totals.php
Status_Manager.php
Create New File
Create
Edit File: 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 ); } }
Save Changes
Rename File
Rename