From 77f8d034aac23e43bfe443eb47ad089afc8f01e0 Mon Sep 17 00:00:00 2001 From: dimitar Date: Mon, 27 Jan 2025 23:50:18 +0100 Subject: [PATCH] next to implement automatic refetch via cron --- modules/ecomzone.zip | Bin 6672 -> 0 bytes modules/ecomzone/classes/EcomZoneAPI.php | 25 +++++++++++++++++++++-- modules/ecomzone/ecomzone.php | 22 +++++++++++++++----- modules/vancho-ecomzone.zip | Bin 0 -> 6948 bytes 4 files changed, 40 insertions(+), 7 deletions(-) delete mode 100644 modules/ecomzone.zip create mode 100644 modules/vancho-ecomzone.zip diff --git a/modules/ecomzone.zip b/modules/ecomzone.zip deleted file mode 100644 index 9413eae7a9fa25a0e47e49c8eea501dccd82fef4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6672 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 J-<5L(_%F0JOMd_W diff --git a/modules/ecomzone/classes/EcomZoneAPI.php b/modules/ecomzone/classes/EcomZoneAPI.php index 8a86064..69cd30c 100644 --- a/modules/ecomzone/classes/EcomZoneAPI.php +++ b/modules/ecomzone/classes/EcomZoneAPI.php @@ -130,11 +130,32 @@ class EcomZoneAPI } } - public function getCatalog($perPage = 10) + public function getCatalog($perPage = 1000) { $this->checkRateLimit(); $url = $this->apiUrl . '/catalog'; - return $this->makeRequest('GET', $url, ['per_page' => $perPage]); + $allProducts = []; + $currentPage = 1; + + do { + $params = [ + 'per_page' => $perPage, + 'page' => $currentPage + ]; + + $response = $this->makeRequest('GET', $url, $params); + + if (isset($response['data']) && is_array($response['data'])) { + $allProducts = array_merge($allProducts, $response['data']); + } + + $currentPage++; + // Check if there's a next page + $hasNextPage = isset($response['next_page_url']) && $response['next_page_url'] !== null; + + } while ($hasNextPage); + + return ['data' => $allProducts]; } public function getProduct($sku) diff --git a/modules/ecomzone/ecomzone.php b/modules/ecomzone/ecomzone.php index a07fa86..b9f775f 100644 --- a/modules/ecomzone/ecomzone.php +++ b/modules/ecomzone/ecomzone.php @@ -76,20 +76,32 @@ class EcomZone extends Module try { $debugOutput .= "Starting product fetch...\n"; - // Get first 10 products for testing - $catalog = $this->api->getCatalog(10); + // Get all products + $catalog = $this->api->getCatalog(1000); if (isset($catalog['data']) && is_array($catalog['data'])) { - foreach ($catalog['data'] as $product) { + $debugOutput .= sprintf("Fetching all products...\n"); + $totalProducts = count($catalog['data']); + + // Show first 5 products as preview + for ($i = 0; $i < min(5, $totalProducts); $i++) { + $product = $catalog['data'][$i]; $debugOutput .= sprintf( - "Found product: %s - %s (Price: %s EUR, Stock: %s)\n", + "Product %d/%d: %s - %s (Price: %s EUR, Stock: %s)\n", + $i + 1, + $totalProducts, $product['sku'], $product['product_name'], $product['product_price'], $product['stock'] ); } - $debugOutput .= sprintf("\nTotal products fetched: %d\n", count($catalog['data'])); + + if ($totalProducts > 5) { + $debugOutput .= "...\n"; // Indicate there are more products + } + + $debugOutput .= sprintf("\nTotal products fetched: %d\n", $totalProducts); } else { $debugOutput .= "No products found or invalid response format\n"; } diff --git a/modules/vancho-ecomzone.zip b/modules/vancho-ecomzone.zip new file mode 100644 index 0000000000000000000000000000000000000000..e824b85b379c7fe11853ccafe89da34d674c67ed GIT binary patch literal 6948 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