mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Implementada funcionalidad descarga en zip
This commit is contained in:
@ -114,4 +114,57 @@ class SafekatFtpClient
|
||||
|
||||
return implode('/', [$this->base_dir, 'pedidos_files', $rootIdExtern]);
|
||||
}
|
||||
|
||||
public function downloadZipPresupuesto(int $presupuesto_id): ?string
|
||||
{
|
||||
$modelPedidoLinea = model(PedidoLineaModel::class);
|
||||
$model = model(PresupuestoFicheroModel::class);
|
||||
|
||||
$pedidoLinea = $modelPedidoLinea->findByPresupuesto($presupuesto_id);
|
||||
$rootIdExtern = $this->pedido_xml_config->id_offset + $pedidoLinea->pedido_id;
|
||||
|
||||
$remotePath = implode('/', [$this->base_dir, 'pedidos_files', $rootIdExtern]);
|
||||
|
||||
$this->ftp->login(username: $this->username, password: $this->password);
|
||||
|
||||
if (!$this->ftp->is_dir($remotePath)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$files = $model->getFiles($presupuesto_id);
|
||||
if (empty($files)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$localTempDir = WRITEPATH . 'zip_presupuestos/' . uniqid("presupuesto_");
|
||||
if (!is_dir($localTempDir)) {
|
||||
mkdir($localTempDir, 0777, true);
|
||||
}
|
||||
|
||||
foreach ($files as $file) {
|
||||
$originalName = $file->nombre ?? basename($file->file_path);
|
||||
$localFile = $localTempDir . '/' . $originalName;
|
||||
$remoteFile = $remotePath . '/' . basename($file->file_path);
|
||||
$this->ftp->get($remoteFile, $localFile);
|
||||
}
|
||||
|
||||
$zipPath = $localTempDir . '.zip';
|
||||
$zip = new \ZipArchive();
|
||||
if ($zip->open($zipPath, \ZipArchive::CREATE | \ZipArchive::OVERWRITE)) {
|
||||
foreach (glob($localTempDir . '/*') as $localFile) {
|
||||
$zip->addFile($localFile, basename($localFile));
|
||||
}
|
||||
$zip->close();
|
||||
}
|
||||
|
||||
// Limpieza temporal
|
||||
foreach (glob($localTempDir . '/*') as $localFile) {
|
||||
unlink($localFile);
|
||||
}
|
||||
rmdir($localTempDir);
|
||||
|
||||
return $zipPath;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user