Automattic\WooCommerce\Internal\CLI\Migrator\Core

MigratorTracker::save_session_dataprivateWC 1.0

Save current session data to persistent storage.

Method of the class: MigratorTracker{}

No Hooks.

Returns

null. Nothing (null).

Usage

// private - for code of main (parent) class only
$result = $this->save_session_data(): void;

MigratorTracker::save_session_data() code WC 10.5.0

private function save_session_data(): void {
	$analytics = $this->get_stored_analytics();
	$platform  = $this->current_session['platform'];

	if ( ! isset( $analytics['platforms'][ $platform ] ) ) {
		$analytics['platforms'][ $platform ] = array(
			'total_products_attempted'  => 0,
			'total_products_successful' => 0,
			'total_products_failed'     => 0,
			'total_products_skipped'    => 0,
			'total_sessions'            => 0,
			'total_time'                => 0,
			'product_types'             => array(),
			'last_migration'            => null,
			'dry_run_sessions'          => 0,
		);
	}

	$platform_data = &$analytics['platforms'][ $platform ];

	$products_attempted  = $this->current_session['products_attempted'] ?? 0;
	$products_successful = $this->current_session['products_successful'] ?? 0;
	$products_failed     = $this->current_session['products_failed'] ?? 0;
	$products_skipped    = $this->current_session['products_skipped'] ?? 0;
	$total_time          = $this->current_session['total_time'] ?? 0;
	$completed_at        = $this->current_session['completed_at'] ?? time();
	$product_types       = $this->current_session['product_types'] ?? array();
	$is_dry_run          = $this->current_session['is_dry_run'] ?? false;

	// Update platform statistics.
	if ( ! $is_dry_run ) {
		$platform_data['total_products_attempted']  += $products_attempted;
		$platform_data['total_products_successful'] += $products_successful;
		$platform_data['total_products_failed']     += $products_failed;
		$platform_data['total_products_skipped']    += $products_skipped;
		$platform_data['last_migration']             = $completed_at;
	} else {
		++$platform_data['dry_run_sessions'];
	}

	++$platform_data['total_sessions'];
	$platform_data['total_time'] += $total_time;

	foreach ( $product_types as $type => $count ) {
		if ( ! isset( $platform_data['product_types'][ $type ] ) ) {
			$platform_data['product_types'][ $type ] = 0;
		}
		$platform_data['product_types'][ $type ] += $count;
	}

	if ( ! isset( $analytics['totals'] ) || ! is_array( $analytics['totals'] ) ) {
		$analytics['totals'] = array();
	}

	// Only update global totals for non-dry-run sessions.
	if ( ! $is_dry_run ) {
		$analytics['totals']['products_attempted']  = ( $analytics['totals']['products_attempted'] ?? 0 ) + $products_attempted;
		$analytics['totals']['products_successful'] = ( $analytics['totals']['products_successful'] ?? 0 ) + $products_successful;
		$analytics['totals']['products_failed']     = ( $analytics['totals']['products_failed'] ?? 0 ) + $products_failed;
		$analytics['totals']['products_skipped']    = ( $analytics['totals']['products_skipped'] ?? 0 ) + $products_skipped;
	}

	$analytics['totals']['total_sessions']       = ( $analytics['totals']['total_sessions'] ?? 0 ) + 1;
	$analytics['totals']['total_migration_time'] = ( $analytics['totals']['total_migration_time'] ?? 0 ) + $total_time;
	$analytics['totals']['dry_run_sessions']     = ( $analytics['totals']['dry_run_sessions'] ?? 0 ) + ( $is_dry_run ? 1 : 0 );

	$this->save_analytics( $analytics );
}