From c5d0a259c7c8059acf216a8c81bb7186fa87e6a9 Mon Sep 17 00:00:00 2001 From: Jacek Pyziak Date: Tue, 14 Apr 2026 20:38:04 +0200 Subject: [PATCH] update --- .vscode/ftp-kr.sync.cache.json | 3 +- export.php | 87 +++++++++++++++---- .../libraries/PDFMerger/fpdf/font/desktop.ini | 4 - 3 files changed, 69 insertions(+), 25 deletions(-) delete mode 100644 modules/dpdpoland/libraries/PDFMerger/fpdf/font/desktop.ini diff --git a/.vscode/ftp-kr.sync.cache.json b/.vscode/ftp-kr.sync.cache.json index d4e44e9c..19e660d6 100644 --- a/.vscode/ftp-kr.sync.cache.json +++ b/.vscode/ftp-kr.sync.cache.json @@ -40,7 +40,6 @@ "modified": false }, "cache": {}, - "changelog": {}, "classes": {}, "composer.lock": { "type": "-", @@ -130,7 +129,7 @@ }, "google-merchant_id-1.xml": { "type": "-", - "size": 18328316, + "size": 18240601, "lmtime": 0, "modified": true }, diff --git a/export.php b/export.php index ac700387..1f4c54d7 100644 --- a/export.php +++ b/export.php @@ -4,19 +4,28 @@ $host = "localhost"; $db = "interblue_sklep"; $user = "interblue_sklep"; $pass = "2212+#++@pSVSb4"; -$prefix = "ps_"; // zmień jeśli masz inny prefix +$prefix = "ps_"; // zmien jesli masz inny prefix // Katalog docelowy $exportDir = __DIR__ . "/export_images"; -if (!is_dir($exportDir)) { - mkdir($exportDir, 0777, true); +$exportDirWithEan = $exportDir . "/with_ean"; +$exportDirWithoutEan = $exportDir . "/without_ean"; + +if (!is_dir($exportDirWithEan)) { + mkdir($exportDirWithEan, 0777, true); } -// Tryb testowy – podaj EAN jednego produktu, np. "5901234567890" -// Jeśli pusty, poleci dla wszystkich produktów -$testEan = ""; +if (!is_dir($exportDirWithoutEan)) { + mkdir($exportDirWithoutEan, 0777, true); +} -// Połączenie z DB +// Tryb testowy - podaj EAN jednego produktu, np. "5901234567890" +// Jesli pusty, poleci dla wszystkich produktow +$testEan = ""; +$batchSize = 100; // liczba produktow na jedno wykonanie +$refreshDelaySeconds = 1; // opoznienie odswiezania miedzy paczkami + +// Polaczenie z DB $pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8", $user, $pass); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); @@ -24,24 +33,56 @@ $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); if ($testEan !== "") { $sql = "SELECT p.id_product, p.ean13 FROM {$prefix}product p - WHERE p.ean13 = :ean"; + WHERE p.ean13 = :ean + ORDER BY p.id_product ASC"; $stmt = $pdo->prepare($sql); $stmt->execute(['ean' => $testEan]); $products = $stmt->fetchAll(PDO::FETCH_ASSOC); - echo "Tryb testowy – eksportuję tylko produkt o EAN: {$testEan}\n
"; + $hasMore = false; + $nextLastId = null; + echo "Tryb testowy - eksportuje tylko produkt o EAN: {$testEan}\n
"; } else { + $lastId = isset($_GET['last_id']) ? (int)$_GET['last_id'] : 0; + if ($lastId < 0) { + $lastId = 0; + } + $sql = "SELECT p.id_product, p.ean13 FROM {$prefix}product p - WHERE p.ean13 IS NOT NULL AND p.ean13 <> ''"; - $products = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC); - echo "Eksportuję wszystkie produkty\n
"; + WHERE p.id_product > :last_id + ORDER BY p.id_product ASC + LIMIT :batch_size"; + $stmt = $pdo->prepare($sql); + $stmt->bindValue(':last_id', $lastId, PDO::PARAM_INT); + $stmt->bindValue(':batch_size', $batchSize, PDO::PARAM_INT); + $stmt->execute(); + $products = $stmt->fetchAll(PDO::FETCH_ASSOC); + + $nextLastId = $lastId; + if (!empty($products)) { + $lastProduct = end($products); + $nextLastId = (int)$lastProduct['id_product']; + } + + $sqlHasMore = "SELECT 1 + FROM {$prefix}product p + WHERE p.id_product > :next_last_id + LIMIT 1"; + $stmtHasMore = $pdo->prepare($sqlHasMore); + $stmtHasMore->execute(['next_last_id' => $nextLastId]); + $hasMore = (bool)$stmtHasMore->fetchColumn(); + + echo "Eksport paczki produktow (start po ID: {$lastId}, rozmiar: {$batchSize})\n
"; } foreach ($products as $prod) { - $ean = $prod['ean13']; + $ean = trim((string)$prod['ean13']); $id_product = (int)$prod['id_product']; + $hasEan = $ean !== ''; + $targetDir = $hasEan ? $exportDirWithEan : $exportDirWithoutEan; + $baseName = $hasEan ? $ean : "ID{$id_product}"; - // Pobierz zdjęcia produktu + // Pobierz zdjecia produktu $sqlImg = "SELECT id_image FROM {$prefix}image WHERE id_product = :id_product @@ -51,7 +92,8 @@ foreach ($products as $prod) { $images = $stmt->fetchAll(PDO::FETCH_ASSOC); if (!$images) { - echo "Brak zdjęć dla EAN: {$ean}\n
"; + $label = $hasEan ? "EAN: {$ean}" : "ID: {$id_product}"; + echo "Brak zdjec dla {$label}\n
"; continue; } @@ -59,12 +101,12 @@ foreach ($products as $prod) { foreach ($images as $img) { $id_image = (int)$img['id_image']; - // Ścieżka do pliku (PrestaShop – struktura katalogów np. 123 -> /1/2/3/123.jpg) + // Sciezka do pliku (PrestaShop - struktura katalogow np. 123 -> /1/2/3/123.jpg) $path = implode('/', str_split((string)$id_image)) . "/" . $id_image . ".jpg"; $src = __DIR__ . "/img/p/" . $path; if (file_exists($src)) { - $dest = $exportDir . "/" . $ean . "_" . $i . ".jpg"; + $dest = $targetDir . "/" . $baseName . "_" . $i . ".jpg"; copy($src, $dest); echo "Zapisano: $dest\n
"; } else { @@ -74,5 +116,12 @@ foreach ($products as $prod) { } } -echo "✅ Eksport zakończony.\n
"; -?> \ No newline at end of file +if ($testEan === "" && $hasMore) { + $self = htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'); + $nextUrl = $self . '?last_id=' . $nextLastId; + echo "Paczka zakonczona. Nastepna paczka startuje za {$refreshDelaySeconds}s... (last_id={$nextLastId})\n
"; + echo ""; +} else { + echo "Eksport zakonczony.\n
"; +} +?> diff --git a/modules/dpdpoland/libraries/PDFMerger/fpdf/font/desktop.ini b/modules/dpdpoland/libraries/PDFMerger/fpdf/font/desktop.ini deleted file mode 100644 index c5547ea5..00000000 --- a/modules/dpdpoland/libraries/PDFMerger/fpdf/font/desktop.ini +++ /dev/null @@ -1,4 +0,0 @@ -[ViewState] -Mode= -Vid= -FolderType=NotSpecified