• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

LibreSign / libresign / 21008830184

14 Jan 2026 08:29PM UTC coverage: 44.286%. First build
21008830184

Pull #6436

github

web-flow
Merge 4bec3de23 into 9bd4c65c5
Pull Request #6436: feat: async parallel signing

390 of 923 new or added lines in 41 files covered. (42.25%)

7007 of 15822 relevant lines covered (44.29%)

4.93 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

82.35
/lib/Service/Envelope/EnvelopeFileRelocator.php
1
<?php
2

3
declare(strict_types=1);
4
/**
5
 * SPDX-FileCopyrightText: 2025 LibreCode coop and contributors
6
 * SPDX-License-Identifier: AGPL-3.0-or-later
7
 */
8

9
namespace OCA\Libresign\Service\Envelope;
10

11
use OCA\Libresign\Exception\LibresignException;
12
use OCA\Libresign\Service\FolderService;
13
use OCP\Files\Node;
14
use OCP\IUser;
15

16
class EnvelopeFileRelocator {
17
        public function __construct(
18
                private FolderService $folderService,
19
        ) {
20
        }
33✔
21

22
        public function ensureFileInEnvelopeFolder(Node $sourceNode, int $envelopeFolderId, IUser $userManager): Node {
23
                $this->folderService->setUserId($userManager->getUID());
4✔
24
                $userRootFolder = $this->folderService->getUserRootFolder();
4✔
25
                $envelopeFolder = $userRootFolder->getFirstNodeById($envelopeFolderId);
4✔
26

27
                if (!$envelopeFolder instanceof \OCP\Files\Folder) {
4✔
28
                        throw new LibresignException('Envelope folder not found');
1✔
29
                }
30

31
                if ($this->isNodeInsideFolder($sourceNode, $envelopeFolder)) {
3✔
32
                        return $sourceNode;
1✔
33
                }
34

35
                if (!$sourceNode instanceof \OCP\Files\File) {
2✔
36
                        throw new LibresignException('Invalid file type for envelope');
1✔
37
                }
38

39
                $filename = $sourceNode->getName();
1✔
40

41
                // Check if file with same name already exists in envelope folder
42
                if ($envelopeFolder->nodeExists($filename)) {
1✔
43
                        // Only add timestamp if collision detected
NEW
44
                        $extension = $sourceNode->getExtension();
×
NEW
45
                        $nameWithoutExt = substr($filename, 0, -strlen($extension) - 1);
×
NEW
46
                        $filename = $nameWithoutExt . '_' . time() . '.' . $extension;
×
47
                }
48

49
                return $envelopeFolder->newFile($filename, $sourceNode->getContent());
1✔
50
        }
51

52
        private function isNodeInsideFolder(Node $node, \OCP\Files\Folder $folder): bool {
53
                return str_starts_with($node->getPath(), $folder->getPath() . '/');
3✔
54
        }
55
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc