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