Result
+qr code(s) created, + row(s) failed.
+ + + + Download all as ZIP + + + + +| Line | +Filename | +Error | +
|---|---|---|
| + | + | + |
diff --git a/src/batch_qrcode.php b/src/batch_qrcode.php new file mode 100644 index 0000000..4201b7d --- /dev/null +++ b/src/batch_qrcode.php @@ -0,0 +1,225 @@ + $row) { + $line_number = $index + 1; + $filename = $row[0] ?? ''; + $link = $row[1] ?? ''; + + $result = $dynamic_qrcode_instance->addQrcodeBatchRow($filename, $link, $id_owner); + + if ($result['ok']) { + $successes[] = $filename; + $created_ids[] = $result['id']; + } else { + $failures[] = ['line' => $line_number, 'filename' => $filename, 'error' => $result['error']]; + } + } + + $zip_filename = null; + + if (!empty($created_ids)) { + $db = getDbInstance(); + $files = []; + + foreach ($created_ids as $id) { + $db->where('id', $id); + $row = $db->getOne('dynamic_qrcodes'); + if ($row !== null) { + $files[] = SAVED_QRCODE_DIRECTORY . $row['qrcode']; + } + } + + $zip_filename = 'qrcodes_' . uniqid() . '.zip'; + $zip_path = SAVED_QRCODE_DIRECTORY . 'zip/' . $zip_filename; + @unlink($zip_path); + + $zip = new ZipArchive(); + $zip->open($zip_path, ZipArchive::CREATE); + foreach ($files as $file) { + $content = @file_get_contents($file); + if ($content !== false) { + $zip->addFromString(basename($file), $content); + } + } + $zip->close(); + + $_SESSION['generated_zips'][] = $zip_filename; + + audit_log('batch_qrcode_created', 'dynamic_qrcodes', implode(',', $created_ids)); + } + + $results = [ + 'successes' => $successes, + 'failures' => $failures, + 'zip_filename' => $zip_filename, + ]; +} +?> + + +
qr code(s) created, + row(s) failed.
+ + + + Download all as ZIP + + + + +| Line | +Filename | +Error | +
|---|---|---|
| + | + | + |
Add new
+Batch create (CSV)
+ +