Skip to content

Commit fcfbe65

Browse files
committed
refactor: delay node creation until envelope folder is known
Changed processUploadedFiles to only validate and return file data instead of creating nodes immediately. This ensures nodes are created with the correct envelope folder path in saveEnvelope. - processUploadedFiles now returns uploadedFile data structure - Node creation moved to RequestSignatureService.saveEnvelope - Fixed return type annotation to include uploadedFile field Signed-off-by: Vitor Mattos <[email protected]>
1 parent 0024bba commit fcfbe65

1 file changed

Lines changed: 19 additions & 18 deletions

File tree

lib/Controller/FileController.php

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ private function prepareFileForSaving(array $fileData, string $name, array $sett
467467
}
468468

469469
/**
470-
* @return list<array{fileNode?: Node, name?: string}> Normalized files array
470+
* @return list<array{fileNode?: Node, name?: string, uploadedFile?: array}> Normalized files array
471471
*/
472472
private function prepareFilesForSaving(array $file, array $files, array $settings): array {
473473
$uploadedFiles = $this->request->getUploadedFile('files') ?: $this->request->getUploadedFile('file');
@@ -489,7 +489,7 @@ private function prepareFilesForSaving(array $file, array $files, array $setting
489489
}
490490

491491
/**
492-
* @return list<array{fileNode: Node, name: string}>
492+
* @return list<array{uploadedFile: array, name: string}>
493493
*/
494494
private function processUploadedFiles(array $uploadedFiles, array $settings): array {
495495
$filesArray = [];
@@ -498,28 +498,33 @@ private function processUploadedFiles(array $uploadedFiles, array $settings): ar
498498
if (is_array($uploadedFiles['tmp_name'])) {
499499
$count = count($uploadedFiles['tmp_name']);
500500
for ($i = 0; $i < $count; $i++) {
501-
$filesArray[] = [
501+
$uploadedFile = [
502502
'tmp_name' => $uploadedFiles['tmp_name'][$i],
503503
'name' => $uploadedFiles['name'][$i],
504504
'type' => $uploadedFiles['type'][$i],
505505
'size' => $uploadedFiles['size'][$i],
506506
'error' => $uploadedFiles['error'][$i],
507507
];
508+
$this->fileService->validateUploadedFile($uploadedFile);
509+
$filesArray[] = [
510+
'uploadedFile' => $uploadedFile,
511+
'name' => pathinfo($uploadedFile['name'], PATHINFO_FILENAME),
512+
];
508513
}
509514
} else {
510-
$filesArray[] = $uploadedFiles;
515+
$this->fileService->validateUploadedFile($uploadedFiles);
516+
$filesArray[] = [
517+
'uploadedFile' => $uploadedFiles,
518+
'name' => pathinfo($uploadedFiles['name'], PATHINFO_FILENAME),
519+
];
511520
}
512521
}
513522

514523
if (empty($filesArray)) {
515524
throw new LibresignException($this->l10n->t('No files uploaded'));
516525
}
517526

518-
return $this->fileService->processUploadedFilesWithRollback(
519-
$filesArray,
520-
$this->userSession->getUser(),
521-
$settings
522-
);
527+
return $filesArray;
523528
}
524529

525530
/**
@@ -530,14 +535,10 @@ private function saveFiles(array $files, string $name, array $settings): DataRes
530535
throw new LibresignException($this->l10n->t('File or files parameter is required'));
531536
}
532537

533-
$preparedFiles = [];
534-
foreach ($files as $fileData) {
535-
$fileName = (count($files) === 1) ? $name : '';
536-
$preparedFiles[] = $this->prepareFileForSaving($fileData, $fileName, $settings);
537-
}
538-
539-
if (count($preparedFiles) === 1) {
540-
$prepared = $preparedFiles[0];
538+
if (count($files) === 1) {
539+
$fileData = $files[0];
540+
$fileName = $name;
541+
$prepared = $this->prepareFileForSaving($fileData, $fileName, $settings);
541542
$savedFile = $this->requestSignatureService->save([
542543
'file' => ['fileNode' => $prepared['node']],
543544
'name' => $prepared['name'],
@@ -549,7 +550,7 @@ private function saveFiles(array $files, string $name, array $settings): DataRes
549550
}
550551

551552
$result = $this->requestSignatureService->saveEnvelope([
552-
'files' => $preparedFiles,
553+
'files' => $files,
553554
'name' => $name,
554555
'userManager' => $this->userSession->getUser(),
555556
'settings' => $settings,

0 commit comments

Comments
 (0)