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.

Метод класса: CustomOrdersTableController{}

Хуков нет.

Возвращает

null. Ничего (null).

Использование

// private - только в коде основоного (родительского) класса
$result = $this->process_pre_update_option( $value, $option, $old_value );
$value(разное) (обязательный)
New value of the setting.
$option(строка) (обязательный)
Setting name.
$old_value(разное) (обязательный)
Old value of the setting.

Код CustomOrdersTableController::process_pre_update_option() WC 8.9.0

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;
	}

	if ( $old_value === $value ) {
		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;
}