File "class-checkout-order-date-blocks-integration.php"
Full Path: /home/romayxjt/public_html/wp-content/plugins/orderable/inc/modules/checkout/blocks/order-date/class-checkout-order-date-blocks-integration.php
File size: 4.26 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Checkout Order Date Blocks Integration.
*
* @package orderable
*/
use Automattic\WooCommerce\Blocks\Integrations\IntegrationInterface;
/**
* Class for integrating with WooCommerce Blocks
*/
class Checkout_Order_Date_Blocks_Integration implements IntegrationInterface {
/**
* The name of the integration.
*
* @return string
*/
public function get_name() {
return 'orderable';
}
/**
* When called invokes any initialization/setup for the integration.
*/
public function initialize() {
$this->register_checkout_block_frontend_scripts();
$this->register_checkout_block_editor_scripts();
$this->register_main_integration();
}
/**
* Returns an array of script handles to enqueue in the frontend context.
*
* @return string[]
*/
public function get_script_handles() {
return array( 'orderable-order-date-blocks-integration', 'orderable-order-date-block-frontend' );
}
/**
* Returns an array of script handles to enqueue in the editor context.
*
* @return string[]
*/
public function get_editor_script_handles() {
return array( 'orderable-order-date-blocks-integration', 'checkout-order-date-block-editor' );
}
/**
* An array of key, value pairs of data made available to the block on the client side.
*
* @return array
*/
public function get_script_data() {
$data = array();
return $data;
}
/**
* Registers the frontend block scripts.
*/
public function register_checkout_block_frontend_scripts() {
$script_path = '/build/checkout-order-date-block-frontend.js';
$script_url = plugins_url( $script_path, __FILE__ );
$script_asset_path = dirname( __FILE__ ) . '/build/checkout-order-date-block-frontend.asset.php';
$script_asset = file_exists( $script_asset_path )
? require $script_asset_path
: array(
'dependencies' => array(),
'version' => ORDERABLE_VERSION,
);
wp_register_script(
'orderable-order-date-block-frontend',
$script_url,
$script_asset['dependencies'],
$script_asset['version'],
true
);
}
/**
* Registers the editor block scripts.
*/
public function register_checkout_block_editor_scripts() {
$script_path = '/build/checkout-order-date-block.js';
$script_url = plugins_url( $script_path, __FILE__ );
$script_asset_path = dirname( __FILE__ ) . '/build/checkout-order-date-block.asset.php';
$script_asset = file_exists( $script_asset_path )
? require $script_asset_path
: array(
'dependencies' => array(),
'version' => ORDERABLE_VERSION,
);
wp_register_script(
'checkout-order-date-block-editor',
$script_url,
$script_asset['dependencies'],
$script_asset['version'],
true
);
}
/**
* Registers the main integration JS files.
*/
private function register_main_integration() {
$script_path = '/build/index.js';
$script_url = plugins_url( $script_path, __FILE__ );
$script_asset_path = dirname( __FILE__ ) . '/build/index.asset.php';
$script_asset = file_exists( $script_asset_path )
? require $script_asset_path
: array(
'dependencies' => array(),
'version' => ORDERABLE_VERSION,
);
wp_register_script(
'orderable-order-date-blocks-integration',
$script_url,
$script_asset['dependencies'],
$script_asset['version'],
true
);
}
/**
* Save the order service date fields.
*
* @param WC_Order $order The order object.
* @param WP_REST_Request $request The request object.
*/
public static function save_order_service_date_fields( $order, $request ) {
$orderable_request_data = $request['extensions']['orderable/order-service-date'] ?? false;
if ( empty( $orderable_request_data['timestamp'] ) ) {
return;
}
if ( 'asap' === $orderable_request_data['timestamp'] ) {
$order->update_meta_data( 'orderable_order_date', __( 'As soon as possible', 'orderable' ) );
$order->save();
return;
}
$date_format = get_option( 'date_format' );
$timestamp_adjusted = Orderable_Timings::get_timestamp_adjusted( $orderable_request_data['timestamp'] );
$order_date_formatted = date_i18n( $date_format, $timestamp_adjusted );
$order->update_meta_data( '_orderable_order_timestamp', $timestamp_adjusted );
$order->update_meta_data( 'orderable_order_date', $order_date_formatted );
$order->save();
}
}