/** * AJAX handler to manually clear locks */ public function ajax_clear_lock() { check_ajax_referer('aps_nonce', 'security'); if (!current_user_can('manage_woocommerce')) { wp_send_json_error(__('Unauthorized access', 'auto-product-sync'), 403); exit; } $this->cleanup_sync(); wp_send_json_success(__('All locks and transients cleared successfully.', 'auto-product-sync')); } /** * Handle cron endpoint requests */ public function handle_cron_request() { // Check if this is a cron request if (!isset($_GET['aps_cron']) || $_GET['aps_cron'] !== '1') { return; } $logger = new APS_Logger(); // Validate secret key $provided_key = isset($_GET['key']) ? sanitize_text_field($_GET['key']) : ''; $stored_key = get_option('aps_cron_secret_key', ''); if (empty($provided_key) || empty($stored_key) || !hash_equals($stored_key, $provided_key)) { $logger->log("Cron access denied: Invalid or missing key from IP " . $_SERVER['REMOTE_ADDR'], 'error'); wp_send_json_error(array( 'message' => 'Invalid or missing secret key', 'timestamp' => current_time('mysql') ), 403); exit; } $logger->log("Cron triggered from IP " . $_SERVER['REMOTE_ADDR'], 'info'); // Check for existing lock $existing_lock = get_transient(self::$sync_lock_key); if ($existing_lock) { $lock_age = time() - $existing_lock; if ($lock_age > 600) { // Stale lock - clean up $this->cleanup_sync(); $logger->log("Cleared stale lock (age: {$lock_age}s)", 'info'); } else { $logger->log("Cron skipped: Sync already running", 'info'); wp_send_json_error(array( 'message' => 'Sync already running', 'lock_age' => $lock_age, 'timestamp' => current_time('mysql') ), 409); exit; } } // Get products to sync $products = self::get_products_for_bulk_sync(); if (empty($products['products'])) { $logger->log("Cron: No products to sync", 'info'); wp_send_json_success(array( 'message' => 'No products with sync enabled', 'total' => 0, 'timestamp' => current_time('mysql') )); exit; } // Set lock set_transient(self::$sync_lock_key, time(), 600); // Initialize delete_transient('aps_current_batch'); delete_transient('aps_all_products_list'); delete_transient('aps_total_products_count'); delete_transient('aps_bulk_sync_status'); delete_transient('aps_abort_sync'); set_transient('aps_current_batch', 0, 3600); set_transient('aps_bulk_sync_status', array( 'running' => true, 'completed' => 0, 'total' => $products['total'], 'failed' => 0, 'current_product' => 'Starting cron sync...', 'needs_next_batch' => false ), 3600); $logger->log("Cron: Starting bulk sync with {$products['total']} products", 'info'); // Start sync process $extractor = new APS_Price_Extractor(); $extractor->bulk_sync_process(); // Trigger subsequent batches while (true) { $status = get_transient('aps_bulk_sync_status'); if (!$status || !$status['running'] || $status['finished']) { break; } if ($status['needs_next_batch']) { sleep(2); $extractor->bulk_sync_process(); } else { break; } } $logger->log("Cron: Sync completed. Successful: {$final_status['completed']}, Failed: {$final_status['failed']}", 'info'); // Return response wp_send_json_success(array( 'message' => 'Sync completed', 'total' => $final_status['total'], 'completed' => $final_status['completed'], 'failed' => $final_status['failed'], 'timestamp' => current_time('mysql') )); exit; } } https://artinmetal.au/ 2025-09-15T03:39:57+00:00 https://artinmetal.au/blog/ 2025-08-21T06:47:10+00:00 https://artinmetal.au/all-products-bundle-items/ 2025-09-12T21:51:19+00:00 https://artinmetal.au/shipping-usa/ 2025-09-11T21:24:01+00:00 https://artinmetal.au/all-products/ 2025-09-12T21:07:01+00:00 https://artinmetal.au/password-reset/ 2025-08-30T10:34:29+00:00 https://artinmetal.au/edit-profile/ 2025-08-30T10:34:29+00:00 https://artinmetal.au/login/ 2025-08-30T10:34:28+00:00 https://artinmetal.au/register/ 2025-08-30T10:34:27+00:00 https://artinmetal.au/wishlist/ 2025-08-24T05:43:19+00:00 https://artinmetal.au/products/ 2025-09-08T21:43:44+00:00 https://artinmetal.au/refund-and-returns-policy/ 2025-08-21T06:31:16+00:00 https://artinmetal.au/privacy-policy/ 2025-08-21T06:26:09+00:00 https://artinmetal.au/about-us/ 2025-09-15T04:12:44+00:00 https://artinmetal.au/wx-reseller/ 2025-09-07T21:57:11+00:00 https://artinmetal.au/shop-3/ 2025-08-20T05:38:55+00:00 https://artinmetal.au/contact-2/ 2025-08-21T06:13:36+00:00 https://artinmetal.au/wpc-smart-compare/ 2025-08-21T07:14:52+00:00 https://artinmetal.au/wpc-smart-wishlist/ 2025-08-21T07:15:22+00:00 https://artinmetal.au/product/qtpl15-3pl-pallet-forks-2/ 2025-09-30T08:19:28+00:00 https://artinmetal.au/product/qtp25ss-3pl-to-skid-steer-adaptor-2/ 2025-09-30T08:30:11+00:00 https://artinmetal.au/product/top-gun-spitfire-cut-120-cnc/ 2025-09-30T08:20:10+00:00 https://artinmetal.au/product/top-gun-spitfire-cut-42-pfc-lcd/ 2025-09-30T08:20:22+00:00 https://artinmetal.au/product/top-gun-spitfire-cut-65-cnc/ 2025-09-30T08:20:34+00:00 https://artinmetal.au/product/top-gun-spitfire-cut-45-lcd/ 2025-09-30T08:20:48+00:00 https://artinmetal.au/product/spitfire-cut-42-pfc-lcd-bundle/ 2025-09-30T08:21:00+00:00 https://artinmetal.au/product/top-gun-titan-thor-180a-battery-welder/ 2025-09-30T08:21:12+00:00 https://artinmetal.au/product/top-gun-arc-200/ 2025-09-30T08:21:24+00:00 https://artinmetal.au/product/top-gun-i-arc-145/ 2025-09-30T08:21:36+00:00 https://artinmetal.au/product/top-gun-arc-144-micro/ 2025-09-30T08:21:51+00:00 https://artinmetal.au/product/top-gun-titan-325-ac-dc-pulse-tig/ 2025-09-30T08:22:03+00:00 https://artinmetal.au/product/top-gun-titan-3200-ac-dc-synergic-pulse-tig-welder/ 2025-09-30T08:22:15+00:00 https://artinmetal.au/product/top-gun-titan-2000-ac-dc-pulse-tig-welder/ 2025-09-30T08:22:27+00:00 https://artinmetal.au/product/top-gun-warrior-195-dc-pulse-tig/ 2025-09-30T08:22:39+00:00 https://artinmetal.au/product/top-gun-titan-2500-syn-swf-synergic-dual-pulse-mig-welder/ 2025-09-30T08:22:54+00:00 https://artinmetal.au/product/top-gun-titan-3500-syn-swf-synergic-dual-pulse-mig-welder/ 2025-09-30T08:23:06+00:00 https://artinmetal.au/product/top-gun-titan-5000-syn-swf-synergic-dual-pulse-mig-welder/ 2025-09-30T08:23:18+00:00 https://artinmetal.au/product/top-gun-titan-5000-syn-swf-water-cooled-synergic-dual-pulse-mig-welder/ 2025-09-30T08:23:30+00:00 https://artinmetal.au/product/top-gun-titan-355f/ 2025-09-30T08:23:42+00:00 https://artinmetal.au/product/top-gun-titan-2500-syn-synergic-dual-pulse-mig-welder/ 2025-09-30T08:23:57+00:00 https://artinmetal.au/product/top-gun-titan-515f/ 2025-09-30T08:24:09+00:00 https://artinmetal.au/product/top-gun-titan-3500-syn-synergic-dual-pulse-mig-welder/ 2025-09-30T08:24:21+00:00 https://artinmetal.au/product/top-gun-titan-255-pfc-lcd/ 2025-09-30T08:24:33+00:00 https://artinmetal.au/product/top-gun-2040-5-in-1/ 2025-09-30T08:24:45+00:00 https://artinmetal.au/product/top-gun-200-4-in-1/ 2025-09-30T08:25:00+00:00 https://artinmetal.au/product/top-gun-commander-2000/ 2025-09-30T08:25:12+00:00 https://artinmetal.au/product/top-gun-commander-2400/ 2025-09-30T08:25:24+00:00 https://artinmetal.au/product/top-gun-commander-2100/ 2025-09-30T08:25:36+00:00 https://artinmetal.au/product/top-gun-warrior-182/ 2025-09-30T08:25:49+00:00 https://artinmetal.au/product/2004l-synergic-dual-pulse-synergic-mig/ 2025-09-30T08:26:03+00:00 https://artinmetal.au/product/top-gun-warrior-165-mig-stick-tig/ 2025-09-30T08:26:15+00:00 https://artinmetal.au/product/top-gun-warrior-210l-synergic-mig-welder/ 2025-09-30T08:26:27+00:00 https://artinmetal.au/product/commander-2400-bundle-synergic-pulse-mig-ac-dc-tig-stick-welder/ 2025-09-30T08:26:39+00:00 https://artinmetal.au/product/warrior-210l-synergic-mig-welder-bundle/ 2025-09-30T08:26:51+00:00 https://artinmetal.au/product/warrior-182-bundle/ 2025-09-30T08:27:07+00:00 https://artinmetal.au/product/commander-2100-bundle-synergic-pulse-mig-hc-dc-tig-stick-welder/ 2025-09-30T08:27:19+00:00 https://artinmetal.au/product/commander-2000-bundle-synergic-pulse-mig-ac-dc-tig-stick-welder/ 2025-09-30T08:27:30+00:00 https://artinmetal.au/product/qhfc20-hinged-carriage/ 2025-09-30T08:27:43+00:00 https://artinmetal.au/product/qss25-03-04-skid-steer-hitch-plates-weld-on/ 2025-09-30T08:27:56+00:00 https://artinmetal.au/product/qss25cb-skid-steer-carrier-brackets-weld-on/ 2025-09-30T08:28:39+00:00 https://artinmetal.au/product/rops-bungee-cord/ 2025-09-18T00:13:07+00:00 https://artinmetal.au/product/test-custom-order/ 2025-09-07T00:34:10+00:00 https://artinmetal.au/product/bx-belly-plate/ 2025-09-05T02:48:59+00:00 https://artinmetal.au/product/bx-front-wheel-upgrade/ 2025-09-05T02:45:22+00:00 https://artinmetal.au/product/place-holder-dust-extractor/ 2025-09-04T04:11:06+00:00 https://artinmetal.au/product/front-hook/ 2025-09-02T04:08:27+00:00 https://artinmetal.au/product/rear-hook/ 2025-09-02T04:08:20+00:00 https://artinmetal.au/product/1-5x3-40x75mm-8/ 2025-09-02T04:10:23+00:00 https://artinmetal.au/product/2x2-50x50mm-8/ 2025-09-02T04:10:58+00:00 https://artinmetal.au/product/2x3-50x75mm-8/ 2025-09-02T04:12:06+00:00 https://artinmetal.au/product/rops-mount-large/ 2025-09-17T20:51:32+00:00 https://artinmetal.au/skid-steer-hydraulic-slasher/ 2025-09-15T03:42:56+00:00 https://artinmetal.au/sweeper-broom-for-kubota-bx/ 2025-09-15T03:44:44+00:00 https://artinmetal.au/skid-steer-conversion/ 2025-09-15T03:43:49+00:00 https://artinmetal.au/trailer-with-a-theme-2/ 2025-09-15T03:45:22+00:00 https://artinmetal.au/trailer-with-a-theme/ 2025-09-15T03:46:12+00:00 https://artinmetal.au/adding-extra-hydraulic-functions/ 2025-09-15T03:48:14+00:00 https://artinmetal.au/product/welding-helmet-gloves-pack/ 2025-09-03T07:19:05+00:00 https://artinmetal.au/product/welding-classes/ 2025-09-03T07:18:30+00:00 https://artinmetal.au/product/quick-attach-front-hitch/ 2025-09-22T03:13:07+00:00 https://artinmetal.au/product/bx-2-piece-hst-fan/ 2025-09-16T21:20:31+00:00 https://artinmetal.au/product/root-ripper/ 2025-09-15T02:14:17+00:00 https://artinmetal.au/product/quick-connect/ 2025-09-17T01:23:32+00:00 https://artinmetal.au/product/post-hole-digger-auger-mount/ 2025-09-16T04:37:32+00:00 https://artinmetal.au/product/rops-nuts-bolt-pack/ 2025-09-18T00:14:31+00:00 https://artinmetal.au/product/rops-side-plate/ 2025-09-17T23:54:37+00:00 https://artinmetal.au/product/rops-front-plate/ 2025-09-17T23:57:30+00:00 https://artinmetal.au/product/rops-rear-plate/ 2025-09-17T23:59:11+00:00 https://artinmetal.au/product/rops-front-hook/ 2025-09-18T00:03:32+00:00 https://artinmetal.au/product/rops-rear-hook/ 2025-09-18T00:04:35+00:00 https://artinmetal.au/product/rops-mount-small/ 2025-09-18T00:06:34+00:00 https://artinmetal.au/product/select-your-bucket-width/ 2025-09-03T03:20:25+00:00 https://artinmetal.au/product/bx-long-legs-fat-feet/ 2025-09-15T02:10:31+00:00 https://artinmetal.au/product/toothbar/ 2025-09-11T22:53:32+00:00 https://artinmetal.au/product/test-point-inline-with-hose-ends-2/ 2025-09-01T09:23:00+00:00 https://artinmetal.au/product/test-points-all/ 2025-09-04T00:34:07+00:00 https://artinmetal.au/product/test-fittings/ 2025-09-04T00:34:47+00:00 https://artinmetal.au/product/4in1-bucket-3rd-function-copy/ 2025-09-01T09:25:36+00:00 https://artinmetal.au/product/flat-face-copy/ 2025-09-01T09:24:09+00:00 https://artinmetal.au/product/poppet-copy/ 2025-09-01T09:25:00+00:00 https://artinmetal.au/product/pressure-test-shim-kit/ 2025-09-09T01:12:37+00:00 https://artinmetal.au/product/test-fitting-small/ 2025-09-21T23:58:38+00:00 https://artinmetal.au/product/test-fitting-medium/ 2025-09-21T23:51:37+00:00 https://artinmetal.au/product/test-fitting-large/ 2025-09-21T23:57:32+00:00 https://artinmetal.au/product/test-point-with-poppet-coupler/ 2025-09-22T00:01:09+00:00 https://artinmetal.au/product/backhoe-extra-function/ 2025-09-16T04:41:50+00:00 https://artinmetal.au/product/remote-coupler-kit/ 2025-09-03T07:00:57+00:00 https://artinmetal.au/product/front-auxiliary-valve/ 2025-09-11T01:10:12+00:00 https://artinmetal.au/product/4in1-bucket-tow-hitch/ 2025-09-16T21:20:40+00:00 https://artinmetal.au/product/rear-hitch/ 2025-09-17T04:21:45+00:00 https://artinmetal.au/product/rear-towbar/ 2025-09-03T07:15:31+00:00 https://artinmetal.au/product/front-hitch/ 2025-09-16T21:20:56+00:00 https://artinmetal.au/product/weld-in-hook-bx-4in1-buckets/ 2025-09-11T04:09:25+00:00 https://artinmetal.au/product/weld-in-hook/ 2025-09-11T03:39:32+00:00 https://artinmetal.au/product/large-backing-plates/ 2025-09-12T05:13:33+00:00 https://artinmetal.au/product/test-point-with-flat-face-coupler/ 2025-09-22T00:08:32+00:00 https://artinmetal.au/product/bucket-mounts-ears-qafh/ 2025-09-01T09:39:56+00:00 https://artinmetal.au/product/hitch-pin-qafh/ 2025-09-01T09:39:18+00:00 https://artinmetal.au/product/spillguard-adaptor-70/ 2025-09-01T09:38:38+00:00 https://artinmetal.au/product/grapple-pins-qafh/ 2025-09-07T21:52:56+00:00 https://artinmetal.au/product/bucket-pins-70/ 2025-09-09T01:27:14+00:00 https://artinmetal.au/product/bucket-pins-80/ 2025-09-01T09:36:00+00:00 https://artinmetal.au/product/large-bolt-in-hook/ 2025-09-12T05:17:07+00:00 https://artinmetal.au/product/large-backing-plates-for-hooks/ 2025-09-07T02:22:32+00:00 https://artinmetal.au/product/large-hook-with-horizontal-mounting-plate/ 2025-09-12T05:15:52+00:00 https://artinmetal.au/product/large-hook-with-vertical-mounting-plate/ 2025-09-12T05:16:01+00:00 https://artinmetal.au/product/tie-down-hooks/ 2025-09-12T05:39:38+00:00 https://artinmetal.au/product/grapple-pins/ 2025-09-11T19:46:31+00:00 https://artinmetal.au/product/bucket-pins-70-series/ 2025-09-22T03:28:24+00:00 https://artinmetal.au/product/hitch-pin/ 2025-09-22T03:32:27+00:00 https://artinmetal.au/product/bucket-pins-suit-80-series/ 2025-09-22T03:22:52+00:00 https://artinmetal.au/product/spillguard-adaptor/ 2025-09-03T07:12:29+00:00 https://artinmetal.au/product/bx-bucket-mounts-ears/ 2025-09-11T19:45:33+00:00 https://artinmetal.au/product/bolt-in-hooks-small/ 2025-09-12T05:14:41+00:00 https://artinmetal.au/product/long-legs-for-the-bx-backhoe/ 2025-09-01T06:52:38+00:00 https://artinmetal.au/product/fat-feet-for-bx-backhoe/ 2025-09-05T21:31:50+00:00 https://artinmetal.au/product/bx-auger-connection/ 2025-09-16T04:39:39+00:00 https://artinmetal.au/product/backhoe-thumb-brackets/ 2025-09-15T03:56:39+00:00 https://artinmetal.au/product/2x3-50x75mm-7/ 2025-09-15T23:52:52+00:00 https://artinmetal.au/product/2x2-50x50mm-7/ 2025-09-15T23:55:14+00:00 https://artinmetal.au/product/1-5x3-40x75mm-7/ 2025-09-16T00:05:16+00:00 https://artinmetal.au/product/2x3-50x75mm-6/ 2025-09-03T01:05:30+00:00 https://artinmetal.au/product/2x2-50x50mm-6/ 2025-09-03T01:05:23+00:00 https://artinmetal.au/product/1-5x3-40x75mm-6/ 2025-09-03T09:52:37+00:00 https://artinmetal.au/product/2x3-50x75mm-5/ 2025-09-03T01:10:05+00:00 https://artinmetal.au/product/2x2-50x50mm-5/ 2025-09-03T09:51:07+00:00 https://artinmetal.au/product/1-5x3-40x75mm-5/ 2025-09-03T09:50:56+00:00 https://artinmetal.au/product/2x3-50x75mm-4/ 2025-09-03T09:53:20+00:00 https://artinmetal.au/product/2x2-50x50mm-4/ 2025-09-03T09:53:12+00:00 https://artinmetal.au/product/1-5x3-40x75mm-4/ 2025-09-03T01:11:07+00:00 https://artinmetal.au/product/2x3-50x75mm-3/ 2025-09-03T09:50:02+00:00 https://artinmetal.au/product/2x2-50x50mm-3/ 2025-09-03T09:50:08+00:00 https://artinmetal.au/product/1-5x3-40x75mm-3/ 2025-09-03T09:50:14+00:00 https://artinmetal.au/product/2x3-50x75mm-2/ 2025-09-03T01:11:48+00:00 https://artinmetal.au/product/2x2-50x50mm-2/ 2025-09-03T01:12:12+00:00 https://artinmetal.au/product/1-5x3-40x75mm-2/ 2025-09-03T01:12:22+00:00 https://artinmetal.au/product/2x3-50x75mm/ 2025-09-03T01:12:46+00:00 https://artinmetal.au/product/2x2-50x50mm/ 2025-09-03T01:12:53+00:00 https://artinmetal.au/product/1-5x3-40x75mm/ 2025-09-03T01:12:57+00:00 https://artinmetal.au/product/kubota-b-series-backhoes-bh65-bh70-bh75-bh76-bh77-bt650-bt750-bt751-2/ 2025-09-01T21:31:01+00:00 https://artinmetal.au/product/kubota-l-series-backhoes-bh65-bh70-bh75-bh76-bh77-bt650-bt750-bt751-3/ 2025-09-01T21:30:36+00:00 https://artinmetal.au/product/kubota-bx-series-backhoes-bt601-bt602-bt603-3/ 2025-09-01T21:30:02+00:00 https://artinmetal.au/product/kubota-l-series-backhoes-bh65-bh70-bh75-bh76-bh77-bt650-bt750-bt751-2/ 2025-09-17T01:24:19+00:00 https://artinmetal.au/product/kubota-b-series-backhoes-bh65-bh70-bh75-bh76-bh77-bt650-bt750-bt751-copy/ 2025-09-17T01:25:16+00:00 https://artinmetal.au/product/kubota-bx-series-backhoes-bt601-bt602-bt603-2/ 2025-09-02T05:55:20+00:00 https://artinmetal.au/product/kubota-l-series-backhoes-bh65-bh70-bh75-bh76-bh77-bt650-bt750-bt751/ 2025-09-02T04:48:38+00:00 https://artinmetal.au/product/kubota-b-series-backhoes-bh65-bh70-bh75-bh76-bh77-bt650-bt750-bt751/ 2025-09-02T04:48:55+00:00 https://artinmetal.au/product/kubota-bx-series-backhoes-bt601-bt602-bt603/ 2025-09-07T23:52:06+00:00 https://artinmetal.au/product/2100mm-82/ 2025-09-03T03:15:20+00:00 https://artinmetal.au/product/2000mm-78/ 2025-09-03T03:16:04+00:00 https://artinmetal.au/product/1675mm-66/ 2025-09-03T03:16:35+00:00 https://artinmetal.au/product/1610mm-63/ 2025-09-04T01:07:47+00:00 https://artinmetal.au/product/1550mm-61/ 2025-09-04T01:08:39+00:00 https://artinmetal.au/product/1400mm-55/ 2025-09-04T01:10:21+00:00 https://artinmetal.au/product/1350mm-53/ 2025-09-04T01:11:09+00:00 https://artinmetal.au/product/1310mm-51/ 2025-09-04T01:12:14+00:00 https://artinmetal.au/product/1240mm-48/ 2025-09-04T01:13:18+00:00 https://artinmetal.au/product/bx-2-piece-hst-fan-group1/ 2025-09-10T05:18:34+00:00 https://artinmetal.au/product/test-point-inline-with-hose-ends/ 2025-09-22T00:10:33+00:00 https://artinmetal.au/product/test-point-with-4in1-3rd-function-coupler/ 2025-09-22T00:11:31+00:00 https://artinmetal.au/product/rops-button/ 2025-09-18T00:08:36+00:00