Automattic\WooCommerce\Internal\DataStores\Orders

CustomOrdersTableController::add_hpos_toolspublicWC 1.0

Add an entry to Status - Tools to create or regenerate the custom orders table, and also an entry to delete the table as appropriate.

Method of the class: CustomOrdersTableController{}

No Hooks.

Returns

Array. The updated array of tools.

Usage

$CustomOrdersTableController = new CustomOrdersTableController();
$CustomOrdersTableController->add_hpos_tools( $tools_array ): array;
$tools_array(array) (required)
The array of tools to add the tool to.

CustomOrdersTableController::add_hpos_tools() code WC 10.8.1

public function add_hpos_tools( array $tools_array ): array {
	if ( ! $this->data_synchronizer->check_orders_table_exists() ) {
		return $tools_array;
	}

	// Cleanup tool.
	$tools_array = array_merge( $tools_array, $this->data_cleanup->get_tools_entries() );

	// Delete HPOS tables tool.
	if ( $this->custom_orders_table_usage_is_enabled() || $this->data_synchronizer->data_sync_is_enabled() || $this->batch_processing_controller->is_enqueued( get_class( $this->data_synchronizer ) ) ) {
		$disabled = true;
		$message  = __( 'This will delete the custom orders tables. The tables can be deleted only if the "High-Performance order storage" is not authoritative and sync is disabled (via Settings > Advanced > Features).', 'woocommerce' );
	} else {
		$disabled = false;
		$message  = __( 'This will delete the custom orders tables. To create them again enable the "High-Performance order storage" feature (via Settings > Advanced > Features).', 'woocommerce' );
	}

	$tools_array['delete_custom_orders_table'] = array(
		'name'             => __( 'Delete the custom orders tables', 'woocommerce' ),
		'desc'             => sprintf(
			'<strong class="red">%1$s</strong> %2$s',
			__( 'Note:', 'woocommerce' ),
			$message
		),
		'requires_refresh' => true,
		'callback'         => function () use ( $disabled ) {
			if ( $disabled ) {
				return;
			}

			$this->features_controller->change_feature_enable( self::CUSTOM_ORDERS_TABLE_USAGE_ENABLED_OPTION, false );
			$this->delete_custom_orders_tables();
			return __( 'Custom orders tables have been deleted.', 'woocommerce' );
		},
		'button'           => __( 'Delete', 'woocommerce' ),
		'disabled'         => $disabled,
	);

	return $tools_array;
}