Tribe__Events__Aggregator__Cron::verify_child_record_creation()
Checks if any Child Record needs to be created, this will run on the Cron every 15m
Return
(void)
Source
File: src/Tribe/Aggregator/Cron.php
public function verify_child_record_creation() {
// if the service isn't active, don't do anything
if ( ! tribe( 'events-aggregator.main' )->is_service_active() ) {
return;
}
$records = Tribe__Events__Aggregator__Records::instance();
$service = tribe( 'events-aggregator.service' );
$query = $records->query( array(
'post_status' => Tribe__Events__Aggregator__Records::$status->schedule,
'posts_per_page' => -1,
) );
if ( ! $query->have_posts() ) {
tribe( 'logger' )->log_debug( 'No Records Scheduled, skipped creating children', 'EA Cron' );
return;
}
foreach ( $query->posts as $post ) {
$record = Tribe__Events__Aggregator__Records::instance()->get_by_post_id( $post );
if ( tribe_is_error( $record ) ) {
continue;
}
if ( $record instanceof Tribe__Events__Aggregator__Record__Unsupported ) {
/**
* This means the record post exists but the origin is not currently supported.
* To avoid re-looping on this let's trash this post and continue.
*/
$record->delete( );
continue;
}
if ( ! $record->is_schedule_time() ) {
tribe( 'logger' )->log_debug( sprintf( 'Record (%d) skipped, not scheduled time', $record->id ), 'EA Cron' );
continue;
}
if ( $record->get_child_record_by_status( 'pending', - 1, array( 'after' => time() - 4 * 3600 ) ) ) {
tribe( 'logger' )->log_debug( sprintf( 'Record (%d) skipped, has pending child(ren)', $record->id ), 'EA Cron' );
continue;
}
// if there are no remaining imports for today, log that and skip
if ( $service->is_over_limit( true ) ) {
$import_limit = $service->get_limit( 'import' );
$service_template = $service->get_service_message( 'error:usage-limit-exceeded', array( $import_limit ) );
tribe( 'logger' )->log_debug( sprintf( $service_template . ' (%1$d)', $record->id ), 'EA Cron' );
$record->update_meta( 'last_import_status', 'error:usage-limit-exceeded' );
continue;
}
// Creating the child records based on this Parent
$child = $record->create_child_record();
tribe( 'logger' )->log_debug( sprintf( 'Creating child record %d for %d', $child->id, $record->id ), 'EA Cron' );
if ( ! is_wp_error( $child ) ) {
tribe( 'logger' )->log_debug( sprintf( 'Record %d was created as a child of %d', $child->id, $record->id ), 'EA Cron' );
// Creates on the Service a Queue to Fetch the events
$response = $child->queue_import();
tribe( 'logger' )->log_debug( sprintf( 'Queueing import on EA Service for %d (child of %d)', $child->id, $record->id ), 'EA Cron' );
if ( ! empty( $response->status ) ) {
tribe( 'logger' )->log_debug( sprintf( '%s — %s (%s)', $response->status, $response->message, $response->data->import_id ),
'EA Cron' );
$record->update_meta( 'last_import_status', 'success:queued' );
$this->maybe_process_immediately( $record );
} elseif ( is_numeric( $response ) ) {
// it's the post ID of a rescheduled record
tribe( 'logger' )->log_debug( sprintf( 'rescheduled — %s', $response ), 'EA Cron' );
$record->update_meta( 'last_import_status', 'queued' );
} else {
$message = '';
if ( is_string( $response ) ) {
$message = $response;
} elseif ( is_object( $response ) || is_array( $response ) ) {
$message = json_encode( $response );
}
tribe( 'logger' )->log_debug( 'Could not create Queue on Service, message is ' . $message, 'EA Cron' );
$record->update_meta( 'last_import_status', 'error:import-failed' );
}
} else {
tribe( 'logger' )->log_debug( $child->get_error_message(), 'EA Cron' );
$record->update_meta( 'last_import_status', 'error:import-failed' );
}
}
}
Changelog
| Version | Description |
|---|---|
| 4.3 | Introduced. |