Tribe__Tickets__Tickets_Handler::is_ticket_readable( int $ticket_id )
Determine whether the ticket is accessible to the current user.
Contents
Parameters
- $ticket_id
-
(int) (Required) Ticket ID.
Return
(true|WP_Error) True if the ticket is accessible or a WP_Error if the user cannot access the current ticket at all.
Source
File: src/Tribe/Tickets_Handler.php
public function is_ticket_readable( $ticket_id ) {
$ticket_post = get_post( $ticket_id );
if ( ! $ticket_post instanceof WP_Post ) {
return new WP_Error( 'ticket-not-found', 'ticket-not-found', array( 'status' => 404 ) );
}
$ticket_post_type_object = get_post_type_object( $ticket_post->post_type );
if ( null === $ticket_post_type_object ) {
return new WP_Error( 'ticket-provider-not-found', 'ticket-provider-not-found', array( 'status' => 500 ) );
}
$read_cap = $ticket_post_type_object->cap->read_post;
if ( ! ( 'publish' === $ticket_post->post_status || current_user_can( $read_cap, $ticket_id ) ) ) {
return new WP_Error( 'ticket-not-accessible', 'ticket-not-accessible', array( 'status' => 401 ) );
}
/**
* Not only the ticket should be accessible by the user but the event too should be.
*/
$event = tribe_events_get_ticket_event( $ticket_id );
if ( ! $event instanceof WP_Post ) {
return new WP_Error( 'ticket-not-accessible', 'ticket-not-accessible', array( 'status' => 401 ) );
}
$event_post_type_object = get_post_type_object( $event->post_type );
$read_cap = $event_post_type_object->cap->read_post;
if ( ! ( 'publish' === $event->post_status || current_user_can( $read_cap, $event->ID ) ) ) {
return new WP_Error( 'ticket-not-accessible', 'ticket-not-accessible', array( 'status' => 401 ) );
}
return true;
}
Changelog
| Version | Description |
|---|---|
| 4.11.0 | Introduced. |