Automattic\WooCommerce\Internal\DataStores\Orders

CustomOrdersTableController::process_pre_update_option()privateWC 1.0

Handler for the setting pre-update hook. We use it to verify that authoritative orders table switch doesn't happen while sync is pending.

Method of the class: CustomOrdersTableController{}

No Hooks.

Return

null. Nothing (null).

Usage

// private - for code of main (parent) class only
$result = $this->process_pre_update_option( $value, $option, $old_value );
$value(mixed) (required)
New value of the setting.
$option(string) (required)
Setting name.
$old_value(mixed) (required)
Old value of the setting.

CustomOrdersTableController::process_pre_update_option() code WC 8.6.1

private function process_pre_update_option( $value, $option, $old_value ) {
	if ( DataSynchronizer::ORDERS_DATA_SYNC_ENABLED_OPTION === $option && $value !== $old_value ) {
		$this->order_cache->flush();
		return $value;
	}

	if ( self::CUSTOM_ORDERS_TABLE_USAGE_ENABLED_OPTION !== $option ) {
		return $value;
	}

	$this->order_cache->flush();
	if ( ! $this->data_synchronizer->check_orders_table_exists() ) {
		$this->data_synchronizer->create_database_tables();
	}

	$tables_created = get_option( DataSynchronizer::ORDERS_TABLE_CREATED ) === 'yes';
	if ( ! $tables_created ) {
		return 'no';
	}

	$sync_is_pending = 0 !== $this->data_synchronizer->get_current_orders_pending_sync_count();
	if ( $sync_is_pending && ! $this->changing_data_source_with_sync_pending_is_allowed() ) {
		throw new \Exception( "The authoritative table for orders storage can't be changed while there are orders out of sync" );
	}

	return $value;
}