Tribe__Tickets__Tickets_Handler::migrate_object_capacity( int|WP_Post $object )
Migrates a given Post Object capacity from Legacy Version
Contents
Parameters
- $object
-
(int|WP_Post) (Required) Which Post ID
Return
(bool|int)
Source
File: src/Tribe/Tickets_Handler.php
public function migrate_object_capacity( $object ) {
if ( ! $object instanceof WP_Post ) {
$object = get_post( $object );
}
if ( ! $object instanceof WP_Post ) {
return false;
}
// Bail when we don't have a legacy version
if ( ! tribe( 'tickets.version' )->is_legacy( $object->ID ) ) {
return false;
}
// Defaults to null
$capacity = null;
if ( tribe_tickets_post_type_enabled( $object->post_type ) ) {
$event_stock_obj = new Tribe__Tickets__Global_Stock( $object->ID );
// Fetches the Current Stock Level
$capacity = $event_stock_obj->get_stock_level();
$tickets = $this->get_tickets_ids( $object->ID );
foreach ( $tickets as $ticket ) {
// Indy tickets don't get added to the Event
if ( ! $this->has_shared_capacity( $ticket ) ) {
continue;
}
$totals = $this->get_ticket_totals( $ticket );
$capacity += $totals['sold'] + $totals['pending'];
}
} else {
// In here we deal with Tickets migration from legacy
$mode = get_post_meta( $object->ID, Tribe__Tickets__Global_Stock::TICKET_STOCK_MODE, true );
$totals = $this->get_ticket_totals( $object->ID );
$connections = $this->get_object_connections( $object );
// When migrating we might get Tickets/RSVP without a mode so we set it to Indy Ticket
if ( ! metadata_exists( 'post', $object->ID, Tribe__Tickets__Global_Stock::TICKET_STOCK_MODE ) ) {
$mode = 'own';
}
if ( Tribe__Tickets__Global_Stock::CAPPED_STOCK_MODE === $mode ) {
$capacity = (int) trim( get_post_meta( $object->ID, Tribe__Tickets__Global_Stock::TICKET_STOCK_CAP, true ) );
$capacity += $totals['sold'] + $totals['pending'];
} elseif ( Tribe__Tickets__Global_Stock::GLOBAL_STOCK_MODE === $mode ) {
// When using Global we don't set a ticket cap
$capacity = null;
} elseif ( Tribe__Tickets__Global_Stock::OWN_STOCK_MODE === $mode ) {
/**
* Due to a bug in version 4.5.6 of our code RSVP doesnt lower the Stock
* so when setting up the capacity we need to avoid counting solds
*/
if (
is_object( $connections->provider )
&& 'Tribe__Tickets__RSVP' === get_class( $connections->provider )
) {
$capacity = $totals['stock'];
} else {
$capacity = array_sum( $totals );
}
} else {
$capacity = -1;
}
// Fetch ticket event ID for Updating capacity on event
$event_id = tribe_events_get_ticket_event( $object->ID );
// Apply to the Event
if ( ! empty( $event_id ) ) {
$this->migrate_object_capacity( $event_id );
}
}
// Bail when we didn't have a capacity
if ( is_null( $capacity ) ) {
// Also still update the version, so we don't hit this method all the time
tribe( 'tickets.version' )->update( $object->ID );
return false;
}
$updated = update_post_meta( $object->ID, $this->key_capacity, $capacity );
// If we updated the Capacity for legacy update the version
if ( $updated ) {
tribe( 'tickets.version' )->update( $object->ID );
}
return $capacity;
}
Changelog
| Version | Description |
|---|---|
| 4.6 | Introduced. |