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

LibreSign / libresign / 21017658638

15 Jan 2026 02:36AM UTC coverage: 44.433%. First build
21017658638

Pull #6436

github

web-flow
Merge 59a8413e3 into db0316516
Pull Request #6436: feat: async parallel signing

415 of 961 new or added lines in 46 files covered. (43.18%)

7036 of 15835 relevant lines covered (44.43%)

4.94 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
                if ($envelopeFolder->nodeExists($filename)) {
1✔
NEW
42
                        $extension = $sourceNode->getExtension();
×
NEW
43
                        $nameWithoutExt = substr($filename, 0, -strlen($extension) - 1);
×
NEW
44
                        $filename = $nameWithoutExt . '_' . time() . '.' . $extension;
×
45
                }
46

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

50
        private function isNodeInsideFolder(Node $node, \OCP\Files\Folder $folder): bool {
51
                return str_starts_with($node->getPath(), $folder->getPath() . '/');
3✔
52
        }
53
}
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