Automattic\WooCommerce\Internal\CLI\Migrator\Core
ProductsController::handle_existing_session
Handle existing session with user prompt for resume decision.
Method of the class: ProductsController{}
No Hooks.
Returns
ImportSession|null. Session to use or null on error.
Usage
// private - for code of main (parent) class only $result = $this->handle_existing_session( $session, $parsed_args ): ?ImportSession;
- $session(ImportSession) (required)
- The existing session.
- $parsed_args(array) (required)
- Parsed command arguments.
ProductsController::handle_existing_session() ProductsController::handle existing session code WC 10.8.1
private function handle_existing_session( ImportSession $session, array $parsed_args ): ?ImportSession {
// Display session information.
$metadata = $session->get_metadata();
$total_imported = $session->count_all_imported_entities();
$total_entities = $session->count_all_total_entities();
$started_timestamp = $session->get_started_at();
$started_at = is_numeric( $started_timestamp ) ?
get_date_from_gmt( gmdate( 'Y-m-d H:i:s', (int) $started_timestamp ) ) :
$started_timestamp;
WP_CLI::line( '' );
WP_CLI::line( WP_CLI::colorize( '%YExisting Migration Session Found:%n' ) );
WP_CLI::line( sprintf( ' Session ID: %d', $session->get_id() ) );
WP_CLI::line( sprintf( ' Platform: %s', $metadata['data_source'] ) );
WP_CLI::line( sprintf( ' Started: %s', $started_at ) );
WP_CLI::line( sprintf( ' Progress: %d / %d products imported', $total_imported, $total_entities ) );
if ( ( $parsed_args['verbose'] ?? false ) && $session->get_reentrancy_cursor() ) {
WP_CLI::line( sprintf( ' Last Cursor: %s', substr( $session->get_reentrancy_cursor(), 0, 50 ) . '...' ) );
}
$original_args = $session->get_original_arguments();
if ( $original_args ) {
WP_CLI::line( '' );
WP_CLI::line( WP_CLI::colorize( '%YOriginal Command Arguments:%n' ) );
$this->display_saved_arguments( $original_args );
}
WP_CLI::line( '' );
$should_resume = $parsed_args['resume'] ?? false;
if ( ! $should_resume ) {
WP_CLI::out( 'Do you want to resume this migration session? [y/n] ' );
$answer = $this->get_user_input();
if ( 'y' === $answer ) {
$should_resume = true;
} else {
$should_resume = false;
}
}
if ( $should_resume ) {
WP_CLI::success( sprintf( 'Resuming migration session %d', $session->get_id() ) );
$original_args = $session->get_original_arguments();
if ( $original_args ) {
$this->restore_original_arguments( $original_args );
WP_CLI::line( 'Original command arguments have been restored.' );
}
return $session;
} else {
$session->archive();
WP_CLI::line( 'Previous session archived. Starting a new import session.' );
$new_session = $this->create_new_session( $parsed_args );
if ( $new_session ) {
WP_CLI::success( sprintf( 'Starting fresh migration from the beginning (Session %d)', $new_session->get_id() ) );
}
return $new_session;
}
}