From 19c069c6173b5b23e55772b5eb8d0f14edb5e71a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20P=C3=A9rez=20Pellicer?= <5908855+puntope@users.noreply.github.com> Date: Tue, 20 Aug 2024 15:23:13 +0400 Subject: [PATCH 01/28] Use remote-site-status to check the WPCOM Auth status --- src/API/WP/NotificationsService.php | 14 ++++- src/ConnectionTest.php | 5 +- .../CoreServiceProvider.php | 3 +- src/MerchantCenter/AccountService.php | 56 ++++++++++++++++++ src/Options/TransientsInterface.php | 2 + .../Unit/API/WP/NotificationsServiceTest.php | 25 +++++++- .../MerchantCenter/AccountServiceTest.php | 58 +++++++++++++++++++ 7 files changed, 156 insertions(+), 7 deletions(-) diff --git a/src/API/WP/NotificationsService.php b/src/API/WP/NotificationsService.php index b1892e7de2..3080369896 100644 --- a/src/API/WP/NotificationsService.php +++ b/src/API/WP/NotificationsService.php @@ -5,6 +5,7 @@ use Automattic\Jetpack\Connection\Client; use Automattic\WooCommerce\GoogleListingsAndAds\Infrastructure\Service; +use Automattic\WooCommerce\GoogleListingsAndAds\MerchantCenter\AccountService; use Automattic\WooCommerce\GoogleListingsAndAds\MerchantCenter\MerchantCenterService; use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsAwareInterface; use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsAwareTrait; @@ -59,15 +60,24 @@ class NotificationsService implements Service, OptionsAwareInterface { */ public MerchantCenterService $merchant_center; + /** + * The AccountService service + * + * @var AccountService $account_service + */ + public AccountService $account_service; + /** * Class constructor * * @param MerchantCenterService $merchant_center + * @param AccountService $account_service */ - public function __construct( MerchantCenterService $merchant_center ) { + public function __construct( MerchantCenterService $merchant_center, AccountService $account_service ) { $blog_id = Jetpack_Options::get_option( 'id' ); $this->merchant_center = $merchant_center; + $this->account_service = $account_service; $this->notification_url = "https://public-api.wordpress.com/wpcom/v2/sites/{$blog_id}/partners/google/notifications"; } @@ -164,7 +174,7 @@ public function get_notification_url(): string { * @return bool */ public function is_ready(): bool { - return $this->options->is_wpcom_api_authorized() && $this->is_enabled() && $this->merchant_center->is_ready_for_syncing(); + return $this->options->is_wpcom_api_authorized() && $this->is_enabled() && $this->merchant_center->is_ready_for_syncing() && $this->account_service->is_wpcom_api_status_healthy(); } /** diff --git a/src/ConnectionTest.php b/src/ConnectionTest.php index 578025e257..6a4b1e52b8 100644 --- a/src/ConnectionTest.php +++ b/src/ConnectionTest.php @@ -23,6 +23,7 @@ use Automattic\WooCommerce\GoogleListingsAndAds\Jobs\DeleteAllProducts; use Automattic\WooCommerce\GoogleListingsAndAds\Jobs\UpdateAllProducts; use Automattic\WooCommerce\GoogleListingsAndAds\Jobs\UpdateProducts; +use Automattic\WooCommerce\GoogleListingsAndAds\MerchantCenter\AccountService; use Automattic\WooCommerce\GoogleListingsAndAds\MerchantCenter\MerchantCenterService; use Automattic\WooCommerce\GoogleListingsAndAds\MerchantCenter\MerchantStatuses; use Automattic\WooCommerce\GoogleListingsAndAds\Options\AdsAccountState; @@ -652,7 +653,7 @@ protected function render_admin_page() { container->get( OptionsInterface::class ); $wp_api_status = $options->get( OptionsInterface::WPCOM_REST_API_STATUS ); - $notification_service = new NotificationsService( $this->container->get( MerchantCenterService::class ) ); + $notification_service = new NotificationsService( $this->container->get( MerchantCenterService::class ), $this->container->get( AccountService::class ) ); $notification_service->set_options_object( $options ); ?>

Partner API Pull Integration

@@ -865,7 +866,7 @@ protected function handle_actions() { $mc = $this->container->get( MerchantCenterService::class ); /** @var OptionsInterface $options */ $options = $this->container->get( OptionsInterface::class ); - $service = new NotificationsService( $mc ); + $service = new NotificationsService( $mc, $this->container->get( AccountService::class ) ); $service->set_options_object( $options ); if ( $service->notify( $topic, $item ) ) { diff --git a/src/Internal/DependencyManagement/CoreServiceProvider.php b/src/Internal/DependencyManagement/CoreServiceProvider.php index ad4bc1274f..e717221143 100644 --- a/src/Internal/DependencyManagement/CoreServiceProvider.php +++ b/src/Internal/DependencyManagement/CoreServiceProvider.php @@ -65,6 +65,7 @@ use Automattic\WooCommerce\GoogleListingsAndAds\Menu\Settings; use Automattic\WooCommerce\GoogleListingsAndAds\Menu\SetupAds; use Automattic\WooCommerce\GoogleListingsAndAds\Menu\SetupMerchantCenter; +use Automattic\WooCommerce\GoogleListingsAndAds\MerchantCenter\AccountService; use Automattic\WooCommerce\GoogleListingsAndAds\MerchantCenter\AccountService as MerchantAccountService; use Automattic\WooCommerce\GoogleListingsAndAds\MerchantCenter\ContactInformation; use Automattic\WooCommerce\GoogleListingsAndAds\MerchantCenter\MerchantCenterAwareInterface; @@ -254,7 +255,7 @@ public function register(): void { $this->share_with_tags( MerchantCenterService::class ); // Set up Notifications service. - $this->share_with_tags( NotificationsService::class, MerchantCenterService::class ); + $this->share_with_tags( NotificationsService::class, MerchantCenterService::class, AccountService::class ); // Set up OAuthService service. $this->share_with_tags( OAuthService::class ); diff --git a/src/MerchantCenter/AccountService.php b/src/MerchantCenter/AccountService.php index c87b3a3951..445a954ce1 100644 --- a/src/MerchantCenter/AccountService.php +++ b/src/MerchantCenter/AccountService.php @@ -3,11 +3,13 @@ namespace Automattic\WooCommerce\GoogleListingsAndAds\MerchantCenter; +use Automattic\Jetpack\Connection\Client; use Automattic\WooCommerce\GoogleListingsAndAds\API\Google\Ads; use Automattic\WooCommerce\GoogleListingsAndAds\API\Google\Merchant; use Automattic\WooCommerce\GoogleListingsAndAds\API\Google\Middleware; use Automattic\WooCommerce\GoogleListingsAndAds\API\Google\SiteVerification; use Automattic\WooCommerce\GoogleListingsAndAds\API\WP\NotificationsService; +use Automattic\WooCommerce\GoogleListingsAndAds\API\WP\OAuthService; use Automattic\WooCommerce\GoogleListingsAndAds\DB\Table\MerchantIssueTable; use Automattic\WooCommerce\GoogleListingsAndAds\DB\Table\ShippingRateTable; use Automattic\WooCommerce\GoogleListingsAndAds\DB\Table\ShippingTimeTable; @@ -227,6 +229,11 @@ public function get_connected_status(): array { $id = $this->options->get_merchant_id(); $wpcom_rest_api_status = $this->options->get( OptionsInterface::WPCOM_REST_API_STATUS ); + // If token is revoked outside the extension. Set the status as error to force the merchant to grant access again. + if ( $wpcom_rest_api_status === 'approved' && ! $this->is_wpcom_api_status_healthy() ) { + $wpcom_rest_api_status = OAuthService::STATUS_ERROR; + } + $status = [ 'id' => $id, 'status' => $id ? 'connected' : 'disconnected', @@ -539,6 +546,7 @@ private function prepare_exception( string $message, array $data = [], int $code */ public function reset_wpcom_api_authorization_data(): bool { $this->delete_wpcom_api_auth_nonce(); + $this->delete_wpcom_api_status_transient(); return $this->options->delete( OptionsInterface::WPCOM_REST_API_STATUS ); } @@ -592,6 +600,7 @@ public function update_wpcom_api_authorization( string $status, string $nonce ): ] ); + $this->delete_wpcom_api_status_transient(); return $this->options->update( OptionsInterface::WPCOM_REST_API_STATUS, $status ); } catch ( ExceptionWithResponseData $e ) { @@ -623,4 +632,51 @@ public function update_wpcom_api_authorization( string $status, string $nonce ): public function delete_wpcom_api_auth_nonce(): bool { return $this->options->delete( OptionsInterface::GOOGLE_WPCOM_AUTH_NONCE ); } + + /** + * Deletes the transient storing the WPCOM Status data. + */ + public function delete_wpcom_api_status_transient(): void { + $transients = $this->container->get( TransientsInterface::class ); + $transients->delete( TransientsInterface::WPCOM_API_STATUS ); + } + + /** + * Check if the WPCOM API Status is healthy by doing a request to /wc/partners/google/remote-site-status endpoint in WPCOM. + * + * @return bool True when the status is healthy, false otherwise. + */ + public function is_wpcom_api_status_healthy() { + /** @var TransientsInterface $transients */ + $transients = $this->container->get( TransientsInterface::class ); + $status = $transients->get( TransientsInterface::WPCOM_API_STATUS ); + + if ( ! $status ) { + + $integration_status_args = [ + 'method' => 'GET', + 'timeout' => 30, + 'url' => 'https://public-api.wordpress.com/wpcom/v2/sites/' . Jetpack_Options::get_option( 'id' ) . '/wc/partners/google/remote-site-status', + 'user_id' => get_current_user_id(), + ]; + + $integration_remote_request_response = Client::remote_request( $integration_status_args, null ); + + if ( is_wp_error( $integration_remote_request_response ) ) { + $this->delete_wpcom_api_status_transient(); + return false; + } + + $status = json_decode( wp_remote_retrieve_body( $integration_remote_request_response ), true ) ?? []; + + if ( isset( $status['error'] ) ) { + $this->delete_wpcom_api_status_transient(); + return false; + } + + $transients->set( TransientsInterface::WPCOM_API_STATUS, $status, MINUTE_IN_SECONDS * 30 ); + } + + return isset( $status['is_healthy'] ) && $status['is_healthy'] && $status['is_wc_rest_api_healthy'] && $status['is_partner_token_healthy']; + } } diff --git a/src/Options/TransientsInterface.php b/src/Options/TransientsInterface.php index 53c9b267ab..6500957687 100644 --- a/src/Options/TransientsInterface.php +++ b/src/Options/TransientsInterface.php @@ -17,6 +17,7 @@ interface TransientsInterface { public const MC_IS_SUBACCOUNT = 'mc_is_subaccount'; public const MC_STATUSES = 'mc_statuses'; public const URL_MATCHES = 'url_matches'; + public const WPCOM_API_STATUS = 'wpcom_api_status'; public const VALID_OPTIONS = [ self::ADS_CAMPAIGN_COUNT => true, @@ -26,6 +27,7 @@ interface TransientsInterface { self::MC_IS_SUBACCOUNT => true, self::MC_STATUSES => true, self::URL_MATCHES => true, + self::WPCOM_API_STATUS => true, ]; /** diff --git a/tests/Unit/API/WP/NotificationsServiceTest.php b/tests/Unit/API/WP/NotificationsServiceTest.php index 7d43d09516..d952e98d8e 100644 --- a/tests/Unit/API/WP/NotificationsServiceTest.php +++ b/tests/Unit/API/WP/NotificationsServiceTest.php @@ -5,6 +5,8 @@ use Automattic\WooCommerce\Admin\RemoteInboxNotifications\TransformerService; use Automattic\WooCommerce\GoogleListingsAndAds\API\WP\NotificationsService; +use Automattic\WooCommerce\GoogleListingsAndAds\API\WP\OAuthService; +use Automattic\WooCommerce\GoogleListingsAndAds\MerchantCenter\AccountService; use Automattic\WooCommerce\GoogleListingsAndAds\MerchantCenter\MerchantCenterService; use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsInterface; use Automattic\WooCommerce\GoogleListingsAndAds\Tests\Framework\UnitTest; @@ -30,6 +32,11 @@ class NotificationsServiceTest extends UnitTest { */ public $merchant_center; + /** + * @var MockObject|AccountService + */ + public $account; + public const DUMMY_BLOG_ID = '123'; // List of Topics to be used. @@ -207,22 +214,36 @@ public function test_notify_show_error_when_disabled() { remove_filter( 'woocommerce_gla_notifications_enabled', '__return_false' ); } + /** + * Test notify() function logs an error when WPCOM Auth is not healthy + */ + public function test_notify_show_error_when_wpcom_not_healthy() { + $this->service = $this->get_mock( true, true, false ); + $this->service->expects( $this->never() )->method( 'do_request' ); + $this->assertFalse( $this->service->notify( 'product.create', 1 ) ); + $this->assertEquals( did_action( 'woocommerce_gla_error' ), 1 ); + } + + /** * Mocks the service * * @param bool $mc_ready * @param bool $wpcom_authorized + * @param bool $is_wpcom_api_status_healthy * @return TransformerService */ - public function get_mock( $mc_ready = true, $wpcom_authorized = true ) { + public function get_mock( $mc_ready = true, $wpcom_authorized = true, $is_wpcom_api_status_healthy = true ) { $this->merchant_center = $this->createMock( MerchantCenterService::class ); $this->merchant_center->method( 'is_ready_for_syncing' )->willReturn( $mc_ready ); + $this->account = $this->createMock( AccountService::class ); + $this->account->method( 'is_wpcom_api_status_healthy' )->willReturn( $is_wpcom_api_status_healthy ); $this->options = $this->createMock( OptionsInterface::class ); $this->options->method( 'is_wpcom_api_authorized' )->willReturn( $wpcom_authorized ); /** @var NotificationsService $mock */ $mock = $this->getMockBuilder( NotificationsService::class ) - ->setConstructorArgs( [ $this->merchant_center ] ) + ->setConstructorArgs( [ $this->merchant_center, $this->account ] ) ->onlyMethods( [ 'do_request' ] ) ->getMock(); $mock->set_options_object( $this->options ); diff --git a/tests/Unit/MerchantCenter/AccountServiceTest.php b/tests/Unit/MerchantCenter/AccountServiceTest.php index 17f3f7b975..4962c04bdf 100644 --- a/tests/Unit/MerchantCenter/AccountServiceTest.php +++ b/tests/Unit/MerchantCenter/AccountServiceTest.php @@ -762,6 +762,17 @@ public function test_get_connected_status() { ->method( 'is_enabled' ) ->willReturn( true ); + $this->transients->expects( $this->exactly( 1 ) ) + ->method( 'get' ) + ->with( TransientsInterface::WPCOM_API_STATUS ) + ->willReturn( + [ + 'is_healthy' => true, + 'is_wc_rest_api_healthy' => true, + 'is_partner_token_healthy' => true, + ] + ); + $this->options->method( 'get' ) ->with( OptionsInterface::WPCOM_REST_API_STATUS ) ->willReturn( 'approved' ); @@ -786,6 +797,17 @@ public function test_get_connected_status_when_notifications_disabled() { ->method( 'is_enabled' ) ->willReturn( false ); + $this->transients->expects( $this->exactly( 1 ) ) + ->method( 'get' ) + ->with( TransientsInterface::WPCOM_API_STATUS ) + ->willReturn( + [ + 'is_healthy' => true, + 'is_wc_rest_api_healthy' => true, + 'is_partner_token_healthy' => true, + ] + ); + $this->options->method( 'get' ) ->with( OptionsInterface::WPCOM_REST_API_STATUS ) ->willReturn( 'approved' ); @@ -826,6 +848,42 @@ public function test_get_connected_status_incomplete() { ); } + public function test_get_connected_status_not_healthy() { + $this->options->expects( $this->once() ) + ->method( 'get_merchant_id' ) + ->willReturn( self::TEST_ACCOUNT_ID ); + + $this->notifications_service->expects( $this->once() ) + ->method( 'is_enabled' ) + ->willReturn( true ); + + $this->transients->expects( $this->exactly( 1 ) ) + ->method( 'get' ) + ->with( TransientsInterface::WPCOM_API_STATUS ) + ->willReturn( + [ + 'is_healthy' => true, + 'is_wc_rest_api_healthy' => true, + 'is_partner_token_healthy' => false, + ] + ); + + $this->options->method( 'get' ) + ->with( OptionsInterface::WPCOM_REST_API_STATUS ) + ->willReturn( 'approved' ); + + $this->assertEquals( + [ + 'id' => self::TEST_ACCOUNT_ID, + 'status' => 'connected', + 'notification_service_enabled' => true, + 'wpcom_rest_api_status' => 'error', + ], + $this->account->get_connected_status() + ); + } + + public function test_get_setup_status() { $this->mc_service->expects( $this->once() ) ->method( 'get_setup_status' ) From e8e51f30affac3f3eda6cb5d179067311e4b15f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20P=C3=A9rez=20Pellicer?= <5908855+puntope@users.noreply.github.com> Date: Tue, 20 Aug 2024 18:38:32 +0400 Subject: [PATCH 02/28] PHPCS --- src/API/WP/NotificationsService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/API/WP/NotificationsService.php b/src/API/WP/NotificationsService.php index 3080369896..ee1f6e5e57 100644 --- a/src/API/WP/NotificationsService.php +++ b/src/API/WP/NotificationsService.php @@ -72,7 +72,7 @@ class NotificationsService implements Service, OptionsAwareInterface { * Class constructor * * @param MerchantCenterService $merchant_center - * @param AccountService $account_service + * @param AccountService $account_service */ public function __construct( MerchantCenterService $merchant_center, AccountService $account_service ) { $blog_id = Jetpack_Options::get_option( 'id' ); From 38254c10bc5393db8f329165789b9290bb9f0341 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20P=C3=A9rez=20Pellicer?= <5908855+puntope@users.noreply.github.com> Date: Thu, 22 Aug 2024 18:56:29 +0400 Subject: [PATCH 03/28] Remove unused dependency --- tests/Unit/API/WP/NotificationsServiceTest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/Unit/API/WP/NotificationsServiceTest.php b/tests/Unit/API/WP/NotificationsServiceTest.php index d952e98d8e..e2e18a311f 100644 --- a/tests/Unit/API/WP/NotificationsServiceTest.php +++ b/tests/Unit/API/WP/NotificationsServiceTest.php @@ -5,7 +5,6 @@ use Automattic\WooCommerce\Admin\RemoteInboxNotifications\TransformerService; use Automattic\WooCommerce\GoogleListingsAndAds\API\WP\NotificationsService; -use Automattic\WooCommerce\GoogleListingsAndAds\API\WP\OAuthService; use Automattic\WooCommerce\GoogleListingsAndAds\MerchantCenter\AccountService; use Automattic\WooCommerce\GoogleListingsAndAds\MerchantCenter\MerchantCenterService; use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsInterface; From 857e074f9cc8eaa6e3fcff1a11bc2c08a5963ecb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20P=C3=A9rez=20Pellicer?= <5908855+puntope@users.noreply.github.com> Date: Thu, 22 Aug 2024 19:11:41 +0400 Subject: [PATCH 04/28] Prevent loop and excessive request. --- src/API/WP/NotificationsService.php | 5 +++-- src/MerchantCenter/AccountService.php | 6 ------ src/Settings/SyncerHooks.php | 2 +- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/API/WP/NotificationsService.php b/src/API/WP/NotificationsService.php index ee1f6e5e57..0d425300ab 100644 --- a/src/API/WP/NotificationsService.php +++ b/src/API/WP/NotificationsService.php @@ -171,10 +171,11 @@ public function get_notification_url(): string { * If the Notifications are ready * This happens when the WPCOM API is Authorized and the feature is enabled. * + * @param bool $with_health_check If true. Performs a remote request to WPCOM API to get the status. * @return bool */ - public function is_ready(): bool { - return $this->options->is_wpcom_api_authorized() && $this->is_enabled() && $this->merchant_center->is_ready_for_syncing() && $this->account_service->is_wpcom_api_status_healthy(); + public function is_ready( bool $with_health_check = true ): bool { + return $this->options->is_wpcom_api_authorized() && $this->is_enabled() && $this->merchant_center->is_ready_for_syncing() && ( $with_health_check === false || $this->account_service->is_wpcom_api_status_healthy() ); } /** diff --git a/src/MerchantCenter/AccountService.php b/src/MerchantCenter/AccountService.php index 445a954ce1..9ebd1c8bf8 100644 --- a/src/MerchantCenter/AccountService.php +++ b/src/MerchantCenter/AccountService.php @@ -668,12 +668,6 @@ public function is_wpcom_api_status_healthy() { } $status = json_decode( wp_remote_retrieve_body( $integration_remote_request_response ), true ) ?? []; - - if ( isset( $status['error'] ) ) { - $this->delete_wpcom_api_status_transient(); - return false; - } - $transients->set( TransientsInterface::WPCOM_API_STATUS, $status, MINUTE_IN_SECONDS * 30 ); } diff --git a/src/Settings/SyncerHooks.php b/src/Settings/SyncerHooks.php index 5e4e8fb040..3be4f35799 100644 --- a/src/Settings/SyncerHooks.php +++ b/src/Settings/SyncerHooks.php @@ -80,7 +80,7 @@ public function __construct( JobRepository $job_repository, NotificationsService * Register the service. */ public function register(): void { - if ( ! $this->notifications_service->is_ready() ) { + if ( ! $this->notifications_service->is_ready( false ) ) { return; } From 435b02e70ab418b06e5be2c1d2bd2ba5517bb7eb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 27 Aug 2024 23:46:04 +0000 Subject: [PATCH 05/28] Bump webpack from 5.93.0 to 5.94.0 Bumps [webpack](https://github.com/webpack/webpack) from 5.93.0 to 5.94.0. - [Release notes](https://github.com/webpack/webpack/releases) - [Commits](https://github.com/webpack/webpack/compare/v5.93.0...v5.94.0) --- updated-dependencies: - dependency-name: webpack dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 37 ++++++------------------------------- 1 file changed, 6 insertions(+), 31 deletions(-) diff --git a/package-lock.json b/package-lock.json index 02eb015f7d..d82badc4e6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "packages": { "": { "name": "google-listings-and-ads", - "version": "2.8.3", + "version": "2.8.4", "license": "GPL-3.0-or-later", "dependencies": { "@woocommerce/components": "^12.3.0", @@ -6558,34 +6558,11 @@ "integrity": "sha512-xdDXbpVO74EvadI3UDxjxTdR6QIxm1FKzEA/+F8tL4GWWUg/hgvBqf6chql64U5A9ZUGWo7pEu4eNlyLwbKdhg==", "license": "MIT" }, - "node_modules/@types/eslint": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.0.tgz", - "integrity": "sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/express": { "version": "4.17.21", @@ -32175,13 +32152,11 @@ } }, "node_modules/webpack": { - "version": "5.93.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz", - "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==", + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", "dev": true, - "license": "MIT", "dependencies": { - "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.12.1", "@webassemblyjs/wasm-edit": "^1.12.1", @@ -32190,7 +32165,7 @@ "acorn-import-attributes": "^1.9.5", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.0", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", From 75af8e21bb88aefa8f848698ba4caebe909be340 Mon Sep 17 00:00:00 2001 From: Jorge M Date: Fri, 30 Aug 2024 14:33:13 +0200 Subject: [PATCH 06/28] Fomat shipping rate to two decimals --- src/Shipping/ShippingRate.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Shipping/ShippingRate.php b/src/Shipping/ShippingRate.php index e2edef06c3..598d522879 100644 --- a/src/Shipping/ShippingRate.php +++ b/src/Shipping/ShippingRate.php @@ -37,7 +37,10 @@ class ShippingRate implements JsonSerializable { * @param float $rate The shipping cost in store currency. */ public function __construct( float $rate ) { - $this->rate = $rate; + // Google only accepts rates with two decimal places. + // We avoid using wc_format_decimal or number_format_i18n because these functions format numbers according to locale settings, which may include thousands separators and different decimal separators. + // At this stage, we want to ensure the number is formatted strictly as a float, with no thousands separators and a dot as the decimal separator. + $this->rate = (float) number_format( $rate, 2 ); } /** From 708910dbd59c1332f3134f4e5f94d43866422ea7 Mon Sep 17 00:00:00 2001 From: Jorge M Date: Fri, 30 Aug 2024 14:33:35 +0200 Subject: [PATCH 07/28] Add tests for shipping zone rate with more than 2 decimals --- tests/Unit/Shipping/ZoneMethodsParserTest.php | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/Unit/Shipping/ZoneMethodsParserTest.php b/tests/Unit/Shipping/ZoneMethodsParserTest.php index 596ed7a3bc..372f6651f7 100644 --- a/tests/Unit/Shipping/ZoneMethodsParserTest.php +++ b/tests/Unit/Shipping/ZoneMethodsParserTest.php @@ -88,6 +88,27 @@ public function test_returns_flat_rate_methods_with_decimals_and_dot() { $this->assertEquals( 10.6, $shipping_rates[0]->get_rate() ); } + public function test_returns_flat_rate_methods_with_more_than_two_decimals() { + $flat_rate = $this->createMock( WC_Shipping_Flat_Rate::class ); + $flat_rate->id = ZoneMethodsParser::METHOD_FLAT_RATE; + $flat_rate->expects( $this->any() ) + ->method( 'get_option' ) + ->willReturnMap( + [ + [ 'cost', null, '10.6123' ], + ] + ); + + $zone = $this->createMock( WC_Shipping_Zone::class ); + $zone->expects( $this->any() ) + ->method( 'get_shipping_methods' ) + ->willReturn( [ $flat_rate ] ); + + $shipping_rates = $this->methods_parser->parse( $zone ); + $this->assertCount( 1, $shipping_rates ); + $this->assertEquals( 10.61, $shipping_rates[0]->get_rate() ); + } + public function test_returns_flat_rate_methods_including_shipping_classes() { // Return three sample shipping classes. $light_class = new \stdClass(); From f126caa4dbd5017f0c55f3b106749d1d31610ddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20P=C3=A9rez=20Pellicer?= <5908855+puntope@users.noreply.github.com> Date: Mon, 2 Sep 2024 17:56:14 +0400 Subject: [PATCH 08/28] Add test for is_Ready without health check --- tests/Unit/API/WP/NotificationsServiceTest.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/Unit/API/WP/NotificationsServiceTest.php b/tests/Unit/API/WP/NotificationsServiceTest.php index e2e18a311f..c1656297a0 100644 --- a/tests/Unit/API/WP/NotificationsServiceTest.php +++ b/tests/Unit/API/WP/NotificationsServiceTest.php @@ -223,6 +223,11 @@ public function test_notify_show_error_when_wpcom_not_healthy() { $this->assertEquals( did_action( 'woocommerce_gla_error' ), 1 ); } + public function test_is_ready_not_calling_status_api_if_with_health_check_is_false() { + $this->service = $this->get_mock( true, true, false ); + $this->account->expects( $this->never() )->method( 'is_wpcom_api_status_healthy' ); + $this->assertTrue( $this->service->is_ready( false ) ); + } /** * Mocks the service From 90ed2a4a1071579b55aa9b206d728ca5da7b1897 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20P=C3=A9rez=20Pellicer?= <5908855+puntope@users.noreply.github.com> Date: Mon, 2 Sep 2024 17:56:43 +0400 Subject: [PATCH 09/28] Update option when there is error. --- src/MerchantCenter/AccountService.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/MerchantCenter/AccountService.php b/src/MerchantCenter/AccountService.php index 9ebd1c8bf8..cf2a127fa4 100644 --- a/src/MerchantCenter/AccountService.php +++ b/src/MerchantCenter/AccountService.php @@ -232,6 +232,7 @@ public function get_connected_status(): array { // If token is revoked outside the extension. Set the status as error to force the merchant to grant access again. if ( $wpcom_rest_api_status === 'approved' && ! $this->is_wpcom_api_status_healthy() ) { $wpcom_rest_api_status = OAuthService::STATUS_ERROR; + $this->options->update( OptionsInterface::WPCOM_REST_API_STATUS, $wpcom_rest_api_status ); } $status = [ @@ -663,11 +664,11 @@ public function is_wpcom_api_status_healthy() { $integration_remote_request_response = Client::remote_request( $integration_status_args, null ); if ( is_wp_error( $integration_remote_request_response ) ) { - $this->delete_wpcom_api_status_transient(); - return false; + $status = [ 'is_healthy' => false ]; + } else { + $status = json_decode( wp_remote_retrieve_body( $integration_remote_request_response ), true ) ?? [ 'is_healthy' => false ]; } - $status = json_decode( wp_remote_retrieve_body( $integration_remote_request_response ), true ) ?? []; $transients->set( TransientsInterface::WPCOM_API_STATUS, $status, MINUTE_IN_SECONDS * 30 ); } From ec9e32f98d56381a62feacb8d87e34a0098317bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20P=C3=A9rez=20Pellicer?= <5908855+puntope@users.noreply.github.com> Date: Mon, 2 Sep 2024 18:04:05 +0400 Subject: [PATCH 10/28] Add more tests --- tests/Unit/API/WP/NotificationsServiceTest.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/Unit/API/WP/NotificationsServiceTest.php b/tests/Unit/API/WP/NotificationsServiceTest.php index c1656297a0..e00c8a876e 100644 --- a/tests/Unit/API/WP/NotificationsServiceTest.php +++ b/tests/Unit/API/WP/NotificationsServiceTest.php @@ -229,6 +229,12 @@ public function test_is_ready_not_calling_status_api_if_with_health_check_is_fal $this->assertTrue( $this->service->is_ready( false ) ); } + public function test_is_ready_calling_status_api_if_with_health_check_is_true() { + $this->service = $this->get_mock( true, true, true ); + $this->account->expects( $this->once() )->method( 'is_wpcom_api_status_healthy' ); + $this->assertTrue( $this->service->is_ready() ); + } + /** * Mocks the service * From fd5d8aa067e849bf762a96a84298a4892a6c28e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20P=C3=A9rez=20Pellicer?= <5908855+puntope@users.noreply.github.com> Date: Mon, 2 Sep 2024 18:04:16 +0400 Subject: [PATCH 11/28] Add more tests --- tests/Unit/API/WP/NotificationsServiceTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Unit/API/WP/NotificationsServiceTest.php b/tests/Unit/API/WP/NotificationsServiceTest.php index e00c8a876e..0cead19ce3 100644 --- a/tests/Unit/API/WP/NotificationsServiceTest.php +++ b/tests/Unit/API/WP/NotificationsServiceTest.php @@ -230,7 +230,7 @@ public function test_is_ready_not_calling_status_api_if_with_health_check_is_fal } public function test_is_ready_calling_status_api_if_with_health_check_is_true() { - $this->service = $this->get_mock( true, true, true ); + $this->service = $this->get_mock(); $this->account->expects( $this->once() )->method( 'is_wpcom_api_status_healthy' ); $this->assertTrue( $this->service->is_ready() ); } From 84d9ad096a3e08e30507889a3dd67ca2d37f57ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Wytr=C4=99bowicz?= Date: Mon, 2 Sep 2024 19:07:17 +0200 Subject: [PATCH 12/28] Remove the use of WooAdminNavigationTrait --- src/Menu/Dashboard.php | 54 +++++----------------------- src/Menu/GetStarted.php | 41 +++++---------------- src/Menu/WooAdminNavigationTrait.php | 32 ----------------- 3 files changed, 16 insertions(+), 111 deletions(-) delete mode 100644 src/Menu/WooAdminNavigationTrait.php diff --git a/src/Menu/Dashboard.php b/src/Menu/Dashboard.php index fc78457a98..0016ea461d 100644 --- a/src/Menu/Dashboard.php +++ b/src/Menu/Dashboard.php @@ -17,7 +17,6 @@ class Dashboard implements Service, Registerable, MerchantCenterAwareInterface { use MenuFixesTrait; use MerchantCenterAwareTrait; - use WooAdminNavigationTrait; public const PATH = '/google/dashboard'; @@ -32,52 +31,15 @@ public function register(): void { add_action( 'admin_menu', function () { - if ( $this->is_woo_nav_enabled() ) { - $this->register_navigation_pages(); - } else { - $this->register_classic_submenu_page( - [ - 'id' => 'google-listings-and-ads', - 'title' => __( 'Google for WooCommerce', 'google-listings-and-ads' ), - 'parent' => 'woocommerce-marketing', - 'path' => self::PATH, - ] - ); - } + $this->register_classic_submenu_page( + [ + 'id' => 'google-listings-and-ads', + 'title' => __( 'Google for WooCommerce', 'google-listings-and-ads' ), + 'parent' => 'woocommerce-marketing', + 'path' => self::PATH, + ] + ); } ); } - - /** - * Register navigation pages for WC Navigation. - */ - protected function register_navigation_pages(): void { - wc_admin_register_page( - [ - 'id' => 'google-listings-and-ads-category', - 'title' => __( 'Google for WooCommerce', 'google-listings-and-ads' ), - 'parent' => 'woocommerce', - 'path' => self::PATH, - 'nav_args' => [ - 'title' => __( 'Google for WooCommerce', 'google-listings-and-ads' ), - 'is_category' => true, - 'menuId' => 'plugins', - 'is_top_level' => true, - ], - ] - ); - - wc_admin_register_page( - [ - 'id' => 'google-dashboard', - 'title' => __( 'Dashboard', 'google-listings-and-ads' ), - 'parent' => 'google-listings-and-ads-category', - 'path' => self::PATH, - 'nav_args' => [ - 'order' => 10, - 'parent' => 'google-listings-and-ads-category', - ], - ] - ); - } } diff --git a/src/Menu/GetStarted.php b/src/Menu/GetStarted.php index 9343fe9742..bdc8dcb701 100644 --- a/src/Menu/GetStarted.php +++ b/src/Menu/GetStarted.php @@ -17,7 +17,6 @@ class GetStarted implements Service, Registerable, MerchantCenterAwareInterface use MenuFixesTrait; use MerchantCenterAwareTrait; - use WooAdminNavigationTrait; public const PATH = '/google/start'; @@ -32,39 +31,15 @@ public function register(): void { add_action( 'admin_menu', function () { - if ( $this->is_woo_nav_enabled() ) { - $this->register_navigation_pages(); - } else { - $this->register_classic_submenu_page( - [ - 'id' => 'google-listings-and-ads', - 'title' => __( 'Google for WooCommerce', 'google-listings-and-ads' ), - 'parent' => 'woocommerce-marketing', - 'path' => self::PATH, - ] - ); - } + $this->register_classic_submenu_page( + [ + 'id' => 'google-listings-and-ads', + 'title' => __( 'Google for WooCommerce', 'google-listings-and-ads' ), + 'parent' => 'woocommerce-marketing', + 'path' => self::PATH, + ] + ); } ); } - - /** - * Register navigation pages for WC Navigation. - */ - protected function register_navigation_pages(): void { - wc_admin_register_page( - [ - 'id' => 'google-start', - 'title' => __( 'Google for WooCommerce', 'google-listings-and-ads' ), - 'parent' => 'woocommerce', - 'path' => self::PATH, - 'nav_args' => [ - 'title' => __( 'Google for WooCommerce', 'google-listings-and-ads' ), - 'is_category' => false, - 'menuId' => 'plugins', - 'is_top_level' => true, - ], - ] - ); - } } diff --git a/src/Menu/WooAdminNavigationTrait.php b/src/Menu/WooAdminNavigationTrait.php deleted file mode 100644 index 674fc28979..0000000000 --- a/src/Menu/WooAdminNavigationTrait.php +++ /dev/null @@ -1,32 +0,0 @@ -woo_nav_enabled ) ) { - $this->woo_nav_enabled = class_exists( Features::class ) && Features::is_enabled( 'navigation' ); - } - return $this->woo_nav_enabled; - } -} From e98639ae162b8424082659c3ee126a3b8b1be51f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Wytr=C4=99bowicz?= Date: Mon, 2 Sep 2024 19:32:41 +0200 Subject: [PATCH 13/28] Remove the `NavigationClassic` use `MainTabNav` directly --- js/src/attribute-mapping/index.js | 4 ++-- js/src/components/main-tab-nav/index.js | 1 + .../main-tab-nav.js | 4 ++-- js/src/components/navigation-classic/index.js | 18 ------------------ js/src/dashboard/index.js | 4 ++-- js/src/product-feed/index.js | 4 ++-- js/src/reports/products/index.js | 4 ++-- js/src/reports/programs/index.js | 4 ++-- js/src/settings/index.js | 4 ++-- 9 files changed, 15 insertions(+), 32 deletions(-) create mode 100644 js/src/components/main-tab-nav/index.js rename js/src/components/{navigation-classic => main-tab-nav}/main-tab-nav.js (93%) delete mode 100644 js/src/components/navigation-classic/index.js diff --git a/js/src/attribute-mapping/index.js b/js/src/attribute-mapping/index.js index 8acfe76903..00cad9991b 100644 --- a/js/src/attribute-mapping/index.js +++ b/js/src/attribute-mapping/index.js @@ -9,7 +9,7 @@ import { __ } from '@wordpress/i18n'; import Section from '.~/wcdl/section'; import AttributeMappingDescription from './attribute-mapping-description'; import AttributeMappingTable from './attribute-mapping-table'; -import NavigationClassic from '.~/components/navigation-classic'; +import MainTabNav from '.~/components/main-tab-nav'; import RebrandingTour from '.~/components/tours/rebranding-tour'; import './index.scss'; @@ -21,7 +21,7 @@ import './index.scss'; const AttributeMapping = () => { return (
- +
{ }; const MainTabNav = () => { - useLegacyMenuEffect(); + useMenuEffect(); const selectedKey = getSelectedTabKey(); diff --git a/js/src/components/navigation-classic/index.js b/js/src/components/navigation-classic/index.js deleted file mode 100644 index 363a9e3e89..0000000000 --- a/js/src/components/navigation-classic/index.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Internal dependencies - */ -import MainTabNav from './main-tab-nav'; -import isWCNavigationEnabled from '.~/utils/isWCNavigationEnabled'; - -/** - * Display tab-based navigation when the new WC Navigation is not enabled. - * - * @return {import("./main-tab-nav").default} Retuns MainTabNav if WC Navigation is not enabled. - */ -const NavigationClassic = () => { - const navigationEnabled = isWCNavigationEnabled(); - - return navigationEnabled ? null : ; -}; - -export default NavigationClassic; diff --git a/js/src/dashboard/index.js b/js/src/dashboard/index.js index 67ac1bca35..926363493c 100644 --- a/js/src/dashboard/index.js +++ b/js/src/dashboard/index.js @@ -11,7 +11,7 @@ import { getNewPath, getQuery, getHistory } from '@woocommerce/navigation'; */ import AppButton from '.~/components/app-button'; import DifferentCurrencyNotice from '.~/components/different-currency-notice'; -import NavigationClassic from '.~/components/navigation-classic'; +import MainTabNav from '.~/components/main-tab-nav'; import CustomerEffortScorePrompt from '.~/components/customer-effort-score-prompt'; import AppDateRangeFilterPicker from './app-date-range-filter-picker'; import SummarySection from './summary-section'; @@ -88,7 +88,7 @@ const Dashboard = () => { <>
- +
{ return ( <> - + { isSubmissionSuccessOpen && } { canCESPromptOpen && ( diff --git a/js/src/reports/products/index.js b/js/src/reports/products/index.js index c29fd7c549..948b177bcd 100644 --- a/js/src/reports/products/index.js +++ b/js/src/reports/products/index.js @@ -18,7 +18,7 @@ import useMetricsWithFormatter from '../useMetricsWithFormatter'; import useAdsCampaigns from '.~/hooks/useAdsCampaigns'; import AppSpinner from '.~/components/app-spinner'; import DifferentCurrencyNotice from '.~/components/different-currency-notice'; -import NavigationClassic from '.~/components/navigation-classic'; +import MainTabNav from '.~/components/main-tab-nav'; import ProductsReportFilters from './products-report-filters'; import SummarySection from '../summary-section'; import ChartSection from '../chart-section'; @@ -123,7 +123,7 @@ const ProductsReportPage = () => { return ( <> - + { loaded ? ( diff --git a/js/src/reports/programs/index.js b/js/src/reports/programs/index.js index f21e4f1825..24e0b800e7 100644 --- a/js/src/reports/programs/index.js +++ b/js/src/reports/programs/index.js @@ -11,7 +11,7 @@ import { getQuery } from '@woocommerce/navigation'; import useProgramsReport, { usePerformanceReport } from './useProgramsReport'; import useMetricsWithFormatter from '../useMetricsWithFormatter'; import DifferentCurrencyNotice from '.~/components/different-currency-notice'; -import NavigationClassic from '.~/components/navigation-classic'; +import MainTabNav from '.~/components/main-tab-nav'; import ProgramsReportFilters from './programs-report-filters'; import SummarySection from '../summary-section'; import ChartSection from '../chart-section'; @@ -103,7 +103,7 @@ const ProgramsReport = () => { return ( <> - + { return (
- + From 19585895644a369ac012b53ccfa81e0b72a495fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Wytr=C4=99bowicz?= Date: Mon, 2 Sep 2024 19:33:23 +0200 Subject: [PATCH 14/28] Always use `AppSubNav` in `ReportsNavigation` --- js/src/reports/reports-navigation.js | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/js/src/reports/reports-navigation.js b/js/src/reports/reports-navigation.js index f69a23665c..bfdd048785 100644 --- a/js/src/reports/reports-navigation.js +++ b/js/src/reports/reports-navigation.js @@ -7,8 +7,6 @@ import { getNewPath } from '@woocommerce/navigation'; /** * Internal dependencies */ -import AppTabNav from '.~/components/app-tab-nav'; -import isWCNavigationEnabled from '.~/utils/isWCNavigationEnabled'; import AppSubNav from '.~/components/app-sub-nav'; import getSelectedReportKey from '.~/utils/getSelectedReportKey'; @@ -26,14 +24,9 @@ const tabs = [ ]; const ReportsNavigation = () => { - const navigationEnabled = isWCNavigationEnabled(); const reportKey = getSelectedReportKey(); - return navigationEnabled ? ( - - ) : ( - - ); + return ; }; export default ReportsNavigation; From 0c1023cc79671a8903420627702a655718b344c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Wytr=C4=99bowicz?= Date: Mon, 2 Sep 2024 19:34:54 +0200 Subject: [PATCH 15/28] Change `useLegacyMenuEffect` to `useMenuEffect` --- js/src/dashboard/index.test.js | 2 +- ...seLegacyMenuEffect.js => useMenuEffect.js} | 22 +++++-------------- js/src/product-feed/index.test.js | 2 +- js/src/settings/index.js | 4 ++-- 4 files changed, 9 insertions(+), 21 deletions(-) rename js/src/hooks/{useLegacyMenuEffect.js => useMenuEffect.js} (52%) diff --git a/js/src/dashboard/index.test.js b/js/src/dashboard/index.test.js index b4015547d4..8c44142042 100644 --- a/js/src/dashboard/index.test.js +++ b/js/src/dashboard/index.test.js @@ -54,7 +54,7 @@ jest.mock( '.~/components/customer-effort-score-prompt', () => () => ( ) ); beforeAll( () => { - // Used in the js/src/hooks/useLegacyMenuEffect.js dependency + // Used in the js/src/hooks/useMenuEffect.js dependency window.wpNavMenuClassChange = jest.fn(); } ); diff --git a/js/src/hooks/useLegacyMenuEffect.js b/js/src/hooks/useMenuEffect.js similarity index 52% rename from js/src/hooks/useLegacyMenuEffect.js rename to js/src/hooks/useMenuEffect.js index 53127dd426..42f9d35e80 100644 --- a/js/src/hooks/useLegacyMenuEffect.js +++ b/js/src/hooks/useMenuEffect.js @@ -2,10 +2,6 @@ * External dependencies */ import { useEffect } from '@wordpress/element'; -/** - * Internal dependencies - */ -import isWCNavigationEnabled from '.~/utils/isWCNavigationEnabled'; /** * Mocked result of parsing a page entry from {@link /js/src/index.js} by WC-admin's . @@ -18,25 +14,17 @@ const dashboardPage = { }; /** - * Effect that highlights the GLA Dashboard menu entry in the legacy WC menu. + * Effect that highlights the GLA Dashboard menu entry in the WC menu. * * Should be called for every "root page" (`.~/pages/*`) that wants to open the GLA menu. * - * The hook could be removed once WC Navigation will be always enabled, - * or if we make the plugin fully use the routing feature of WC, + * The hook could be removed once make the plugin fully use the routing feature of WC, * and let this be done by proper matching of URL matchers from {@link /js/src/index.js} * * @see window.wpNavMenuClassChange */ -export default function useLegacyMenuEffect() { - const navigationEnabled = isWCNavigationEnabled(); +export default function useMenuEffect() { return useEffect( () => { - // Highlight the wp-admin dashboard menu - if ( ! navigationEnabled ) { - window.wpNavMenuClassChange( - dashboardPage, - dashboardPage.match.url - ); - } - }, [ navigationEnabled ] ); + window.wpNavMenuClassChange( dashboardPage, dashboardPage.match.url ); + } ); } diff --git a/js/src/product-feed/index.test.js b/js/src/product-feed/index.test.js index 5d9a10ce7e..d14b8a626c 100644 --- a/js/src/product-feed/index.test.js +++ b/js/src/product-feed/index.test.js @@ -43,7 +43,7 @@ jest.mock( '.~/components/customer-effort-score-prompt', () => () => ( ) ); beforeAll( () => { - // Used in the js/src/hooks/useLegacyMenuEffect.js dependency + // Used in the js/src/hooks/useMenuEffect.js dependency window.wpNavMenuClassChange = jest.fn(); } ); diff --git a/js/src/settings/index.js b/js/src/settings/index.js index bd43029c1a..8be37d0fa0 100644 --- a/js/src/settings/index.js +++ b/js/src/settings/index.js @@ -8,7 +8,7 @@ import { getQuery, getHistory } from '@woocommerce/navigation'; * Internal dependencies */ import { API_RESPONSE_CODES } from '.~/constants'; -import useLegacyMenuEffect from '.~/hooks/useLegacyMenuEffect'; +import useMenuEffect from '.~/hooks/useMenuEffect'; import useGoogleAccount from '.~/hooks/useGoogleAccount'; import useUpdateRestAPIAuthorizeStatusByUrlQuery from '.~/hooks/useUpdateRestAPIAuthorizeStatusByUrlQuery'; import { subpaths, getReconnectAccountUrl } from '.~/utils/urls'; @@ -28,7 +28,7 @@ const pageClassName = 'gla-settings'; const Settings = () => { const { subpath } = getQuery(); // Make the component highlight GLA entry in the WC legacy menu. - useLegacyMenuEffect(); + useMenuEffect(); useUpdateRestAPIAuthorizeStatusByUrlQuery(); From 75a23ce3788b09c23c37ee3d6fb9368cd216a3f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Wytr=C4=99bowicz?= Date: Mon, 2 Sep 2024 19:37:20 +0200 Subject: [PATCH 16/28] Always add `marketing` to the breadcrumbs --- js/src/index.js | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/js/src/index.js b/js/src/index.js index 60a74bf5c2..9bcbce3b28 100644 --- a/js/src/index.js +++ b/js/src/index.js @@ -14,7 +14,6 @@ import { getSetting } from '@woocommerce/settings'; // eslint-disable-line impor import './css/index.scss'; import withAdminPageShell from '.~/components/withAdminPageShell'; import './data'; -import isWCNavigationEnabled from './utils/isWCNavigationEnabled'; import { addBaseEventProperties } from '.~/utils/tracks'; const Dashboard = lazy( () => @@ -59,24 +58,11 @@ addFilter( 'woocommerce_admin_pages_list', 'woocommerce/google-listings-and-ads/add-page-routes', ( pages ) => { - const navigationEnabled = isWCNavigationEnabled(); - const initialBreadcrumbs = [ [ '', woocommerceTranslation ] ]; - - /** - * If the WooCommerce Navigation feature is not enabled, - * we want to display the plugin under WC Marketing; - * otherwise, display it under WC Navigation - Extensions. - */ - if ( ! navigationEnabled ) { - initialBreadcrumbs.push( [ - '/marketing', - __( 'Marketing', 'google-listings-and-ads' ), - ] ); - } - - initialBreadcrumbs.push( - __( 'Google for WooCommerce', 'google-listings-and-ads' ) - ); + const initialBreadcrumbs = [ + [ '', woocommerceTranslation ], + [ '/marketing', __( 'Marketing', 'google-listings-and-ads' ) ], + __( 'Google for WooCommerce', 'google-listings-and-ads' ), + ]; const pluginAdminPages = [ { From 15328f2c0c5469acb70448aaedf10a060d1dd313 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Wytr=C4=99bowicz?= Date: Mon, 2 Sep 2024 19:38:47 +0200 Subject: [PATCH 17/28] Remove `reconnectionLock` --- .../reconnect-google-account.js | 7 -- .../reconnect-wpcom-account.js | 7 -- js/src/settings/reconnectionLock.js | 94 ------------------- js/src/settings/reconnectionLock.scss | 22 ----- 4 files changed, 130 deletions(-) delete mode 100644 js/src/settings/reconnectionLock.js delete mode 100644 js/src/settings/reconnectionLock.scss diff --git a/js/src/settings/reconnect-google-account/reconnect-google-account.js b/js/src/settings/reconnect-google-account/reconnect-google-account.js index 8b3704995a..dfa1f1b8ac 100644 --- a/js/src/settings/reconnect-google-account/reconnect-google-account.js +++ b/js/src/settings/reconnect-google-account/reconnect-google-account.js @@ -16,10 +16,6 @@ import Section from '.~/wcdl/section'; import AppSpinner from '.~/components/app-spinner'; import GoogleAccountCard from '.~/components/google-account-card'; import DisconnectGoogleAccountCard from './disconnect-google-account-card'; -import { - lockInReconnection, - unlockFromReconnection, -} from '../reconnectionLock'; export default function ReconnectGoogleAccount() { const { data } = useAppSelectDispatch( 'getGoogleAccountAccess' ); @@ -38,9 +34,6 @@ export default function ReconnectGoogleAccount() { useEffect( () => { if ( isCompletedReconnection ) { getHistory().replace( getDashboardUrl() ); - unlockFromReconnection(); - } else { - lockInReconnection(); } }, [ isCompletedReconnection ] ); diff --git a/js/src/settings/reconnect-wpcom-account/reconnect-wpcom-account.js b/js/src/settings/reconnect-wpcom-account/reconnect-wpcom-account.js index 60f96b6bf5..1598b993be 100644 --- a/js/src/settings/reconnect-wpcom-account/reconnect-wpcom-account.js +++ b/js/src/settings/reconnect-wpcom-account/reconnect-wpcom-account.js @@ -16,10 +16,6 @@ import AccountCard from '.~/components/account-card'; import VerticalGapLayout from '.~/components/vertical-gap-layout'; import { ConnectWPComAccountCard } from '.~/components/wpcom-account-card'; import LinkedAccountsSectionWrapper from '../linked-accounts-section-wrapper'; -import { - lockInReconnection, - unlockFromReconnection, -} from '../reconnectionLock'; import './reconnect-wpcom-account.scss'; export default function ReconnectWPComAccount() { @@ -29,9 +25,6 @@ export default function ReconnectWPComAccount() { useEffect( () => { if ( isConnected ) { getHistory().replace( getSettingsUrl() ); - unlockFromReconnection(); - } else { - lockInReconnection(); } }, [ isConnected ] ); diff --git a/js/src/settings/reconnectionLock.js b/js/src/settings/reconnectionLock.js deleted file mode 100644 index 5de5f92abb..0000000000 --- a/js/src/settings/reconnectionLock.js +++ /dev/null @@ -1,94 +0,0 @@ -/** - * External dependencies - */ -import { getHistory, getNewPath } from '@woocommerce/navigation'; -import { getQueryArgs } from '@wordpress/url'; -import { isEqual } from 'lodash'; - -/** - * Internal dependencies - */ -import { pagePaths } from '.~/utils/urls'; -import isWCNavigationEnabled from '.~/utils/isWCNavigationEnabled'; -import './reconnectionLock.scss'; - -/* - * When required accounts were disconnected, the available link is - * the corresponding reconnecting subpage under the Settings page. - * - * But there is no reliable way to disable the menu link of WC Navigation, - * so the given workaround is using a pair of singleton locking and unlocking - * functions to disable the GLA menu links globally, and lock the current link - * as the available link when redirecting. - */ - -let unlockCallback = null; - -/** - * Disables the GLA menu links of WC Navigation except for the Settings link - * and uses the current link as the locked link. When clicking on the Settings link, - * it will redirect to the locked link. - */ -export function lockInReconnection() { - if ( unlockCallback ) { - return; - } - - const lockedQuery = getQueryArgs( document.location.search ); - const handleClick = ( e ) => { - const { target } = e; - - if ( target.tagName !== 'A' ) { - return; - } - - const paths = [ - pagePaths.dashboard, - pagePaths.reports, - pagePaths.productFeed, - pagePaths.settings, - ]; - - const targetQuery = getQueryArgs( target.getAttribute( 'href' ) ); - if ( paths.includes( targetQuery.path ) ) { - e.stopPropagation(); - e.preventDefault(); - - /** - * With WC Navigation, the available entry link on menu is the GLA Settings; - * With Classic Navigation, the available entry link is the only one link on menu. - * - * When clicking on the available entry link, redirects to the locked link - * if the current link is not the locked link. - */ - const isAvailableEntry = isWCNavigationEnabled() - ? targetQuery.path === pagePaths.settings - : true; - const currentQuery = getQueryArgs( document.location.search ); - if ( isAvailableEntry && ! isEqual( lockedQuery, currentQuery ) ) { - const { path, ...query } = lockedQuery; - - getHistory().push( getNewPath( query, path, null ) ); - } - } - }; - - document.defaultView.addEventListener( 'click', handleClick, true ); - document.body.classList.add( 'gla-reconnection-lock' ); - - unlockCallback = () => { - document.defaultView.removeEventListener( 'click', handleClick, true ); - document.body.classList.remove( 'gla-reconnection-lock' ); - }; -} - -/** - * Enables the GLA menu links of WC Navigation that are locked by - * the `lockInReconnection` function. - */ -export function unlockFromReconnection() { - if ( unlockCallback ) { - unlockCallback(); - unlockCallback = null; - } -} diff --git a/js/src/settings/reconnectionLock.scss b/js/src/settings/reconnectionLock.scss deleted file mode 100644 index 71197b2cb8..0000000000 --- a/js/src/settings/reconnectionLock.scss +++ /dev/null @@ -1,22 +0,0 @@ -// The workaround for making the GLA menu links of WC Navigation appear as disabled -// except for the GLA Settings link. -.gla-reconnection-lock { - .woocommerce-navigation { - .woocommerce-navigation__wrapper { - .components-navigation__item { - .components-button { - &[href*="path=%2Fgoogle%2Fdashboard"], - &[href*="path=%2Fgoogle%2Freports"], - &[href*="path=%2Fgoogle%2Fproduct-feed"] { - cursor: not-allowed; - color: $gray-600; - - &:focus { - box-shadow: none; - } - } - } - } - } - } -} From 9bee30e921043bd965737fb427038f76e6dd7413 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Wytr=C4=99bowicz?= Date: Mon, 2 Sep 2024 19:39:43 +0200 Subject: [PATCH 18/28] Remove `isWCNavigationEnabled` --- jest.config.js | 3 --- js/src/utils/isWCNavigationEnabled.js | 10 ---------- 2 files changed, 13 deletions(-) delete mode 100644 js/src/utils/isWCNavigationEnabled.js diff --git a/jest.config.js b/jest.config.js index 9bd5f4f10e..600f2b8658 100644 --- a/jest.config.js +++ b/jest.config.js @@ -50,9 +50,6 @@ module.exports = { '/js/build-dev', ], globals: { - wcAdminFeatures: { - navigation: false, - }, wcSettings: { currency: { code: 'USD', diff --git a/js/src/utils/isWCNavigationEnabled.js b/js/src/utils/isWCNavigationEnabled.js deleted file mode 100644 index fd0472111d..0000000000 --- a/js/src/utils/isWCNavigationEnabled.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Checks whether the WC Navigation feature is enabled. - * - * @return {boolean} True / false. - */ -const isWCNavigationEnabled = () => { - return !! window.wcAdminFeatures?.navigation; -}; - -export default isWCNavigationEnabled; From 42e55b5bb9014f9e28391153b8e5049850f0bd07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Wytr=C4=99bowicz?= Date: Mon, 2 Sep 2024 20:05:10 +0200 Subject: [PATCH 19/28] Hide `woocommerce-layout__header` with `display:none` for `full-content` as we no longer need its offset to do calculations removed in https://github.com/woocommerce/google-listings-and-ads/pull/1206 --- js/src/css/shared/_woocommerce-admin.scss | 30 +++-------------------- 1 file changed, 3 insertions(+), 27 deletions(-) diff --git a/js/src/css/shared/_woocommerce-admin.scss b/js/src/css/shared/_woocommerce-admin.scss index 09d897cf0c..4a96bad98d 100644 --- a/js/src/css/shared/_woocommerce-admin.scss +++ b/js/src/css/shared/_woocommerce-admin.scss @@ -10,18 +10,8 @@ .woocommerce-layout { padding-top: 0; - // do not set the header to display: none, - // because we want the offsetHeight value - // and set it to wpbody-content margin-top to counter back. .woocommerce-layout__header { - visibility: hidden; - - // only display the top left WC navigation, - // do not display the h1 page title element - // and the top right activity panel. - &-wrapper > *:not(.woocommerce-navigation) { - display: none; - } + display: none; } // Hide StoreAlerts. @@ -37,28 +27,14 @@ } } } - - // the following is only applicable when WC Navigation is enabled - // and the page is on a large screen with .is-wc-nav-expanded applied. - &.has-woocommerce-navigation.is-wc-nav-expanded { - .woocommerce-layout__header { - // WC Navigation lies inside woocommerce-layout__header, - // so we need to display this. - display: block; - - // width of the WC Navigation sidebar. - width: 240px; - } - } } // Used in .~/hooks/useLayout.js .gla-full-page { - // hack to fix the margin-top when WC Navigation is not enabled - // and width is between 600px and 782px. + // hack to fix the margin-top when width is between 600px and 782px. // without this, the margin-top would be -32px, // and there would be a visible small grey gap. - &.is-wp-toolbar-disabled:not(.has-woocommerce-navigation) { + &.is-wp-toolbar-disabled { @media (min-width: #{ ($break-small) }) and (max-width: #{ ($break-medium) }) { margin-top: -46px; } From 8731dee3aaab34a54a775bf386fb1c00ff8dbffd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Wytr=C4=99bowicz?= Date: Mon, 2 Sep 2024 20:19:12 +0200 Subject: [PATCH 20/28] Update `useLayout` code comment Not to mention WC Navigation, but to preventively filter classes. --- js/src/hooks/useLayout.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/src/hooks/useLayout.js b/js/src/hooks/useLayout.js index f7a70d25c5..d9f3186207 100644 --- a/js/src/hooks/useLayout.js +++ b/js/src/hooks/useLayout.js @@ -30,8 +30,8 @@ export default function useLayout( layoutName ) { const bodyClassList = document.body.classList; /** - * For WC Navigation, it already has classes applied, for example, "is-wp-toolbar-disabled". - * Here filter existing classes out to avoid them being removed in the cleanup function. + * Here filter potentially already applied classes out + * to avoid them being removed in the cleanup function. */ const classNames = classNameDict[ layoutName ].filter( ( name ) => ! bodyClassList.contains( name ) From f12ac73d72d97be918180e3d14bbc61d1f114ac6 Mon Sep 17 00:00:00 2001 From: Martyn Jones Date: Tue, 3 Sep 2024 17:21:38 +0100 Subject: [PATCH 21/28] Log exception if asset is enqueued before it's registered --- src/Assets/BaseAsset.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Assets/BaseAsset.php b/src/Assets/BaseAsset.php index 9838652c3f..d67a5dc2f6 100644 --- a/src/Assets/BaseAsset.php +++ b/src/Assets/BaseAsset.php @@ -212,7 +212,11 @@ protected function get_dequeue_action(): string { */ protected function defer_action( string $action, callable $callback, int $priority = 10 ): void { if ( did_action( $action ) ) { - $callback(); + try { + $callback(); + } catch ( InvalidAsset $exception ) { + do_action( 'woocommerce_gla_exception', $exception, __METHOD__ ); + } return; } From 0baf75450200eda130f6dbc30e79e812b261eaa3 Mon Sep 17 00:00:00 2001 From: Martyn Jones Date: Tue, 3 Sep 2024 17:21:53 +0100 Subject: [PATCH 22/28] Add unit test --- tests/Unit/Assets/ScriptAssetTest.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/Unit/Assets/ScriptAssetTest.php b/tests/Unit/Assets/ScriptAssetTest.php index 392002ebdb..0367f3cfc0 100644 --- a/tests/Unit/Assets/ScriptAssetTest.php +++ b/tests/Unit/Assets/ScriptAssetTest.php @@ -28,4 +28,19 @@ public function test_can_enqueue() { $asset = new ScriptAsset( __FUNCTION__, self::URI, [], '' ); $this->assertTrue( $asset->can_enqueue() ); } + + /** + * Confirm an exception is logged using the `woocommerce_gla_exception` + * action if an asset is enqueued before it is registered. + * + * @return void + */ + public function test_exception_logged_if_asset_enqueued_before_registration() { + do_action( 'wp_enqueue_scripts' ); + + $asset = new ScriptAsset( __FUNCTION__, self::URI, [], '', '__return_true' ); + $asset->enqueue(); + + $this->assertEquals( 1, did_action( 'woocommerce_gla_exception' ) ); + } } From fe8d9235424ce75d5ede4cf53be9ff6b8a0d5d6b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 5 Sep 2024 14:28:13 +0000 Subject: [PATCH 23/28] Start `release/2.8.5`. From 9fda021fc926fb3506d80b994814ab181b1255e3 Mon Sep 17 00:00:00 2001 From: Martyn Jones Date: Thu, 5 Sep 2024 15:34:48 +0100 Subject: [PATCH 24/28] Update readme.txt --- readme.txt | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/readme.txt b/readme.txt index 6c69558a4b..708fa5c7a7 100644 --- a/readme.txt +++ b/readme.txt @@ -158,15 +158,4 @@ To allow your products to appear in all relevant locations, make sure you’ve c * Tweak - Display additional context in error message when Google Ads account limit reached. * Tweak - Upgrade readme details in WPORG. -= 2.8.2 - 2024-08-14 = -* Fix - Disconnecting all accounts when WPCOM connection is not granted. -* Fix - Error when Google Merchant Center account is undefined while checking the notification service enabled property. -* Tweak - Label campaigns for the web version and the WooCommerce Mobile app. -* Tweak - Update FAQS in Getting Started page. -* Tweak - Update WP.org plugin FAQs. -* Tweak - Update WPORG plugin page header image. -* Tweak - Update get started page. -* Tweak - WC 9.2.0 compatibility. -* Update - Block validation to support error context. - [See changelog for all versions](https://raw.githubusercontent.com/woocommerce/google-listings-and-ads/trunk/changelog.txt). From 1c6a9029e9e0f0a156d564ce9ae8a4545322685b Mon Sep 17 00:00:00 2001 From: Martyn Jones Date: Thu, 5 Sep 2024 16:42:38 +0100 Subject: [PATCH 25/28] Set WPCOM_API_STATUS transient for tests --- tests/e2e/test-data/test-data.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/e2e/test-data/test-data.php b/tests/e2e/test-data/test-data.php index e28b008ffa..242a117c73 100644 --- a/tests/e2e/test-data/test-data.php +++ b/tests/e2e/test-data/test-data.php @@ -140,6 +140,14 @@ function set_notifications_ready() { $options = woogle_get_container()->get( OptionsInterface::class ); $transients = woogle_get_container()->get( TransientsInterface::class ); $transients->set( TransientsInterface::URL_MATCHES, 'yes' ); + $transients->set( + TransientsInterface::WPCOM_API_STATUS, + array( + 'is_healthy' => true, + 'is_wc_rest_api_healthy' => true, + 'is_partner_token_healthy' => true + ) + ); $options->update( OptionsInterface::WPCOM_REST_API_STATUS, 'approved' ); From 59e3fcdb838da924fd19a6dd6b6b1236f8a4842b Mon Sep 17 00:00:00 2001 From: Martyn Jones Date: Thu, 5 Sep 2024 17:23:45 +0100 Subject: [PATCH 26/28] woorelease: Product version bump update --- google-listings-and-ads.php | 6 +++--- package-lock.json | 2 +- package.json | 2 +- readme.txt | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/google-listings-and-ads.php b/google-listings-and-ads.php index 2441355083..c96514028f 100644 --- a/google-listings-and-ads.php +++ b/google-listings-and-ads.php @@ -3,7 +3,7 @@ * Plugin Name: Google for WooCommerce * Plugin URL: https://wordpress.org/plugins/google-listings-and-ads/ * Description: Native integration with Google that allows merchants to easily display their products across Google’s network. - * Version: 2.8.4 + * Version: 2.8.5 * Author: WooCommerce * Author URI: https://woocommerce.com/ * Text Domain: google-listings-and-ads @@ -13,7 +13,7 @@ * Requires PHP Architecture: 64 bits * Requires Plugins: woocommerce * WC requires at least: 6.9 - * WC tested up to: 9.2.0 + * WC tested up to: 9.3.0 * Woo: * * @package WooCommerce\Admin @@ -30,7 +30,7 @@ defined( 'ABSPATH' ) || exit; -define( 'WC_GLA_VERSION', '2.8.4' ); // WRCS: DEFINED_VERSION. +define( 'WC_GLA_VERSION', '2.8.5' ); // WRCS: DEFINED_VERSION. define( 'WC_GLA_MIN_PHP_VER', '7.4' ); define( 'WC_GLA_MIN_WC_VER', '6.9' ); diff --git a/package-lock.json b/package-lock.json index d82badc4e6..646f4851a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "google-listings-and-ads", - "version": "2.8.4", + "version": "2.8.5", "lockfileVersion": 3, "requires": true, "packages": { diff --git a/package.json b/package.json index 7496348bdb..79a7884e6b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "google-listings-and-ads", "title": "Google for WooCommerce", - "version": "2.8.4", + "version": "2.8.5", "description": "Google for WooCommerce", "author": "Automattic", "license": "GPL-3.0-or-later", diff --git a/readme.txt b/readme.txt index 708fa5c7a7..d26e7da419 100644 --- a/readme.txt +++ b/readme.txt @@ -5,7 +5,7 @@ Requires at least: 5.9 Tested up to: 6.6 Requires PHP: 7.4 Requires PHP Architecture: 64 Bits -Stable tag: 2.8.4 +Stable tag: 2.8.5 License: GPLv3 License URI: https://www.gnu.org/licenses/gpl-3.0.html From cf767620ceac4f1c58c916e38e49fd23d26d84e4 Mon Sep 17 00:00:00 2001 From: Martyn Jones Date: Thu, 5 Sep 2024 17:23:49 +0100 Subject: [PATCH 27/28] woorelease: Changelog update --- changelog.txt | 7 +++++++ readme.txt | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/changelog.txt b/changelog.txt index c182f02d8f..60557e7548 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,5 +1,12 @@ *** Google for WooCommerce Changelog *** += 2.8.5 - 2024-09-05 = +* Break - Remove WooCommerce Navigation integration. +* Fix - Issue with syncing shipping rates with more than two decimals. +* Fix - Log exceptions triggered by assets being enqueued before being registered. +* Tweak - Use remote-site-status to check the WPCOM Auth status. +* Tweak - WC 9.3.0 compatibility. + = 2.8.4 - 2024-08-28 = * Dev - Align namespaces for unit tests. * Dev - Avoid accidentally using the event object to reset the asset group values in the CampaignAssetsForm component. diff --git a/readme.txt b/readme.txt index d26e7da419..c96ce67f68 100644 --- a/readme.txt +++ b/readme.txt @@ -140,6 +140,13 @@ To allow your products to appear in all relevant locations, make sure you’ve c == Changelog == += 2.8.5 - 2024-09-05 = +* Break - Remove WooCommerce Navigation integration. +* Fix - Issue with syncing shipping rates with more than two decimals. +* Fix - Log exceptions triggered by assets being enqueued before being registered. +* Tweak - Use remote-site-status to check the WPCOM Auth status. +* Tweak - WC 9.3.0 compatibility. + = 2.8.4 - 2024-08-28 = * Dev - Align namespaces for unit tests. * Dev - Avoid accidentally using the event object to reset the asset group values in the CampaignAssetsForm component. From cf3c76525738bac2bbead6f6b2e889661f828aa6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 5 Sep 2024 16:24:02 +0000 Subject: [PATCH 28/28] Update hooks documentation from branch. --- src/Hooks/README.md | 505 ++++++++++++++++++++++---------------------- 1 file changed, 253 insertions(+), 252 deletions(-) diff --git a/src/Hooks/README.md b/src/Hooks/README.md index 9ae3cb263e..7454dc1ec7 100644 --- a/src/Hooks/README.md +++ b/src/Hooks/README.md @@ -8,7 +8,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [BulkEditInitializer.php#L36](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Admin/BulkEdit/BulkEditInitializer.php#L36) +- [BulkEditInitializer.php#L36](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Admin/BulkEdit/BulkEditInitializer.php#L36) ## jetpack_verify_api_authorization_request_error_double_encode @@ -16,7 +16,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [JetpackWPCOM.php#L223](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Integration/JetpackWPCOM.php#L223) +- [JetpackWPCOM.php#L223](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Integration/JetpackWPCOM.php#L223) ## woocommerce_admin_disabled @@ -24,7 +24,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [WCAdminValidator.php#L38](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Internal/Requirements/WCAdminValidator.php#L38) +- [WCAdminValidator.php#L38](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Internal/Requirements/WCAdminValidator.php#L38) ## woocommerce_gla_ads_billing_setup_status @@ -32,8 +32,8 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [Ads.php#L113](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Ads.php#L113) -- [Ads.php#L122](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Ads.php#L122) +- [Ads.php#L113](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Ads.php#L113) +- [Ads.php#L122](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Ads.php#L122) ## woocommerce_gla_ads_client_exception @@ -41,24 +41,24 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [AdsCampaign.php#L163](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/AdsCampaign.php#L163) -- [AdsCampaign.php#L206](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/AdsCampaign.php#L206) -- [AdsCampaign.php#L273](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/AdsCampaign.php#L273) -- [AdsCampaign.php#L328](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/AdsCampaign.php#L328) -- [AdsCampaign.php#L365](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/AdsCampaign.php#L365) -- [AdsConversionAction.php#L100](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/AdsConversionAction.php#L100) -- [AdsConversionAction.php#L146](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/AdsConversionAction.php#L146) -- [AdsAssetGroupAsset.php#L135](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/AdsAssetGroupAsset.php#L135) -- [AdsAssetGroupAsset.php#L201](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/AdsAssetGroupAsset.php#L201) -- [AdsAssetGroup.php#L113](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/AdsAssetGroup.php#L113) -- [AdsAssetGroup.php#L261](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/AdsAssetGroup.php#L261) -- [AdsAssetGroup.php#L325](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/AdsAssetGroup.php#L325) -- [AdsReport.php#L105](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/AdsReport.php#L105) -- [Ads.php#L74](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Ads.php#L74) -- [Ads.php#L118](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Ads.php#L118) -- [Ads.php#L167](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Ads.php#L167) -- [Ads.php#L209](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Ads.php#L209) -- [Ads.php#L319](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Ads.php#L319) +- [Ads.php#L74](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Ads.php#L74) +- [Ads.php#L118](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Ads.php#L118) +- [Ads.php#L167](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Ads.php#L167) +- [Ads.php#L209](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Ads.php#L209) +- [Ads.php#L319](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Ads.php#L319) +- [AdsAssetGroupAsset.php#L135](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/AdsAssetGroupAsset.php#L135) +- [AdsAssetGroupAsset.php#L201](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/AdsAssetGroupAsset.php#L201) +- [AdsAssetGroup.php#L113](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/AdsAssetGroup.php#L113) +- [AdsAssetGroup.php#L261](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/AdsAssetGroup.php#L261) +- [AdsAssetGroup.php#L325](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/AdsAssetGroup.php#L325) +- [AdsReport.php#L105](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/AdsReport.php#L105) +- [AdsCampaign.php#L163](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/AdsCampaign.php#L163) +- [AdsCampaign.php#L206](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/AdsCampaign.php#L206) +- [AdsCampaign.php#L273](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/AdsCampaign.php#L273) +- [AdsCampaign.php#L328](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/AdsCampaign.php#L328) +- [AdsCampaign.php#L365](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/AdsCampaign.php#L365) +- [AdsConversionAction.php#L100](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/AdsConversionAction.php#L100) +- [AdsConversionAction.php#L146](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/AdsConversionAction.php#L146) ## woocommerce_gla_ads_setup_completed @@ -66,7 +66,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [SetupCompleteController.php#L66](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/Ads/SetupCompleteController.php#L66) +- [SetupCompleteController.php#L66](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/Ads/SetupCompleteController.php#L66) ## woocommerce_gla_attribute_applicable_product_types_ @@ -74,8 +74,8 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [AttributesForm.php#L98](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Admin/Product/Attributes/AttributesForm.php#L98) -- [AttributeManager.php#L368](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/Attributes/AttributeManager.php#L368) +- [AttributesForm.php#L98](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Admin/Product/Attributes/AttributesForm.php#L98) +- [AttributeManager.php#L368](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/Attributes/AttributeManager.php#L368) ## woocommerce_gla_attribute_hidden_product_types_ @@ -83,7 +83,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [AttributesForm.php#L103](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Admin/Product/Attributes/AttributesForm.php#L103) +- [AttributesForm.php#L103](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Admin/Product/Attributes/AttributesForm.php#L103) ## woocommerce_gla_attribute_mapping_sources @@ -91,7 +91,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [IsFieldTrait.php#L31](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/AttributeMapping/Traits/IsFieldTrait.php#L31) +- [IsFieldTrait.php#L31](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/AttributeMapping/Traits/IsFieldTrait.php#L31) ## woocommerce_gla_attribute_mapping_sources_custom_attributes @@ -99,7 +99,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [IsFieldTrait.php#L125](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/AttributeMapping/Traits/IsFieldTrait.php#L125) +- [IsFieldTrait.php#L125](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/AttributeMapping/Traits/IsFieldTrait.php#L125) ## woocommerce_gla_attribute_mapping_sources_global_attributes @@ -107,7 +107,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [IsFieldTrait.php#L64](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/AttributeMapping/Traits/IsFieldTrait.php#L64) +- [IsFieldTrait.php#L64](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/AttributeMapping/Traits/IsFieldTrait.php#L64) ## woocommerce_gla_attribute_mapping_sources_product_fields @@ -115,7 +115,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [IsFieldTrait.php#L115](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/AttributeMapping/Traits/IsFieldTrait.php#L115) +- [IsFieldTrait.php#L115](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/AttributeMapping/Traits/IsFieldTrait.php#L115) ## woocommerce_gla_attribute_mapping_sources_taxonomies @@ -123,7 +123,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [IsFieldTrait.php#L65](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/AttributeMapping/Traits/IsFieldTrait.php#L65) +- [IsFieldTrait.php#L65](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/AttributeMapping/Traits/IsFieldTrait.php#L65) ## woocommerce_gla_attributes_tab_applicable_product_types @@ -131,7 +131,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [AttributesTrait.php#L18](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Admin/Product/Attributes/AttributesTrait.php#L18) +- [AttributesTrait.php#L18](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Admin/Product/Attributes/AttributesTrait.php#L18) ## woocommerce_gla_batch_deleted_products @@ -139,7 +139,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [ProductSyncer.php#L228](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductSyncer.php#L228) +- [ProductSyncer.php#L228](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductSyncer.php#L228) ## woocommerce_gla_batch_retry_delete_products @@ -147,7 +147,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [ProductSyncer.php#L342](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductSyncer.php#L342) +- [ProductSyncer.php#L342](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductSyncer.php#L342) ## woocommerce_gla_batch_retry_update_products @@ -155,7 +155,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [ProductSyncer.php#L286](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductSyncer.php#L286) +- [ProductSyncer.php#L286](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductSyncer.php#L286) ## woocommerce_gla_batch_updated_products @@ -163,7 +163,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [ProductSyncer.php#L142](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductSyncer.php#L142) +- [ProductSyncer.php#L142](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductSyncer.php#L142) ## woocommerce_gla_batched_job_size @@ -171,8 +171,8 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [AbstractBatchedActionSchedulerJob.php#L104](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Jobs/AbstractBatchedActionSchedulerJob.php#L104) -- [UpdateSyncableProductsCount.php#L74](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Jobs/UpdateSyncableProductsCount.php#L74) +- [AbstractBatchedActionSchedulerJob.php#L104](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Jobs/AbstractBatchedActionSchedulerJob.php#L104) +- [UpdateSyncableProductsCount.php#L74](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Jobs/UpdateSyncableProductsCount.php#L74) ## woocommerce_gla_bulk_update_coupon @@ -180,7 +180,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [CouponBulkEdit.php#L133](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Admin/BulkEdit/CouponBulkEdit.php#L133) +- [CouponBulkEdit.php#L133](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Admin/BulkEdit/CouponBulkEdit.php#L133) ## woocommerce_gla_conversion_action_name @@ -188,7 +188,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [AdsConversionAction.php#L67](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/AdsConversionAction.php#L67) +- [AdsConversionAction.php#L67](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/AdsConversionAction.php#L67) ## woocommerce_gla_coupon_destinations @@ -196,7 +196,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [WCCouponAdapter.php#L391](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/WCCouponAdapter.php#L391) +- [WCCouponAdapter.php#L391](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/WCCouponAdapter.php#L391) ## woocommerce_gla_coupon_is_ready_to_notify @@ -204,7 +204,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [CouponHelper.php#L359](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponHelper.php#L359) +- [CouponHelper.php#L359](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponHelper.php#L359) ## woocommerce_gla_coupons_delete_retry_on_failure @@ -212,7 +212,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [CouponSyncer.php#L438](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L438) +- [CouponSyncer.php#L438](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L438) ## woocommerce_gla_coupons_update_retry_on_failure @@ -220,7 +220,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [CouponSyncer.php#L400](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L400) +- [CouponSyncer.php#L400](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L400) ## woocommerce_gla_custom_merchant_issues @@ -228,7 +228,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [MerchantStatuses.php#L538](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/MerchantCenter/MerchantStatuses.php#L538) +- [MerchantStatuses.php#L538](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/MerchantCenter/MerchantStatuses.php#L538) ## woocommerce_gla_debug_message @@ -236,40 +236,40 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [MerchantCenterService.php#L325](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/MerchantCenter/MerchantCenterService.php#L325) -- [MerchantStatuses.php#L413](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/MerchantCenter/MerchantStatuses.php#L413) -- [MerchantStatuses.php#L667](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/MerchantCenter/MerchantStatuses.php#L667) -- [MerchantStatuses.php#L916](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/MerchantCenter/MerchantStatuses.php#L916) -- [NotificationsService.php#L118](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/WP/NotificationsService.php#L118) -- [IssuesController.php#L95](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/MerchantCenter/IssuesController.php#L95) -- [CleanupSyncedProducts.php#L74](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Jobs/CleanupSyncedProducts.php#L74) -- [ActionSchedulerJobMonitor.php#L117](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Jobs/ActionSchedulerJobMonitor.php#L117) -- [ActionSchedulerJobMonitor.php#L126](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Jobs/ActionSchedulerJobMonitor.php#L126) -- [ProductSyncer.php#L148](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductSyncer.php#L148) -- [ProductSyncer.php#L158](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductSyncer.php#L158) -- [ProductSyncer.php#L234](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductSyncer.php#L234) -- [ProductSyncer.php#L244](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductSyncer.php#L244) -- [WCProductAdapter.php#L205](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/WCProductAdapter.php#L205) -- [ProductHelper.php#L612](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductHelper.php#L612) -- [ProductHelper.php#L645](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductHelper.php#L645) -- [SyncerHooks.php#L251](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/SyncerHooks.php#L251) -- [BatchProductHelper.php#L208](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/BatchProductHelper.php#L208) -- [BatchProductHelper.php#L231](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/BatchProductHelper.php#L231) -- [ProductRepository.php#L315](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductRepository.php#L315) -- [CouponHelper.php#L272](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponHelper.php#L272) -- [CouponHelper.php#L309](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponHelper.php#L309) -- [SyncerHooks.php#L210](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/SyncerHooks.php#L210) -- [CouponSyncer.php#L103](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L103) -- [CouponSyncer.php#L116](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L116) -- [CouponSyncer.php#L141](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L141) -- [CouponSyncer.php#L155](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L155) -- [CouponSyncer.php#L172](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L172) -- [CouponSyncer.php#L195](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L195) -- [CouponSyncer.php#L260](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L260) -- [CouponSyncer.php#L309](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L309) -- [CouponSyncer.php#L328](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L328) -- [ProductMetaQueryHelper.php#L109](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/DB/ProductMetaQueryHelper.php#L109) -- [ProductMetaQueryHelper.php#L140](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/DB/ProductMetaQueryHelper.php#L140) +- [MerchantStatuses.php#L413](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/MerchantCenter/MerchantStatuses.php#L413) +- [MerchantStatuses.php#L667](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/MerchantCenter/MerchantStatuses.php#L667) +- [MerchantStatuses.php#L916](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/MerchantCenter/MerchantStatuses.php#L916) +- [MerchantCenterService.php#L325](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/MerchantCenter/MerchantCenterService.php#L325) +- [ProductMetaQueryHelper.php#L109](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/DB/ProductMetaQueryHelper.php#L109) +- [ProductMetaQueryHelper.php#L140](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/DB/ProductMetaQueryHelper.php#L140) +- [ProductSyncer.php#L148](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductSyncer.php#L148) +- [ProductSyncer.php#L158](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductSyncer.php#L158) +- [ProductSyncer.php#L234](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductSyncer.php#L234) +- [ProductSyncer.php#L244](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductSyncer.php#L244) +- [ProductHelper.php#L612](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductHelper.php#L612) +- [ProductHelper.php#L645](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductHelper.php#L645) +- [WCProductAdapter.php#L205](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/WCProductAdapter.php#L205) +- [ProductRepository.php#L315](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductRepository.php#L315) +- [BatchProductHelper.php#L208](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/BatchProductHelper.php#L208) +- [BatchProductHelper.php#L231](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/BatchProductHelper.php#L231) +- [SyncerHooks.php#L251](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/SyncerHooks.php#L251) +- [NotificationsService.php#L128](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/WP/NotificationsService.php#L128) +- [IssuesController.php#L95](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/MerchantCenter/IssuesController.php#L95) +- [CouponSyncer.php#L103](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L103) +- [CouponSyncer.php#L116](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L116) +- [CouponSyncer.php#L141](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L141) +- [CouponSyncer.php#L155](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L155) +- [CouponSyncer.php#L172](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L172) +- [CouponSyncer.php#L195](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L195) +- [CouponSyncer.php#L260](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L260) +- [CouponSyncer.php#L309](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L309) +- [CouponSyncer.php#L328](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L328) +- [CouponHelper.php#L272](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponHelper.php#L272) +- [CouponHelper.php#L309](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponHelper.php#L309) +- [SyncerHooks.php#L210](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/SyncerHooks.php#L210) +- [CleanupSyncedProducts.php#L74](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Jobs/CleanupSyncedProducts.php#L74) +- [ActionSchedulerJobMonitor.php#L117](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Jobs/ActionSchedulerJobMonitor.php#L117) +- [ActionSchedulerJobMonitor.php#L126](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Jobs/ActionSchedulerJobMonitor.php#L126) ## woocommerce_gla_deleted_promotions @@ -277,7 +277,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [CouponSyncer.php#L322](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L322) +- [CouponSyncer.php#L322](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L322) ## woocommerce_gla_dimension_unit @@ -285,7 +285,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [WCProductAdapter.php#L431](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/WCProductAdapter.php#L431) +- [WCProductAdapter.php#L431](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/WCProductAdapter.php#L431) ## woocommerce_gla_disable_gtag_tracking @@ -293,7 +293,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [GlobalSiteTag.php#L545](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Google/GlobalSiteTag.php#L545) +- [GlobalSiteTag.php#L545](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Google/GlobalSiteTag.php#L545) ## woocommerce_gla_enable_connection_test @@ -301,7 +301,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [ConnectionTest.php#L97](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/ConnectionTest.php#L97) +- [ConnectionTest.php#L98](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/ConnectionTest.php#L98) ## woocommerce_gla_enable_debug_logging @@ -309,7 +309,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [DebugLogger.php#L33](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Logging/DebugLogger.php#L33) +- [DebugLogger.php#L33](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Logging/DebugLogger.php#L33) ## woocommerce_gla_enable_mcm @@ -317,7 +317,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [GLAChannel.php#L86](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/MultichannelMarketing/GLAChannel.php#L86) +- [GLAChannel.php#L86](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/MultichannelMarketing/GLAChannel.php#L86) ## woocommerce_gla_enable_reports @@ -325,7 +325,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [Admin.php#L271](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Admin/Admin.php#L271) +- [Admin.php#L271](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Admin/Admin.php#L271) ## woocommerce_gla_error @@ -333,29 +333,29 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [OAuthService.php#L244](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/WP/OAuthService.php#L244) -- [NotificationsService.php#L135](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/WP/NotificationsService.php#L135) -- [AbstractItemNotificationJob.php#L28](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Jobs/Notifications/AbstractItemNotificationJob.php#L28) -- [AbstractItemNotificationJob.php#L46](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Jobs/Notifications/AbstractItemNotificationJob.php#L46) -- [ProductSyncer.php#L289](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductSyncer.php#L289) -- [ProductSyncer.php#L312](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductSyncer.php#L312) -- [ProductSyncer.php#L345](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductSyncer.php#L345) -- [ProductSyncer.php#L360](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductSyncer.php#L360) -- [ProductSyncer.php#L367](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductSyncer.php#L367) -- [ProductMetaHandler.php#L178](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductMetaHandler.php#L178) -- [ProductHelper.php#L504](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductHelper.php#L504) -- [ProductHelper.php#L721](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductHelper.php#L721) -- [AttributeManager.php#L342](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/Attributes/AttributeManager.php#L342) -- [BatchProductHelper.php#L248](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/BatchProductHelper.php#L248) -- [CouponSyncer.php#L410](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L410) -- [CouponSyncer.php#L448](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L448) -- [CouponSyncer.php#L466](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L466) -- [CouponSyncer.php#L481](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L481) -- [CouponMetaHandler.php#L227](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponMetaHandler.php#L227) -- [ProductMetaQueryHelper.php#L156](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/DB/ProductMetaQueryHelper.php#L156) -- [PHPView.php#L136](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/View/PHPView.php#L136) -- [PHPView.php#L164](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/View/PHPView.php#L164) -- [PHPView.php#L208](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/View/PHPView.php#L208) +- [PHPView.php#L136](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/View/PHPView.php#L136) +- [PHPView.php#L164](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/View/PHPView.php#L164) +- [PHPView.php#L208](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/View/PHPView.php#L208) +- [ProductMetaQueryHelper.php#L156](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/DB/ProductMetaQueryHelper.php#L156) +- [ProductMetaHandler.php#L178](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductMetaHandler.php#L178) +- [ProductSyncer.php#L289](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductSyncer.php#L289) +- [ProductSyncer.php#L312](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductSyncer.php#L312) +- [ProductSyncer.php#L345](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductSyncer.php#L345) +- [ProductSyncer.php#L360](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductSyncer.php#L360) +- [ProductSyncer.php#L367](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductSyncer.php#L367) +- [AttributeManager.php#L342](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/Attributes/AttributeManager.php#L342) +- [ProductHelper.php#L504](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductHelper.php#L504) +- [ProductHelper.php#L721](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductHelper.php#L721) +- [BatchProductHelper.php#L248](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/BatchProductHelper.php#L248) +- [OAuthService.php#L244](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/WP/OAuthService.php#L244) +- [NotificationsService.php#L145](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/WP/NotificationsService.php#L145) +- [CouponSyncer.php#L410](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L410) +- [CouponSyncer.php#L448](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L448) +- [CouponSyncer.php#L466](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L466) +- [CouponSyncer.php#L481](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L481) +- [CouponMetaHandler.php#L227](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponMetaHandler.php#L227) +- [AbstractItemNotificationJob.php#L28](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Jobs/Notifications/AbstractItemNotificationJob.php#L28) +- [AbstractItemNotificationJob.php#L46](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Jobs/Notifications/AbstractItemNotificationJob.php#L46) ## woocommerce_gla_exception @@ -363,32 +363,33 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [DateTime.php#L44](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Admin/Input/DateTime.php#L44) -- [DateTime.php#L80](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Admin/Input/DateTime.php#L80) -- [ChannelVisibilityMetaBox.php#L176](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Admin/MetaBox/ChannelVisibilityMetaBox.php#L176) -- [CouponChannelVisibilityMetaBox.php#L197](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Admin/MetaBox/CouponChannelVisibilityMetaBox.php#L197) -- [ProductVisibilityController.php#L193](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/MerchantCenter/ProductVisibilityController.php#L193) -- [ContactInformationController.php#L242](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/MerchantCenter/ContactInformationController.php#L242) -- [SettingsSyncController.php#L96](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/MerchantCenter/SettingsSyncController.php#L96) -- [RequestReviewController.php#L284](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/MerchantCenter/RequestReviewController.php#L284) -- [RequestReviewController.php#L329](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/MerchantCenter/RequestReviewController.php#L329) -- [Connection.php#L95](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Connection.php#L95) -- [Middleware.php#L458](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Middleware.php#L458) -- [PluginUpdate.php#L75](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Jobs/Update/PluginUpdate.php#L75) -- [ProductSyncer.php#L133](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductSyncer.php#L133) -- [ProductSyncer.php#L219](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductSyncer.php#L219) -- [ProductHelper.php#L284](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductHelper.php#L284) -- [NoteInitializer.php#L74](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Notes/NoteInitializer.php#L74) -- [NoteInitializer.php#L116](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Notes/NoteInitializer.php#L116) -- [CouponSyncer.php#L203](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L203) -- [CouponSyncer.php#L293](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L293) -- [WooCommercePreOrders.php#L111](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Integration/WooCommercePreOrders.php#L111) -- [WooCommercePreOrders.php#L131](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Integration/WooCommercePreOrders.php#L131) -- [PHPView.php#L87](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/View/PHPView.php#L87) -- [ClearProductStatsCache.php#L61](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Event/ClearProductStatsCache.php#L61) -- [ScriptWithBuiltDependenciesAsset.php#L66](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Assets/ScriptWithBuiltDependenciesAsset.php#L66) -- [GoogleServiceProvider.php#L237](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Internal/DependencyManagement/GoogleServiceProvider.php#L237) -- [GoogleServiceProvider.php#L247](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Internal/DependencyManagement/GoogleServiceProvider.php#L247) +- [CouponChannelVisibilityMetaBox.php#L197](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Admin/MetaBox/CouponChannelVisibilityMetaBox.php#L197) +- [ChannelVisibilityMetaBox.php#L176](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Admin/MetaBox/ChannelVisibilityMetaBox.php#L176) +- [DateTime.php#L44](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Admin/Input/DateTime.php#L44) +- [DateTime.php#L80](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Admin/Input/DateTime.php#L80) +- [GoogleServiceProvider.php#L237](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Internal/DependencyManagement/GoogleServiceProvider.php#L237) +- [GoogleServiceProvider.php#L247](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Internal/DependencyManagement/GoogleServiceProvider.php#L247) +- [PHPView.php#L87](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/View/PHPView.php#L87) +- [ProductSyncer.php#L133](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductSyncer.php#L133) +- [ProductSyncer.php#L219](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductSyncer.php#L219) +- [ProductHelper.php#L284](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductHelper.php#L284) +- [ScriptWithBuiltDependenciesAsset.php#L66](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Assets/ScriptWithBuiltDependenciesAsset.php#L66) +- [BaseAsset.php#L218](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Assets/BaseAsset.php#L218) +- [NoteInitializer.php#L74](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Notes/NoteInitializer.php#L74) +- [NoteInitializer.php#L116](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Notes/NoteInitializer.php#L116) +- [ProductVisibilityController.php#L193](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/MerchantCenter/ProductVisibilityController.php#L193) +- [ContactInformationController.php#L242](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/MerchantCenter/ContactInformationController.php#L242) +- [SettingsSyncController.php#L96](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/MerchantCenter/SettingsSyncController.php#L96) +- [RequestReviewController.php#L284](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/MerchantCenter/RequestReviewController.php#L284) +- [RequestReviewController.php#L329](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/MerchantCenter/RequestReviewController.php#L329) +- [Connection.php#L95](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Connection.php#L95) +- [Middleware.php#L458](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Middleware.php#L458) +- [CouponSyncer.php#L203](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L203) +- [CouponSyncer.php#L293](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L293) +- [PluginUpdate.php#L75](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Jobs/Update/PluginUpdate.php#L75) +- [ClearProductStatsCache.php#L61](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Event/ClearProductStatsCache.php#L61) +- [WooCommercePreOrders.php#L111](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Integration/WooCommercePreOrders.php#L111) +- [WooCommercePreOrders.php#L131](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Integration/WooCommercePreOrders.php#L131) ## woocommerce_gla_force_run_install @@ -396,7 +397,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [Installer.php#L82](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Installer.php#L82) +- [Installer.php#L82](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Installer.php#L82) ## woocommerce_gla_get_google_product_offer_id @@ -404,7 +405,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [WCProductAdapter.php#L284](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/WCProductAdapter.php#L284) +- [WCProductAdapter.php#L284](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/WCProductAdapter.php#L284) ## woocommerce_gla_get_sync_ready_products_filter @@ -412,7 +413,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [ProductFilter.php#L61](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductFilter.php#L61) +- [ProductFilter.php#L61](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductFilter.php#L61) ## woocommerce_gla_get_sync_ready_products_pre_filter @@ -420,7 +421,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [ProductFilter.php#L47](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductFilter.php#L47) +- [ProductFilter.php#L47](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductFilter.php#L47) ## woocommerce_gla_get_wc_product_id @@ -428,7 +429,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [ProductHelper.php#L329](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductHelper.php#L329) +- [ProductHelper.php#L329](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductHelper.php#L329) ## woocommerce_gla_gtag_consent @@ -436,7 +437,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [GlobalSiteTag.php#L321](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Google/GlobalSiteTag.php#L321) +- [GlobalSiteTag.php#L321](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Google/GlobalSiteTag.php#L321) ## woocommerce_gla_guzzle_client_exception @@ -444,19 +445,19 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [Connection.php#L70](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Connection.php#L70) -- [Connection.php#L91](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Connection.php#L91) -- [Connection.php#L126](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Connection.php#L126) -- [Middleware.php#L82](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Middleware.php#L82) -- [Middleware.php#L180](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Middleware.php#L180) -- [Middleware.php#L230](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Middleware.php#L230) -- [Middleware.php#L275](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Middleware.php#L275) -- [Middleware.php#L347](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Middleware.php#L347) -- [Middleware.php#L397](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Middleware.php#L397) -- [Middleware.php#L421](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Middleware.php#L421) -- [Middleware.php#L455](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Middleware.php#L455) -- [Middleware.php#L603](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Middleware.php#L603) -- [GoogleServiceProvider.php#L266](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Internal/DependencyManagement/GoogleServiceProvider.php#L266) +- [GoogleServiceProvider.php#L266](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Internal/DependencyManagement/GoogleServiceProvider.php#L266) +- [Connection.php#L70](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Connection.php#L70) +- [Connection.php#L91](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Connection.php#L91) +- [Connection.php#L126](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Connection.php#L126) +- [Middleware.php#L82](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Middleware.php#L82) +- [Middleware.php#L180](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Middleware.php#L180) +- [Middleware.php#L230](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Middleware.php#L230) +- [Middleware.php#L275](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Middleware.php#L275) +- [Middleware.php#L347](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Middleware.php#L347) +- [Middleware.php#L397](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Middleware.php#L397) +- [Middleware.php#L421](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Middleware.php#L421) +- [Middleware.php#L455](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Middleware.php#L455) +- [Middleware.php#L603](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Middleware.php#L603) ## woocommerce_gla_guzzle_invalid_response @@ -464,15 +465,15 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [RequestReviewController.php#L317](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/MerchantCenter/RequestReviewController.php#L317) -- [Connection.php#L66](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Connection.php#L66) -- [Connection.php#L121](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Connection.php#L121) -- [Middleware.php#L161](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Middleware.php#L161) -- [Middleware.php#L225](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Middleware.php#L225) -- [Middleware.php#L269](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Middleware.php#L269) -- [Middleware.php#L342](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Middleware.php#L342) -- [Middleware.php#L392](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Middleware.php#L392) -- [Middleware.php#L595](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Middleware.php#L595) +- [RequestReviewController.php#L317](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/MerchantCenter/RequestReviewController.php#L317) +- [Connection.php#L66](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Connection.php#L66) +- [Connection.php#L121](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Connection.php#L121) +- [Middleware.php#L161](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Middleware.php#L161) +- [Middleware.php#L225](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Middleware.php#L225) +- [Middleware.php#L269](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Middleware.php#L269) +- [Middleware.php#L342](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Middleware.php#L342) +- [Middleware.php#L392](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Middleware.php#L392) +- [Middleware.php#L595](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Middleware.php#L595) ## woocommerce_gla_handle_shipping_method_to_rates @@ -480,7 +481,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [ZoneMethodsParser.php#L109](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Shipping/ZoneMethodsParser.php#L109) +- [ZoneMethodsParser.php#L109](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Shipping/ZoneMethodsParser.php#L109) ## woocommerce_gla_hidden_coupon_types @@ -488,7 +489,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [CouponSyncer.php#L379](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L379) +- [CouponSyncer.php#L379](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L379) ## woocommerce_gla_job_failure_rate_threshold @@ -496,7 +497,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [ActionSchedulerJobMonitor.php#L186](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Jobs/ActionSchedulerJobMonitor.php#L186) +- [ActionSchedulerJobMonitor.php#L186](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Jobs/ActionSchedulerJobMonitor.php#L186) ## woocommerce_gla_job_failure_timeframe @@ -504,7 +505,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [ActionSchedulerJobMonitor.php#L195](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Jobs/ActionSchedulerJobMonitor.php#L195) +- [ActionSchedulerJobMonitor.php#L195](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Jobs/ActionSchedulerJobMonitor.php#L195) ## woocommerce_gla_mapping_rules_change @@ -512,9 +513,9 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [AttributeMappingRulesController.php#L143](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/AttributeMapping/AttributeMappingRulesController.php#L143) -- [AttributeMappingRulesController.php#L166](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/AttributeMapping/AttributeMappingRulesController.php#L166) -- [AttributeMappingRulesController.php#L188](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/AttributeMapping/AttributeMappingRulesController.php#L188) +- [AttributeMappingRulesController.php#L143](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/AttributeMapping/AttributeMappingRulesController.php#L143) +- [AttributeMappingRulesController.php#L166](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/AttributeMapping/AttributeMappingRulesController.php#L166) +- [AttributeMappingRulesController.php#L188](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/AttributeMapping/AttributeMappingRulesController.php#L188) ## woocommerce_gla_mc_account_review_lifetime @@ -522,7 +523,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [RequestReviewStatuses.php#L157](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Google/RequestReviewStatuses.php#L157) +- [RequestReviewStatuses.php#L157](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Google/RequestReviewStatuses.php#L157) ## woocommerce_gla_mc_client_exception @@ -530,17 +531,17 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [Merchant.php#L95](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Merchant.php#L95) -- [Merchant.php#L143](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Merchant.php#L143) -- [Merchant.php#L175](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Merchant.php#L175) -- [Merchant.php#L194](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Merchant.php#L194) -- [Merchant.php#L250](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Merchant.php#L250) -- [Merchant.php#L295](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Merchant.php#L295) -- [Merchant.php#L357](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Merchant.php#L357) -- [Merchant.php#L390](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Merchant.php#L390) -- [Merchant.php#L423](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Merchant.php#L423) -- [MerchantReport.php#L115](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/MerchantReport.php#L115) -- [MerchantReport.php#L183](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/MerchantReport.php#L183) +- [MerchantReport.php#L115](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/MerchantReport.php#L115) +- [MerchantReport.php#L183](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/MerchantReport.php#L183) +- [Merchant.php#L95](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Merchant.php#L95) +- [Merchant.php#L143](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Merchant.php#L143) +- [Merchant.php#L175](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Merchant.php#L175) +- [Merchant.php#L194](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Merchant.php#L194) +- [Merchant.php#L250](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Merchant.php#L250) +- [Merchant.php#L295](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Merchant.php#L295) +- [Merchant.php#L357](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Merchant.php#L357) +- [Merchant.php#L390](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Merchant.php#L390) +- [Merchant.php#L423](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Merchant.php#L423) ## woocommerce_gla_mc_settings_sync @@ -548,7 +549,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [SettingsSyncController.php#L69](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/MerchantCenter/SettingsSyncController.php#L69) +- [SettingsSyncController.php#L69](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/MerchantCenter/SettingsSyncController.php#L69) ## woocommerce_gla_mc_status_lifetime @@ -556,7 +557,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [MerchantStatuses.php#L935](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/MerchantCenter/MerchantStatuses.php#L935) +- [MerchantStatuses.php#L935](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/MerchantCenter/MerchantStatuses.php#L935) ## woocommerce_gla_merchant_issue_override @@ -564,7 +565,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [IssuesController.php#L85](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/MerchantCenter/IssuesController.php#L85) +- [IssuesController.php#L85](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/MerchantCenter/IssuesController.php#L85) ## woocommerce_gla_merchant_status_presync_issues_chunk @@ -572,7 +573,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [MerchantStatuses.php#L596](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/MerchantCenter/MerchantStatuses.php#L596) +- [MerchantStatuses.php#L596](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/MerchantCenter/MerchantStatuses.php#L596) ## woocommerce_gla_notification_job_can_schedule @@ -580,7 +581,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [AbstractNotificationJob.php#L86](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Jobs/Notifications/AbstractNotificationJob.php#L86) +- [AbstractNotificationJob.php#L86](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Jobs/Notifications/AbstractNotificationJob.php#L86) ## woocommerce_gla_notifications_enabled @@ -588,7 +589,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [NotificationsService.php#L176](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/WP/NotificationsService.php#L176) +- [NotificationsService.php#L187](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/WP/NotificationsService.php#L187) ## woocommerce_gla_notify @@ -596,7 +597,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [NotificationsService.php#L93](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/WP/NotificationsService.php#L93) +- [NotificationsService.php#L103](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/WP/NotificationsService.php#L103) ## woocommerce_gla_options_deleted_ @@ -604,7 +605,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [Options.php#L103](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Options/Options.php#L103) +- [Options.php#L103](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Options/Options.php#L103) ## woocommerce_gla_options_updated_ @@ -612,8 +613,8 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [Options.php#L65](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Options/Options.php#L65) -- [Options.php#L85](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Options/Options.php#L85) +- [Options.php#L65](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Options/Options.php#L65) +- [Options.php#L85](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Options/Options.php#L85) ## woocommerce_gla_partner_app_auth_failure @@ -621,7 +622,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [Middleware.php#L589](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Middleware.php#L589) +- [Middleware.php#L589](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Middleware.php#L589) ## woocommerce_gla_prepared_response_->GET_ROUTE_NAME @@ -629,7 +630,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [BaseController.php#L160](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/BaseController.php#L160) +- [BaseController.php#L160](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/BaseController.php#L160) ## woocommerce_gla_product_attribute_types @@ -637,7 +638,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [AttributeManager.php#L316](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/Attributes/AttributeManager.php#L316) +- [AttributeManager.php#L316](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/Attributes/AttributeManager.php#L316) ## woocommerce_gla_product_attribute_value_ @@ -645,8 +646,8 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [WCProductAdapter.php#L916](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/WCProductAdapter.php#L916) -- [WCProductAdapter.php#L967](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/WCProductAdapter.php#L967) +- [WCProductAdapter.php#L916](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/WCProductAdapter.php#L916) +- [WCProductAdapter.php#L967](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/WCProductAdapter.php#L967) ## woocommerce_gla_product_attribute_value_description @@ -654,7 +655,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [WCProductAdapter.php#L352](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/WCProductAdapter.php#L352) +- [WCProductAdapter.php#L352](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/WCProductAdapter.php#L352) ## woocommerce_gla_product_attribute_value_options_::get_id @@ -662,7 +663,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [AttributesForm.php#L127](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Admin/Product/Attributes/AttributesForm.php#L127) +- [AttributesForm.php#L127](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Admin/Product/Attributes/AttributesForm.php#L127) ## woocommerce_gla_product_attribute_value_price @@ -670,7 +671,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [WCProductAdapter.php#L640](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/WCProductAdapter.php#L640) +- [WCProductAdapter.php#L640](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/WCProductAdapter.php#L640) ## woocommerce_gla_product_attribute_value_sale_price @@ -678,7 +679,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [WCProductAdapter.php#L692](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/WCProductAdapter.php#L692) +- [WCProductAdapter.php#L692](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/WCProductAdapter.php#L692) ## woocommerce_gla_product_attribute_values @@ -686,7 +687,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [WCProductAdapter.php#L166](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/WCProductAdapter.php#L166) +- [WCProductAdapter.php#L166](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/WCProductAdapter.php#L166) ## woocommerce_gla_product_description_apply_shortcodes @@ -694,7 +695,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [WCProductAdapter.php#L321](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/WCProductAdapter.php#L321) +- [WCProductAdapter.php#L321](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/WCProductAdapter.php#L321) ## woocommerce_gla_product_is_ready_to_notify @@ -702,7 +703,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [ProductHelper.php#L413](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductHelper.php#L413) +- [ProductHelper.php#L413](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductHelper.php#L413) ## woocommerce_gla_product_property_value_is_virtual @@ -710,7 +711,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [WCProductAdapter.php#L782](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/WCProductAdapter.php#L782) +- [WCProductAdapter.php#L782](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/WCProductAdapter.php#L782) ## woocommerce_gla_product_query_args @@ -718,7 +719,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [ProductRepository.php#L376](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductRepository.php#L376) +- [ProductRepository.php#L376](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductRepository.php#L376) ## woocommerce_gla_product_view_report_page_size @@ -726,7 +727,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [MerchantReport.php#L68](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/MerchantReport.php#L68) +- [MerchantReport.php#L68](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/MerchantReport.php#L68) ## woocommerce_gla_products_delete_retry_on_failure @@ -734,7 +735,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [ProductSyncer.php#L341](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductSyncer.php#L341) +- [ProductSyncer.php#L341](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductSyncer.php#L341) ## woocommerce_gla_products_update_retry_on_failure @@ -742,7 +743,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [ProductSyncer.php#L285](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductSyncer.php#L285) +- [ProductSyncer.php#L285](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductSyncer.php#L285) ## woocommerce_gla_ready_for_syncing @@ -750,7 +751,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [MerchantCenterService.php#L121](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/MerchantCenter/MerchantCenterService.php#L121) +- [MerchantCenterService.php#L121](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/MerchantCenter/MerchantCenterService.php#L121) ## woocommerce_gla_request_review_failure @@ -758,9 +759,9 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [RequestReviewController.php#L113](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/MerchantCenter/RequestReviewController.php#L113) -- [RequestReviewController.php#L125](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/MerchantCenter/RequestReviewController.php#L125) -- [RequestReviewController.php#L310](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/MerchantCenter/RequestReviewController.php#L310) +- [RequestReviewController.php#L113](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/MerchantCenter/RequestReviewController.php#L113) +- [RequestReviewController.php#L125](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/MerchantCenter/RequestReviewController.php#L125) +- [RequestReviewController.php#L310](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/MerchantCenter/RequestReviewController.php#L310) ## woocommerce_gla_request_review_response @@ -768,7 +769,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [RequestReviewController.php#L281](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/MerchantCenter/RequestReviewController.php#L281) +- [RequestReviewController.php#L281](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/MerchantCenter/RequestReviewController.php#L281) ## woocommerce_gla_retry_delete_coupons @@ -776,7 +777,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [CouponSyncer.php#L443](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L443) +- [CouponSyncer.php#L443](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L443) ## woocommerce_gla_retry_update_coupons @@ -784,7 +785,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [CouponSyncer.php#L405](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L405) +- [CouponSyncer.php#L405](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L405) ## woocommerce_gla_site_claim_failure @@ -792,10 +793,10 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [AccountService.php#L388](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/MerchantCenter/AccountService.php#L388) -- [Merchant.php#L96](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Merchant.php#L96) -- [Middleware.php#L270](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Middleware.php#L270) -- [Middleware.php#L276](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Middleware.php#L276) +- [AccountService.php#L396](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/MerchantCenter/AccountService.php#L396) +- [Middleware.php#L270](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Middleware.php#L270) +- [Middleware.php#L276](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Middleware.php#L276) +- [Merchant.php#L96](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Merchant.php#L96) ## woocommerce_gla_site_claim_overwrite_required @@ -803,7 +804,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [AccountService.php#L383](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/MerchantCenter/AccountService.php#L383) +- [AccountService.php#L391](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/MerchantCenter/AccountService.php#L391) ## woocommerce_gla_site_claim_success @@ -811,8 +812,8 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [Merchant.php#L93](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Merchant.php#L93) -- [Middleware.php#L265](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/Middleware.php#L265) +- [Middleware.php#L265](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Middleware.php#L265) +- [Merchant.php#L93](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/Merchant.php#L93) ## woocommerce_gla_site_url @@ -820,7 +821,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [PluginHelper.php#L188](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/PluginHelper.php#L188) +- [PluginHelper.php#L188](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/PluginHelper.php#L188) ## woocommerce_gla_site_verify_failure @@ -828,9 +829,9 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [SiteVerification.php#L58](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/SiteVerification.php#L58) -- [SiteVerification.php#L66](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/SiteVerification.php#L66) -- [SiteVerification.php#L87](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/SiteVerification.php#L87) +- [SiteVerification.php#L58](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/SiteVerification.php#L58) +- [SiteVerification.php#L66](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/SiteVerification.php#L66) +- [SiteVerification.php#L87](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/SiteVerification.php#L87) ## woocommerce_gla_site_verify_success @@ -838,7 +839,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [SiteVerification.php#L85](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/SiteVerification.php#L85) +- [SiteVerification.php#L85](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/SiteVerification.php#L85) ## woocommerce_gla_supported_coupon_types @@ -846,7 +847,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [CouponSyncer.php#L366](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L366) +- [CouponSyncer.php#L366](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L366) ## woocommerce_gla_supported_product_types @@ -854,7 +855,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [ProductSyncer.php#L263](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductSyncer.php#L263) +- [ProductSyncer.php#L263](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductSyncer.php#L263) ## woocommerce_gla_sv_client_exception @@ -862,8 +863,8 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [SiteVerification.php#L120](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/SiteVerification.php#L120) -- [SiteVerification.php#L162](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Google/SiteVerification.php#L162) +- [SiteVerification.php#L120](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/SiteVerification.php#L120) +- [SiteVerification.php#L162](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Google/SiteVerification.php#L162) ## woocommerce_gla_tax_excluded @@ -871,7 +872,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [WCProductAdapter.php#L601](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/WCProductAdapter.php#L601) +- [WCProductAdapter.php#L601](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/WCProductAdapter.php#L601) ## woocommerce_gla_track_event @@ -879,16 +880,16 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [AccountService.php#L587](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/MerchantCenter/AccountService.php#L587) -- [AccountService.php#L606](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/MerchantCenter/AccountService.php#L606) -- [OAuthService.php#L172](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/WP/OAuthService.php#L172) -- [OAuthService.php#L200](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/WP/OAuthService.php#L200) -- [OAuthService.php#L220](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/WP/OAuthService.php#L220) -- [SettingsSyncController.php#L83](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/MerchantCenter/SettingsSyncController.php#L83) -- [CampaignController.php#L170](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/Ads/CampaignController.php#L170) -- [CampaignController.php#L249](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/Ads/CampaignController.php#L249) -- [CampaignController.php#L287](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/Ads/CampaignController.php#L287) -- [SetupCompleteController.php#L75](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/API/Site/Controllers/Ads/SetupCompleteController.php#L75) +- [AccountService.php#L596](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/MerchantCenter/AccountService.php#L596) +- [AccountService.php#L616](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/MerchantCenter/AccountService.php#L616) +- [OAuthService.php#L172](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/WP/OAuthService.php#L172) +- [OAuthService.php#L200](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/WP/OAuthService.php#L200) +- [OAuthService.php#L220](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/WP/OAuthService.php#L220) +- [SettingsSyncController.php#L83](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/MerchantCenter/SettingsSyncController.php#L83) +- [CampaignController.php#L170](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/Ads/CampaignController.php#L170) +- [CampaignController.php#L249](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/Ads/CampaignController.php#L249) +- [CampaignController.php#L287](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/Ads/CampaignController.php#L287) +- [SetupCompleteController.php#L75](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/API/Site/Controllers/Ads/SetupCompleteController.php#L75) ## woocommerce_gla_updated_coupon @@ -896,7 +897,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [CouponSyncer.php#L169](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Coupon/CouponSyncer.php#L169) +- [CouponSyncer.php#L169](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Coupon/CouponSyncer.php#L169) ## woocommerce_gla_url_switch_required @@ -904,7 +905,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [AccountService.php#L468](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/MerchantCenter/AccountService.php#L468) +- [AccountService.php#L476](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/MerchantCenter/AccountService.php#L476) ## woocommerce_gla_url_switch_success @@ -912,7 +913,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [AccountService.php#L491](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/MerchantCenter/AccountService.php#L491) +- [AccountService.php#L499](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/MerchantCenter/AccountService.php#L499) ## woocommerce_gla_use_short_description @@ -920,7 +921,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [WCProductAdapter.php#L298](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/WCProductAdapter.php#L298) +- [WCProductAdapter.php#L298](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/WCProductAdapter.php#L298) ## woocommerce_gla_wcs_url @@ -928,8 +929,8 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [PluginHelper.php#L174](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/PluginHelper.php#L174) -- [PluginHelper.php#L177](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/PluginHelper.php#L177) +- [PluginHelper.php#L174](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/PluginHelper.php#L174) +- [PluginHelper.php#L177](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/PluginHelper.php#L177) ## woocommerce_gla_weight_unit @@ -937,7 +938,7 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [WCProductAdapter.php#L432](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/WCProductAdapter.php#L432) +- [WCProductAdapter.php#L432](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/WCProductAdapter.php#L432) ## woocommerce_hide_invisible_variations @@ -945,5 +946,5 @@ A list of hooks, e.g. `actions` and `filters`, that are defined or used in this **Used in**: -- [ProductHelper.php#L519](https://github.com/woocommerce/google-listings-and-ads/blob/8516d8ff04cae58e49a45ab9912fba57fb8ff973/src/Product/ProductHelper.php#L519) +- [ProductHelper.php#L519](https://github.com/woocommerce/google-listings-and-ads/blob/cf767620ceac4f1c58c916e38e49fd23d26d84e4/src/Product/ProductHelper.php#L519)