Automattic\WooCommerce\Internal\CLI\Migrator\Core
MigratorTracker::save_session_data
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() 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 );
}