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

LibreSign / libresign / 20606697273

30 Dec 2025 09:53PM UTC coverage: 44.868%. First build
20606697273

Pull #6277

github

web-flow
Merge edce7a9fa into 1098b4452
Pull Request #6277: fix: use nodeId for user element

19 of 56 new or added lines in 9 files covered. (33.93%)

6610 of 14732 relevant lines covered (44.87%)

5.08 hits per line

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

2.0
/lib/Db/UserElementMapper.php
1
<?php
2

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

9
namespace OCA\Libresign\Db;
10

11
use OCP\AppFramework\Db\QBMapper;
12
use OCP\Comments\ICommentsManager;
13
use OCP\DB\QueryBuilder\IQueryBuilder;
14
use OCP\IDBConnection;
15

16
/**
17
 * Class FileElementsMapper
18
 *
19
 * @package OCA\Libresign\DB
20
 * @template-extends QBMapper<UserElement>
21
 */
22
class UserElementMapper extends QBMapper {
23
        public function __construct(IDBConnection $db) {
24
                parent::__construct($db, 'libresign_user_element');
47✔
25
        }
26

27
        private function getQueryBuilder(array $data): IQueryBuilder {
28
                $qb = $this->db->getQueryBuilder();
×
29
                $qb->select('ue.*')
×
30
                        ->from($this->getTableName(), 'ue');
×
31

32
                if (isset($data['id'])) {
×
33
                        $qb->andWhere(
×
34
                                $qb->expr()->eq('ue.id', $qb->createNamedParameter($data['id'], IQueryBuilder::PARAM_INT))
×
35
                        );
×
36
                }
NEW
37
                if (isset($data['node_id'])) {
×
38
                        $qb->andWhere(
×
NEW
39
                                $qb->expr()->eq('ue.node_id', $qb->createNamedParameter($data['node_id'], IQueryBuilder::PARAM_INT))
×
40
                        );
×
41
                }
42
                if (isset($data['type'])) {
×
43
                        $qb->andWhere(
×
44
                                $qb->expr()->eq('ue.type', $qb->createNamedParameter($data['type']))
×
45
                        );
×
46
                }
47
                if (isset($data['user_id'])) {
×
48
                        $qb->andWhere(
×
49
                                $qb->expr()->eq('ue.user_id', $qb->createNamedParameter($data['user_id']))
×
50
                        );
×
51
                }
52
                return $qb;
×
53
        }
54

55
        public function findOne(array $data): UserElement {
56
                $qb = $this->getQueryBuilder($data);
×
57
                try {
58
                        $row = $this->findOneQuery($qb);
×
59
                } catch (\Throwable) {
×
60
                        $qb->andWhere(
×
61
                                $qb->expr()->eq('ue.starred', $qb->createNamedParameter(1, IQueryBuilder::PARAM_INT))
×
62
                        );
×
63
                        $row = $this->findOneQuery($qb);
×
64
                }
65
                /** @var UserElement */
66
                $userElement = $this->mapRowToEntity($row);
×
67
                return $userElement;
×
68
        }
69

70
        /**
71
         * @return UserElement[]
72
         */
73
        public function findMany(array $data): array {
74
                $qb = $this->getQueryBuilder($data);
×
75
                /** @var UserElement[] */
76
                return $this->findEntities($qb);
×
77
        }
78

79
        public function neutralizeDeletedUser(string $userId, string $displayName): void {
80
                $update = $this->db->getQueryBuilder();
×
81
                $qb = $this->db->getQueryBuilder();
×
82
                $qb->select('ue.id')
×
83
                        ->addSelect('ue.metadata')
×
84
                        ->from($this->getTableName(), 'ue')
×
85
                        ->where($qb->expr()->eq('ue.user_id', $qb->createNamedParameter($userId)));
×
86
                $cursor = $qb->executeQuery();
×
87
                while ($row = $cursor->fetch()) {
×
88
                        $row['metadata'] = json_decode((string)$row['metadata'], true);
×
89
                        $row['metadata']['deleted_account'] = [
×
90
                                'account' => $userId,
×
91
                                'display_name' => $displayName,
×
92
                        ];
×
93
                        $update->update($this->getTableName())
×
94
                                ->set('user_id', $update->createNamedParameter(ICommentsManager::DELETED_USER))
×
95
                                ->set('metadata', $update->createNamedParameter($row['metadata'], IQueryBuilder::PARAM_JSON))
×
96
                                ->where($update->expr()->eq('id', $update->createNamedParameter($row['id'])));
×
97
                        $update->executeStatement();
×
98
                }
99
        }
100
}
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