Tribe__Tickets__RSVP::delete_ticket( int $event_id, int $ticket_id )

Deletes a ticket


Parameters

$event_id

(int) (Required) The event ID.

$ticket_id

(int) (Required) The ticket ID.


Top ↑

Return

(bool)


Top ↑

Source

File: src/Tribe/RSVP.php

	public function delete_ticket( $event_id, $ticket_id ) {
		// Ensure we know the event and product IDs (the event ID may not have been passed in)
		if ( empty( $event_id ) ) {
			$event_id = get_post_meta( $ticket_id, self::ATTENDEE_EVENT_KEY, true );
		}

		// Additional check (in case we were passed an invalid ticket ID and still can't determine the event)
		if ( empty( $event_id ) ) {
			return false;
		}

		if ( ! tribe( 'tickets.attendees' )->user_can_manage_attendees( 0, $event_id ) ) {
			return false;
		}

		$product_id = get_post_meta( $ticket_id, self::ATTENDEE_PRODUCT_KEY, true );

		// Stock Adjustment handled by $this->update_stock_from_attendees_page()

		// Store name so we can still show it in the attendee list
		$attendees = [];

		if ( get_post_type( $ticket_id ) === $this->ticket_object ) {
			$attendees = $this->get_attendees_by_ticket_id( $ticket_id );
		}

		$post_to_delete = get_post( $ticket_id );

		// Loop through attendees of ticket (if deleting ticket and not a specific attendee).
		foreach ( $attendees as $attendee ) {
			update_post_meta( $attendee['attendee_id'], $this->deleted_product, esc_html( $post_to_delete->post_title ) );
		}

		// Try to kill the actual ticket/attendee post
		$delete = wp_delete_post( $ticket_id, true );
		if ( ! isset( $delete->ID ) || is_wp_error( $delete ) ) {
			return false;
		}

		Tribe__Tickets__Attendance::instance( $event_id )->increment_deleted_attendees_count();
		do_action( 'tickets_rsvp_ticket_deleted', $ticket_id, $event_id, $product_id );
		Tribe__Post_Transient::instance()->delete( $event_id, Tribe__Tickets__Tickets::ATTENDEES_CACHE );

		return true;
	}