PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.5.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.5.0
4.5.1 4.5.0 4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / Sync / WooCommerce / WooCommerceImportCleanupService.php
surecart / app / src / Sync / WooCommerce Last commit date
WooCommerceImportCleanupService.php 2 months ago WooCommerceImportJob.php 2 months ago WooCommerceImportService.php 2 weeks ago WooCommerceImportTask.php 2 months ago WooCommerceProductMapper.php 2 months ago
WooCommerceImportCleanupService.php
78 lines
1 <?php
2
3 namespace SureCart\Sync\WooCommerce;
4
5 use SureCart\Models\Product;
6
7 /**
8 * Cleans up WooCommerce import meta when a SureCart product is deleted,
9 * allowing the WC product to be re-imported.
10 */
11 class WooCommerceImportCleanupService {
12 /**
13 * Bootstrap the service by hooking into product deletion.
14 *
15 * @return void
16 */
17 public function bootstrap() {
18 add_action( 'surecart/product_deleted', [ $this, 'handleProductDeleted' ] );
19 }
20
21 /**
22 * When a SureCart product is deleted, clear the import flag
23 * on the corresponding WooCommerce product so it can be re-imported.
24 *
25 * @param Product $product The deleted SureCart product.
26 * @return void
27 */
28 public function handleProductDeleted( Product $product ) {
29 if ( ! class_exists( 'WooCommerce' ) ) {
30 return;
31 }
32
33 $wc_product_id = $this->getWcProductId( $product );
34 if ( empty( $wc_product_id ) ) {
35 return;
36 }
37
38 // Verify the WC product exists.
39 if ( get_post_type( (int) $wc_product_id ) !== 'product' ) {
40 return;
41 }
42
43 // Clear the import flag so the product can be re-imported.
44 delete_post_meta( (int) $wc_product_id, '_surecart_imported' );
45
46 // Invalidate cached excluded IDs used by WooCommerceImportJob.
47 delete_transient( 'sc_woo_import_excluded_ids' );
48
49 // Reset the fallback purge throttle so the next admin page load re-checks.
50 delete_transient( 'sc_woo_import_purge_checked' );
51 }
52
53 /**
54 * Extract wc_product_id from the product metadata.
55 * Handles both object and array formats.
56 *
57 * @param Product $product The SureCart product.
58 * @return int|null
59 */
60 protected function getWcProductId( Product $product ) {
61 $metadata = $product->metadata ?? null;
62
63 if ( empty( $metadata ) ) {
64 return null;
65 }
66
67 if ( is_object( $metadata ) ) {
68 return $metadata->wc_product_id ?? null;
69 }
70
71 if ( is_array( $metadata ) ) {
72 return $metadata['wc_product_id'] ?? null;
73 }
74
75 return null;
76 }
77 }
78