Merged in feature/MAW-855-import-code-into-aws (pull request #2)
code import from pantheon * code import from pantheon
This commit is contained in:
@@ -8,12 +8,15 @@
|
||||
|
||||
use Automattic\Jetpack\Constants;
|
||||
use Automattic\WooCommerce\Admin\Notes\Notes;
|
||||
use Automattic\WooCommerce\Internal\DataStores\Orders\{ CustomOrdersTableController, DataSynchronizer, OrdersTableDataStore };
|
||||
use Automattic\WooCommerce\Internal\Features\FeaturesController;
|
||||
use Automattic\WooCommerce\Internal\ProductAttributesLookup\DataRegenerator;
|
||||
use Automattic\WooCommerce\Internal\ProductDownloads\ApprovedDirectories\Register as Download_Directories;
|
||||
use Automattic\WooCommerce\Internal\ProductDownloads\ApprovedDirectories\Synchronize as Download_Directories_Sync;
|
||||
use Automattic\WooCommerce\Internal\Utilities\DatabaseUtil;
|
||||
use Automattic\WooCommerce\Internal\WCCom\ConnectionHelper as WCConnectionHelper;
|
||||
use Automattic\WooCommerce\Internal\Traits\AccessiblePrivateMethods;
|
||||
use Automattic\WooCommerce\Utilities\OrderUtil;
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
@@ -234,6 +237,9 @@ class WC_Install {
|
||||
'7.7.0' => array(
|
||||
'wc_update_770_remove_multichannel_marketing_feature_options',
|
||||
),
|
||||
'8.1.0' => array(
|
||||
'wc_update_810_migrate_transactional_metadata_for_hpos',
|
||||
),
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -249,6 +255,7 @@ class WC_Install {
|
||||
public static function init() {
|
||||
add_action( 'init', array( __CLASS__, 'check_version' ), 5 );
|
||||
add_action( 'init', array( __CLASS__, 'manual_database_update' ), 20 );
|
||||
add_action( 'woocommerce_newly_installed', array( __CLASS__, 'maybe_enable_hpos' ), 20 );
|
||||
add_action( 'admin_init', array( __CLASS__, 'wc_admin_db_update_notice' ) );
|
||||
add_action( 'admin_init', array( __CLASS__, 'add_admin_note_after_page_created' ) );
|
||||
add_action( 'woocommerce_run_update_callback', array( __CLASS__, 'run_update_callback' ) );
|
||||
@@ -480,9 +487,27 @@ class WC_Install {
|
||||
self::create_tables();
|
||||
}
|
||||
|
||||
$schema = self::get_schema();
|
||||
|
||||
$hpos_settings = filter_var_array(
|
||||
array(
|
||||
'cot' => get_option( CustomOrdersTableController::CUSTOM_ORDERS_TABLE_USAGE_ENABLED_OPTION ),
|
||||
'data_sync' => get_option( DataSynchronizer::ORDERS_DATA_SYNC_ENABLED_OPTION ),
|
||||
),
|
||||
array(
|
||||
'cot' => FILTER_VALIDATE_BOOLEAN,
|
||||
'data_sync' => FILTER_VALIDATE_BOOLEAN,
|
||||
)
|
||||
);
|
||||
if ( in_array( true, $hpos_settings, true ) ) {
|
||||
$schema .= wc_get_container()
|
||||
->get( OrdersTableDataStore::class )
|
||||
->get_database_schema();
|
||||
}
|
||||
|
||||
$missing_tables = wc_get_container()
|
||||
->get( DatabaseUtil::class )
|
||||
->get_missing_tables( self::get_schema() );
|
||||
->get_missing_tables( $schema );
|
||||
|
||||
if ( 0 < count( $missing_tables ) ) {
|
||||
if ( $modify_notice ) {
|
||||
@@ -742,15 +767,21 @@ class WC_Install {
|
||||
* Determines the cart shortcode tag used for the cart page.
|
||||
*
|
||||
* @since 2.1.0
|
||||
* @deprecated 8.3.0 This filter is deprecated and will be removed in future versions.
|
||||
*/
|
||||
$cart_shortcode = apply_filters( 'woocommerce_cart_shortcode_tag', 'woocommerce_cart' );
|
||||
$cart_shortcode = apply_filters_deprecated( 'woocommerce_cart_shortcode_tag', array( '' ), '8.3.0', 'woocommerce_create_pages' );
|
||||
|
||||
$cart_page_content = empty( $cart_shortcode ) ? self::get_cart_block_content() : '<!-- wp:shortcode -->[' . $cart_shortcode . ']<!-- /wp:shortcode -->';
|
||||
|
||||
/**
|
||||
* Determines the checkout shortcode tag used on the checkout page.
|
||||
*
|
||||
* @since 2.1.0
|
||||
* @deprecated 8.3.0 This filter is deprecated and will be removed in future versions.
|
||||
*/
|
||||
$checkout_shortcode = apply_filters( 'woocommerce_checkout_shortcode_tag', 'woocommerce_checkout' );
|
||||
$checkout_shortcode = apply_filters_deprecated( 'woocommerce_checkout_shortcode_tag', array( '' ), '8.3.0', 'woocommerce_create_pages' );
|
||||
|
||||
$checkout_page_content = empty( $checkout_shortcode ) ? self::get_checkout_block_content() : '<!-- wp:shortcode -->[' . $checkout_shortcode . ']<!-- /wp:shortcode -->';
|
||||
|
||||
/**
|
||||
* Determines the my account shortcode tag used on the my account page.
|
||||
@@ -775,12 +806,12 @@ class WC_Install {
|
||||
'cart' => array(
|
||||
'name' => _x( 'cart', 'Page slug', 'woocommerce' ),
|
||||
'title' => _x( 'Cart', 'Page title', 'woocommerce' ),
|
||||
'content' => '<!-- wp:shortcode -->[' . $cart_shortcode . ']<!-- /wp:shortcode -->',
|
||||
'content' => $cart_page_content,
|
||||
),
|
||||
'checkout' => array(
|
||||
'name' => _x( 'checkout', 'Page slug', 'woocommerce' ),
|
||||
'title' => _x( 'Checkout', 'Page title', 'woocommerce' ),
|
||||
'content' => '<!-- wp:shortcode -->[' . $checkout_shortcode . ']<!-- /wp:shortcode -->',
|
||||
'content' => $checkout_page_content,
|
||||
),
|
||||
'myaccount' => array(
|
||||
'name' => _x( 'my-account', 'Page slug', 'woocommerce' ),
|
||||
@@ -859,6 +890,51 @@ class WC_Install {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable HPOS by default for new shops.
|
||||
*
|
||||
* @since 8.2.0
|
||||
*/
|
||||
public static function maybe_enable_hpos() {
|
||||
if ( self::should_enable_hpos_for_new_shop() ) {
|
||||
$feature_controller = wc_get_container()->get( FeaturesController::class );
|
||||
$feature_controller->change_feature_enable( 'custom_order_tables', true );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether HPOS should be enabled for new shops.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
private static function should_enable_hpos_for_new_shop() {
|
||||
if ( ! did_action( 'woocommerce_init' ) && ! doing_action( 'woocommerce_init' ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$feature_controller = wc_get_container()->get( FeaturesController::class );
|
||||
|
||||
if ( OrderUtil::custom_orders_table_usage_is_enabled() ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if ( ! empty( wc_get_orders( array( 'limit' => 1 ) ) ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$plugin_compat_info = $feature_controller->get_compatible_plugins_for_feature( 'custom_order_tables', true );
|
||||
if ( ! empty( $plugin_compat_info['incompatible'] ) || ! empty( $plugin_compat_info['uncertain'] ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter to enable HPOS by default for new shops.
|
||||
*
|
||||
* @since 8.2.0
|
||||
*/
|
||||
return apply_filters( 'woocommerce_enable_hpos_by_default_for_new_shops', true );
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete obsolete notes.
|
||||
*/
|
||||
@@ -1142,15 +1218,17 @@ class WC_Install {
|
||||
$collate = $wpdb->get_charset_collate();
|
||||
}
|
||||
|
||||
/*
|
||||
* Indexes have a maximum size of 767 bytes. Historically, we haven't need to be concerned about that.
|
||||
* As of WP 4.2, however, they moved to utf8mb4, which uses 4 bytes per character. This means that an index which
|
||||
* used to have room for floor(767/3) = 255 characters, now only has room for floor(767/4) = 191 characters.
|
||||
*/
|
||||
$max_index_length = 191;
|
||||
$max_index_length = wc_get_container()->get( DatabaseUtil::class )->get_max_index_length();
|
||||
|
||||
$product_attributes_lookup_table_creation_sql = wc_get_container()->get( DataRegenerator::class )->get_table_creation_sql();
|
||||
|
||||
$feature_controller = wc_get_container()->get( FeaturesController::class );
|
||||
$hpos_enabled =
|
||||
$feature_controller->feature_is_enabled( DataSynchronizer::ORDERS_DATA_SYNC_ENABLED_OPTION ) || $feature_controller->feature_is_enabled( CustomOrdersTableController::CUSTOM_ORDERS_TABLE_USAGE_ENABLED_OPTION ) ||
|
||||
self::should_enable_hpos_for_new_shop()
|
||||
;
|
||||
$hpos_table_schema = $hpos_enabled ? wc_get_container()->get( OrdersTableDataStore::class )->get_database_schema() : '';
|
||||
|
||||
$tables = "
|
||||
CREATE TABLE {$wpdb->prefix}woocommerce_sessions (
|
||||
session_id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
@@ -1494,6 +1572,7 @@ CREATE TABLE {$wpdb->prefix}wc_category_lookup (
|
||||
category_id bigint(20) unsigned NOT NULL,
|
||||
PRIMARY KEY (category_tree_id,category_id)
|
||||
) $collate;
|
||||
$hpos_table_schema;
|
||||
";
|
||||
|
||||
return $tables;
|
||||
@@ -2359,6 +2438,182 @@ EOT;
|
||||
add_option( 'woocommerce_refund_returns_page_created', $page_id, '', false );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Cart block content.
|
||||
*
|
||||
* @since 8.3.0
|
||||
* @return string
|
||||
*/
|
||||
protected static function get_cart_block_content() {
|
||||
return '<!-- wp:woocommerce/cart -->
|
||||
<div class="wp-block-woocommerce-cart alignwide is-loading"><!-- wp:woocommerce/filled-cart-block -->
|
||||
<div class="wp-block-woocommerce-filled-cart-block"><!-- wp:woocommerce/cart-items-block -->
|
||||
<div class="wp-block-woocommerce-cart-items-block"><!-- wp:woocommerce/cart-line-items-block -->
|
||||
<div class="wp-block-woocommerce-cart-line-items-block"></div>
|
||||
<!-- /wp:woocommerce/cart-line-items-block -->
|
||||
|
||||
<!-- wp:woocommerce/cart-cross-sells-block -->
|
||||
<div class="wp-block-woocommerce-cart-cross-sells-block"><!-- wp:heading {"fontSize":"large"} -->
|
||||
<h2 class="wp-block-heading has-large-font-size">' . __( 'You may be interested in…', 'woocommerce' ) . '</h2>
|
||||
<!-- /wp:heading -->
|
||||
|
||||
<!-- wp:woocommerce/cart-cross-sells-products-block -->
|
||||
<div class="wp-block-woocommerce-cart-cross-sells-products-block"></div>
|
||||
<!-- /wp:woocommerce/cart-cross-sells-products-block --></div>
|
||||
<!-- /wp:woocommerce/cart-cross-sells-block --></div>
|
||||
<!-- /wp:woocommerce/cart-items-block -->
|
||||
|
||||
<!-- wp:woocommerce/cart-totals-block -->
|
||||
<div class="wp-block-woocommerce-cart-totals-block"><!-- wp:woocommerce/cart-order-summary-block -->
|
||||
<div class="wp-block-woocommerce-cart-order-summary-block"><!-- wp:woocommerce/cart-order-summary-heading-block -->
|
||||
<div class="wp-block-woocommerce-cart-order-summary-heading-block"></div>
|
||||
<!-- /wp:woocommerce/cart-order-summary-heading-block -->
|
||||
|
||||
<!-- wp:woocommerce/cart-order-summary-coupon-form-block -->
|
||||
<div class="wp-block-woocommerce-cart-order-summary-coupon-form-block"></div>
|
||||
<!-- /wp:woocommerce/cart-order-summary-coupon-form-block -->
|
||||
|
||||
<!-- wp:woocommerce/cart-order-summary-subtotal-block -->
|
||||
<div class="wp-block-woocommerce-cart-order-summary-subtotal-block"></div>
|
||||
<!-- /wp:woocommerce/cart-order-summary-subtotal-block -->
|
||||
|
||||
<!-- wp:woocommerce/cart-order-summary-fee-block -->
|
||||
<div class="wp-block-woocommerce-cart-order-summary-fee-block"></div>
|
||||
<!-- /wp:woocommerce/cart-order-summary-fee-block -->
|
||||
|
||||
<!-- wp:woocommerce/cart-order-summary-discount-block -->
|
||||
<div class="wp-block-woocommerce-cart-order-summary-discount-block"></div>
|
||||
<!-- /wp:woocommerce/cart-order-summary-discount-block -->
|
||||
|
||||
<!-- wp:woocommerce/cart-order-summary-shipping-block -->
|
||||
<div class="wp-block-woocommerce-cart-order-summary-shipping-block"></div>
|
||||
<!-- /wp:woocommerce/cart-order-summary-shipping-block -->
|
||||
|
||||
<!-- wp:woocommerce/cart-order-summary-taxes-block -->
|
||||
<div class="wp-block-woocommerce-cart-order-summary-taxes-block"></div>
|
||||
<!-- /wp:woocommerce/cart-order-summary-taxes-block --></div>
|
||||
<!-- /wp:woocommerce/cart-order-summary-block -->
|
||||
|
||||
<!-- wp:woocommerce/cart-express-payment-block -->
|
||||
<div class="wp-block-woocommerce-cart-express-payment-block"></div>
|
||||
<!-- /wp:woocommerce/cart-express-payment-block -->
|
||||
|
||||
<!-- wp:woocommerce/proceed-to-checkout-block -->
|
||||
<div class="wp-block-woocommerce-proceed-to-checkout-block"></div>
|
||||
<!-- /wp:woocommerce/proceed-to-checkout-block -->
|
||||
|
||||
<!-- wp:woocommerce/cart-accepted-payment-methods-block -->
|
||||
<div class="wp-block-woocommerce-cart-accepted-payment-methods-block"></div>
|
||||
<!-- /wp:woocommerce/cart-accepted-payment-methods-block --></div>
|
||||
<!-- /wp:woocommerce/cart-totals-block --></div>
|
||||
<!-- /wp:woocommerce/filled-cart-block -->
|
||||
|
||||
<!-- wp:woocommerce/empty-cart-block -->
|
||||
<div class="wp-block-woocommerce-empty-cart-block"><!-- wp:heading {"textAlign":"center","className":"with-empty-cart-icon wc-block-cart__empty-cart__title"} -->
|
||||
<h2 class="wp-block-heading has-text-align-center with-empty-cart-icon wc-block-cart__empty-cart__title">' . __( 'Your cart is currently empty!', 'woocommerce' ) . '</h2>
|
||||
<!-- /wp:heading -->
|
||||
|
||||
<!-- wp:separator {"className":"is-style-dots"} -->
|
||||
<hr class="wp-block-separator has-alpha-channel-opacity is-style-dots"/>
|
||||
<!-- /wp:separator -->
|
||||
|
||||
<!-- wp:heading {"textAlign":"center"} -->
|
||||
<h2 class="wp-block-heading has-text-align-center">' . __( 'New in store', 'woocommerce' ) . '</h2>
|
||||
<!-- /wp:heading -->
|
||||
|
||||
<!-- wp:woocommerce/product-new {"columns":4,"rows":1} /--></div>
|
||||
<!-- /wp:woocommerce/empty-cart-block --></div>
|
||||
<!-- /wp:woocommerce/cart -->';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Checkout block content.
|
||||
*
|
||||
* @since 8.3.0
|
||||
* @return string
|
||||
*/
|
||||
protected static function get_checkout_block_content() {
|
||||
return '<!-- wp:woocommerce/checkout -->
|
||||
<div class="wp-block-woocommerce-checkout alignwide wc-block-checkout is-loading"><!-- wp:woocommerce/checkout-fields-block -->
|
||||
<div class="wp-block-woocommerce-checkout-fields-block"><!-- wp:woocommerce/checkout-express-payment-block -->
|
||||
<div class="wp-block-woocommerce-checkout-express-payment-block"></div>
|
||||
<!-- /wp:woocommerce/checkout-express-payment-block -->
|
||||
|
||||
<!-- wp:woocommerce/checkout-contact-information-block -->
|
||||
<div class="wp-block-woocommerce-checkout-contact-information-block"></div>
|
||||
<!-- /wp:woocommerce/checkout-contact-information-block -->
|
||||
|
||||
<!-- wp:woocommerce/checkout-shipping-method-block -->
|
||||
<div class="wp-block-woocommerce-checkout-shipping-method-block"></div>
|
||||
<!-- /wp:woocommerce/checkout-shipping-method-block -->
|
||||
|
||||
<!-- wp:woocommerce/checkout-pickup-options-block -->
|
||||
<div class="wp-block-woocommerce-checkout-pickup-options-block"></div>
|
||||
<!-- /wp:woocommerce/checkout-pickup-options-block -->
|
||||
|
||||
<!-- wp:woocommerce/checkout-shipping-address-block -->
|
||||
<div class="wp-block-woocommerce-checkout-shipping-address-block"></div>
|
||||
<!-- /wp:woocommerce/checkout-shipping-address-block -->
|
||||
|
||||
<!-- wp:woocommerce/checkout-billing-address-block -->
|
||||
<div class="wp-block-woocommerce-checkout-billing-address-block"></div>
|
||||
<!-- /wp:woocommerce/checkout-billing-address-block -->
|
||||
|
||||
<!-- wp:woocommerce/checkout-shipping-methods-block -->
|
||||
<div class="wp-block-woocommerce-checkout-shipping-methods-block"></div>
|
||||
<!-- /wp:woocommerce/checkout-shipping-methods-block -->
|
||||
|
||||
<!-- wp:woocommerce/checkout-payment-block -->
|
||||
<div class="wp-block-woocommerce-checkout-payment-block"></div>
|
||||
<!-- /wp:woocommerce/checkout-payment-block -->
|
||||
|
||||
<!-- wp:woocommerce/checkout-order-note-block -->
|
||||
<div class="wp-block-woocommerce-checkout-order-note-block"></div>
|
||||
<!-- /wp:woocommerce/checkout-order-note-block -->
|
||||
|
||||
<!-- wp:woocommerce/checkout-terms-block -->
|
||||
<div class="wp-block-woocommerce-checkout-terms-block"></div>
|
||||
<!-- /wp:woocommerce/checkout-terms-block -->
|
||||
|
||||
<!-- wp:woocommerce/checkout-actions-block -->
|
||||
<div class="wp-block-woocommerce-checkout-actions-block"></div>
|
||||
<!-- /wp:woocommerce/checkout-actions-block --></div>
|
||||
<!-- /wp:woocommerce/checkout-fields-block -->
|
||||
|
||||
<!-- wp:woocommerce/checkout-totals-block -->
|
||||
<div class="wp-block-woocommerce-checkout-totals-block"><!-- wp:woocommerce/checkout-order-summary-block -->
|
||||
<div class="wp-block-woocommerce-checkout-order-summary-block"><!-- wp:woocommerce/checkout-order-summary-cart-items-block -->
|
||||
<div class="wp-block-woocommerce-checkout-order-summary-cart-items-block"></div>
|
||||
<!-- /wp:woocommerce/checkout-order-summary-cart-items-block -->
|
||||
|
||||
<!-- wp:woocommerce/checkout-order-summary-coupon-form-block -->
|
||||
<div class="wp-block-woocommerce-checkout-order-summary-coupon-form-block"></div>
|
||||
<!-- /wp:woocommerce/checkout-order-summary-coupon-form-block -->
|
||||
|
||||
<!-- wp:woocommerce/checkout-order-summary-subtotal-block -->
|
||||
<div class="wp-block-woocommerce-checkout-order-summary-subtotal-block"></div>
|
||||
<!-- /wp:woocommerce/checkout-order-summary-subtotal-block -->
|
||||
|
||||
<!-- wp:woocommerce/checkout-order-summary-fee-block -->
|
||||
<div class="wp-block-woocommerce-checkout-order-summary-fee-block"></div>
|
||||
<!-- /wp:woocommerce/checkout-order-summary-fee-block -->
|
||||
|
||||
<!-- wp:woocommerce/checkout-order-summary-discount-block -->
|
||||
<div class="wp-block-woocommerce-checkout-order-summary-discount-block"></div>
|
||||
<!-- /wp:woocommerce/checkout-order-summary-discount-block -->
|
||||
|
||||
<!-- wp:woocommerce/checkout-order-summary-shipping-block -->
|
||||
<div class="wp-block-woocommerce-checkout-order-summary-shipping-block"></div>
|
||||
<!-- /wp:woocommerce/checkout-order-summary-shipping-block -->
|
||||
|
||||
<!-- wp:woocommerce/checkout-order-summary-taxes-block -->
|
||||
<div class="wp-block-woocommerce-checkout-order-summary-taxes-block"></div>
|
||||
<!-- /wp:woocommerce/checkout-order-summary-taxes-block --></div>
|
||||
<!-- /wp:woocommerce/checkout-order-summary-block --></div>
|
||||
<!-- /wp:woocommerce/checkout-totals-block --></div>
|
||||
<!-- /wp:woocommerce/checkout -->';
|
||||
}
|
||||
}
|
||||
|
||||
WC_Install::init();
|
||||
|
||||
Reference in New Issue
Block a user