From 66f29789fb66a60485e916ca9eb3225150aee84e Mon Sep 17 00:00:00 2001 From: Emili Castells Guasch Date: Mon, 31 Jul 2023 16:17:17 +0200 Subject: [PATCH] Refactor germanized plugin asset loaded --- modules/ppcp-compat/src/AdminContextTrait.php | 39 +++++++++++++++++++ modules/ppcp-compat/src/CompatModule.php | 30 +++++++++++--- .../src/OrderTrackingModule.php | 33 ++-------------- 3 files changed, 67 insertions(+), 35 deletions(-) create mode 100644 modules/ppcp-compat/src/AdminContextTrait.php diff --git a/modules/ppcp-compat/src/AdminContextTrait.php b/modules/ppcp-compat/src/AdminContextTrait.php new file mode 100644 index 000000000..0720e672e --- /dev/null +++ b/modules/ppcp-compat/src/AdminContextTrait.php @@ -0,0 +1,39 @@ +get_meta( PayPalGateway::ORDER_ID_META_KEY ) ) { + return false; + } + + return true; + } +} diff --git a/modules/ppcp-compat/src/CompatModule.php b/modules/ppcp-compat/src/CompatModule.php index 979056835..70133c1ee 100644 --- a/modules/ppcp-compat/src/CompatModule.php +++ b/modules/ppcp-compat/src/CompatModule.php @@ -20,6 +20,7 @@ use WC_Order; use WooCommerce\PayPalCommerce\Compat\Assets\CompatAssets; use WooCommerce\PayPalCommerce\OrderTracking\Endpoint\OrderTrackingEndpoint; use WooCommerce\PayPalCommerce\WcGateway\Exception\NotFoundException; +use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway; use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings; use WP_Theme; @@ -28,6 +29,8 @@ use WP_Theme; */ class CompatModule implements ModuleInterface { + use AdminContextTrait; + /** * Setup the compatibility module. * @@ -48,14 +51,9 @@ class CompatModule implements ModuleInterface { public function run( ContainerInterface $c ): void { $this->initialize_ppec_compat_layer( $c ); $this->fix_site_ground_optimizer_compatibility( $c ); + $this->initialize_gzd_compat_layer( $c ); - $asset_loader = $c->get( 'compat.assets' ); - assert( $asset_loader instanceof CompatAssets ); - - add_action( 'init', array( $asset_loader, 'register' ) ); - add_action( 'admin_enqueue_scripts', array( $asset_loader, 'enqueue' ) ); - $this->migrate_pay_later_settings( $c ); $this->migrate_smart_button_settings( $c ); @@ -128,6 +126,26 @@ class CompatModule implements ModuleInterface { return; } + add_action( + 'admin_enqueue_scripts', + /** + * Param types removed to avoid third-party issues. + * + * @psalm-suppress MissingClosureParamType + */ + function( $hook ) use ( $c ): void { + if ( $hook !== 'post.php' || ! $this->is_paypal_order_edit_page() ) { + return; + } + + $asset_loader = $c->get( 'compat.assets' ); + assert( $asset_loader instanceof CompatAssets ); + + $asset_loader->register(); + $asset_loader->enqueue(); + } + ); + $endpoint = $c->get( 'order-tracking.endpoint.controller' ); assert( $endpoint instanceof OrderTrackingEndpoint ); diff --git a/modules/ppcp-order-tracking/src/OrderTrackingModule.php b/modules/ppcp-order-tracking/src/OrderTrackingModule.php index d7b289c99..ed8397c44 100644 --- a/modules/ppcp-order-tracking/src/OrderTrackingModule.php +++ b/modules/ppcp-order-tracking/src/OrderTrackingModule.php @@ -9,6 +9,7 @@ declare(strict_types=1); namespace WooCommerce\PayPalCommerce\OrderTracking; +use WooCommerce\PayPalCommerce\Compat\AdminContextTrait; use WooCommerce\PayPalCommerce\Vendor\Dhii\Container\ServiceProvider; use WooCommerce\PayPalCommerce\Vendor\Dhii\Modular\Module\ModuleInterface; use Exception; @@ -19,7 +20,6 @@ use WC_Order; use WooCommerce\PayPalCommerce\OrderTracking\Assets\OrderEditPageAssets; use WooCommerce\PayPalCommerce\OrderTracking\Endpoint\OrderTrackingEndpoint; use WooCommerce\PayPalCommerce\WcGateway\Exception\NotFoundException; -use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway; use WooCommerce\PayPalCommerce\WcGateway\Helper\PayUponInvoiceHelper; use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings; @@ -28,6 +28,8 @@ use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings; */ class OrderTrackingModule implements ModuleInterface { + use AdminContextTrait; + /** * {@inheritDoc} */ @@ -75,11 +77,7 @@ class OrderTrackingModule implements ModuleInterface { * @psalm-suppress MissingClosureParamType */ function ( $hook ) use ( $c ): void { - if ( $hook !== 'post.php' ) { - return; - } - - if ( ! $this->is_paypal_order_edit_page() ) { + if ( $hook !== 'post.php' || ! $this->is_paypal_order_edit_page() ) { return; } @@ -154,27 +152,4 @@ class OrderTrackingModule implements ModuleInterface { } ); } - - /** - * Checks if current post id is from a PayPal order. - * - * @return bool - */ - private function is_paypal_order_edit_page(): bool { - $post_id = isset( $_GET['post'] ) ? (int) $_GET['post'] : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended - if ( ! $post_id ) { - return false; - } - - $order = wc_get_order( $post_id ); - if ( ! is_a( $order, WC_Order::class ) ) { - return false; - } - - if ( ! $order->get_meta( PayPalGateway::ORDER_ID_META_KEY ) ) { - return false; - } - - return true; - } }