Skip to content

Commit 0a82a34

Browse files
authored
Merge pull request #2502 from nextcloud/enh/assignment
2 parents 082b7c1 + a461699 commit 0a82a34

26 files changed

Lines changed: 132 additions & 133 deletions

lib/Activity/ActivityManager.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
use InvalidArgumentException;
2929
use OCA\Deck\Db\Acl;
3030
use OCA\Deck\Db\AclMapper;
31-
use OCA\Deck\Db\AssignedUsers;
31+
use OCA\Deck\Db\Assignment;
3232
use OCA\Deck\Db\Attachment;
3333
use OCA\Deck\Db\AttachmentMapper;
3434
use OCA\Deck\Db\Board;
@@ -471,7 +471,7 @@ private function findObjectForEntity($objectType, $entity) {
471471
break;
472472
case Attachment::class:
473473
case Label::class:
474-
case AssignedUsers::class:
474+
case Assignment::class:
475475
$objectId = $entity->getCardId();
476476
break;
477477
case IComment::class:

lib/AppInfo/Application20.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
use OCA\Deck\Dashboard\DeckWidget;
3434
use OCA\Deck\Db\Acl;
3535
use OCA\Deck\Db\AclMapper;
36-
use OCA\Deck\Db\AssignedUsersMapper;
36+
use OCA\Deck\Db\AssignmentMapper;
3737
use OCA\Deck\Db\BoardMapper;
3838
use OCA\Deck\Db\CardMapper;
3939
use OCA\Deck\Listeners\BeforeTemplateRenderedListener;
@@ -132,7 +132,7 @@ private function registerUserGroupHooks(IUserManager $userManager, IGroupManager
132132
$aclMapper->delete($acl);
133133
}
134134
// delete existing user assignments
135-
$assignmentMapper = $container->query(AssignedUsersMapper::class);
135+
$assignmentMapper = $container->query(AssignmentMapper::class);
136136
$assignments = $assignmentMapper->findByUserId($user->getUID());
137137
foreach ($assignments as $assignment) {
138138
$assignmentMapper->delete($assignment);

lib/AppInfo/ApplicationLegacy.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
use OCA\Deck\Collaboration\Resources\ResourceProviderCard;
3131
use OCA\Deck\Db\Acl;
3232
use OCA\Deck\Db\AclMapper;
33-
use OCA\Deck\Db\AssignedUsersMapper;
33+
use OCA\Deck\Db\AssignmentMapper;
3434
use OCA\Deck\Db\BoardMapper;
3535
use OCA\Deck\Db\CardMapper;
3636
use OCA\Deck\Middleware\DefaultBoardMiddleware;
@@ -113,7 +113,7 @@ private function registerUserGroupHooks(): void {
113113
$aclMapper->delete($acl);
114114
}
115115
// delete existing user assignments
116-
$assignmentMapper = $container->query(AssignedUsersMapper::class);
116+
$assignmentMapper = $container->query(AssignmentMapper::class);
117117
$assignments = $assignmentMapper->findByUserId($user->getUID());
118118
foreach ($assignments as $assignment) {
119119
$assignmentMapper->delete($assignment);

lib/Command/UserExport.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
namespace OCA\Deck\Command;
2525

26-
use OCA\Deck\Db\AssignedUsersMapper;
26+
use OCA\Deck\Db\AssignmentMapper;
2727
use OCA\Deck\Db\BoardMapper;
2828
use OCA\Deck\Db\CardMapper;
2929
use OCA\Deck\Db\StackMapper;
@@ -48,7 +48,7 @@ public function __construct(BoardMapper $boardMapper,
4848
BoardService $boardService,
4949
StackMapper $stackMapper,
5050
CardMapper $cardMapper,
51-
AssignedUsersMapper $assignedUsersMapper,
51+
AssignmentMapper $assignedUsersMapper,
5252
IUserManager $userManager,
5353
IGroupManager $groupManager) {
5454
parent::__construct();
@@ -99,7 +99,7 @@ protected function execute(InputInterface $input, OutputInterface $output) {
9999
$cards = $this->cardMapper->findAllByStack($stack->getId());
100100
foreach ($cards as $card) {
101101
$fullCard = $this->cardMapper->find($card->getId());
102-
$assignedUsers = $this->assignedUsersMapper->find($card->getId());
102+
$assignedUsers = $this->assignedUsersMapper->findAll($card->getId());
103103
$fullCard->setAssignedUsers($assignedUsers);
104104
$data[$board->getId()]['stacks'][$stack->getId()]['cards'][] = (array)$fullCard->jsonSerialize();
105105
}

lib/Db/AclMapper.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,19 +35,19 @@ public function findAll($boardId, $limit = null, $offset = null) {
3535
return $this->findEntities($sql, [$boardId], $limit, $offset);
3636
}
3737

38-
public function isOwner($userId, $aclId) {
38+
public function isOwner($userId, $aclId): bool {
3939
$sql = 'SELECT owner FROM `*PREFIX*deck_boards` WHERE `id` IN (SELECT board_id FROM `*PREFIX*deck_board_acl` WHERE id = ?)';
4040
$stmt = $this->execute($sql, [$aclId]);
4141
$row = $stmt->fetch();
4242
return ($row['owner'] === $userId);
4343
}
4444

45-
public function findBoardId($aclId) {
45+
public function findBoardId($aclId): ?int {
4646
$entity = $this->find($aclId);
4747
return $entity->getBoardId();
4848
}
4949

50-
public function findByParticipant($type, $participant) {
50+
public function findByParticipant($type, $participant): array {
5151
$sql = 'SELECT * from *PREFIX*deck_board_acl WHERE type = ? AND participant = ?';
5252
return $this->findEntities($sql, [$type, $participant]);
5353
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
use JsonSerializable;
2727

28-
class AssignedUsers extends RelationalEntity implements JsonSerializable {
28+
class Assignment extends RelationalEntity implements JsonSerializable {
2929
public $id;
3030
protected $participant;
3131
protected $cardId;
Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@
3232
use OCP\IDBConnection;
3333
use OCP\IGroupManager;
3434
use OCP\IUserManager;
35+
use PDO;
3536

36-
class AssignedUsersMapper extends QBMapper implements IPermissionMapper {
37+
class AssignmentMapper extends QBMapper implements IPermissionMapper {
3738

3839
/** @var CardMapper */
3940
private $cardMapper;
@@ -45,77 +46,75 @@ class AssignedUsersMapper extends QBMapper implements IPermissionMapper {
4546
private $circleService;
4647

4748
public function __construct(IDBConnection $db, CardMapper $cardMapper, IUserManager $userManager, IGroupManager $groupManager, CirclesService $circleService) {
48-
parent::__construct($db, 'deck_assigned_users', AssignedUsers::class);
49+
parent::__construct($db, 'deck_assigned_users', Assignment::class);
50+
4951
$this->cardMapper = $cardMapper;
5052
$this->userManager = $userManager;
5153
$this->groupManager = $groupManager;
5254
$this->circleService = $circleService;
5355
}
5456

5557
/**
56-
* FIXME: rename this since it returns multiple entities otherwise the naming is confusing with Entity::find
57-
*
58-
* @param $cardId
59-
* @return array|Entity
58+
* @return Assignment[]
6059
*/
61-
public function find($cardId) {
60+
public function findAll(int $cardId): array {
6261
$qb = $this->db->getQueryBuilder();
6362
$qb->select('*')
6463
->from('deck_assigned_users')
65-
->where($qb->expr()->eq('card_id', $qb->createNamedParameter($cardId)));
66-
/** @var AssignedUsers[] $users */
64+
->where($qb->expr()->eq('card_id', $qb->createNamedParameter($cardId, PDO::PARAM_INT)));
6765
$users = $this->findEntities($qb);
68-
foreach ($users as &$user) {
66+
foreach ($users as $user) {
6967
$this->mapParticipant($user);
7068
}
7169
return $users;
7270
}
7371

74-
public function findByUserId($uid) {
72+
public function findByParticipant(string $participant, $type = Assignment::TYPE_USER): array {
7573
$qb = $this->db->getQueryBuilder();
7674
$qb->select('*')
7775
->from('deck_assigned_users')
78-
->where($qb->expr()->eq('participant', $qb->createNamedParameter($uid)));
79-
/** @var AssignedUsers[] $users */
76+
->where($qb->expr()->eq('participant', $qb->createNamedParameter($participant, PDO::PARAM_STR)))
77+
->andWhere($qb->expr()->eq('type', $qb->createNamedParameter($type, PDO::PARAM_INT)));
8078
return $this->findEntities($qb);
8179
}
8280

8381

84-
public function isOwner($userId, $cardId) {
82+
public function isOwner($userId, $cardId): bool {
8583
return $this->cardMapper->isOwner($userId, $cardId);
8684
}
8785

88-
public function findBoardId($cardId) {
86+
public function findBoardId($cardId): ?int {
8987
return $this->cardMapper->findBoardId($cardId);
9088
}
9189

9290
/**
9391
* Check if user exists before assigning it to a card
9492
*
9593
* @param Entity $entity
96-
* @return null|Entity
94+
* @return null|Assignment
95+
* @throws NotFoundException
9796
*/
9897
public function insert(Entity $entity): Entity {
9998
$origin = $this->getOrigin($entity);
10099
if ($origin === null) {
101100
throw new NotFoundException('No origin found for assignment');
102101
}
103-
/** @var AssignedUsers $assignment */
102+
103+
/** @var Assignment $assignment */
104104
$assignment = parent::insert($entity);
105105
$this->mapParticipant($assignment);
106106
return $assignment;
107107
}
108108

109-
public function mapParticipant(AssignedUsers $assignment): void {
109+
public function mapParticipant(Assignment $assignment): void {
110110
$self = $this;
111111
$assignment->resolveRelation('participant', function () use (&$self, &$assignment) {
112112
return $self->getOrigin($assignment);
113113
});
114114
}
115115

116116
public function isUserAssigned($cardId, $userId): bool {
117-
$assignments = $this->find($cardId);
118-
/** @var AssignedUsers $assignment */
117+
$assignments = $this->findAll($cardId);
119118
foreach ($assignments as $assignment) {
120119
$origin = $this->getOrigin($assignment);
121120
if ($origin instanceof User && $assignment->getParticipant() === $userId) {
@@ -132,16 +131,16 @@ public function isUserAssigned($cardId, $userId): bool {
132131
return false;
133132
}
134133

135-
private function getOrigin(AssignedUsers $assignment) {
136-
if ($assignment->getType() === AssignedUsers::TYPE_USER) {
134+
private function getOrigin(Assignment $assignment) {
135+
if ($assignment->getType() === Assignment::TYPE_USER) {
137136
$origin = $this->userManager->get($assignment->getParticipant());
138137
return $origin ? new User($origin) : null;
139138
}
140-
if ($assignment->getType() === AssignedUsers::TYPE_GROUP) {
139+
if ($assignment->getType() === Assignment::TYPE_GROUP) {
141140
$origin = $this->groupManager->get($assignment->getParticipant());
142141
return $origin ? new Group($origin) : null;
143142
}
144-
if ($assignment->getType() === AssignedUsers::TYPE_CIRCLE) {
143+
if ($assignment->getType() === Assignment::TYPE_CIRCLE) {
145144
$origin = $this->circleService->getCircle($assignment->getParticipant());
146145
return $origin ? new Circle($origin) : null;
147146
}

lib/Db/AttachmentMapper.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ public function findToDelete($cardId = null, $withOffset = true) {
156156
* @param $id int|string unique entity identifier
157157
* @return boolean
158158
*/
159-
public function isOwner($userId, $id) {
159+
public function isOwner($userId, $id): bool {
160160
try {
161161
$attachment = $this->find($id);
162162
return $this->cardMapper->isOwner($userId, $attachment->getCardId());
@@ -172,7 +172,7 @@ public function isOwner($userId, $id) {
172172
* @param $id int|string unique entity identifier
173173
* @return int|null id of Board
174174
*/
175-
public function findBoardId($id) {
175+
public function findBoardId($id): ?int {
176176
try {
177177
$attachment = $this->find($id);
178178
} catch (\Exception $e) {

lib/Db/BoardMapper.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,12 +220,12 @@ public function delete(/** @noinspection PhpUnnecessaryFullyQualifiedNameInspect
220220
return parent::delete($entity);
221221
}
222222

223-
public function isOwner($userId, $boardId) {
223+
public function isOwner($userId, $boardId): bool {
224224
$board = $this->find($boardId);
225225
return ($board->getOwner() === $userId);
226226
}
227227

228-
public function findBoardId($id) {
228+
public function findBoardId($id): ?int {
229229
return $id;
230230
}
231231

lib/Db/CardMapper.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ public function removeLabel($card, $label) {
308308
$qb->execute();
309309
}
310310

311-
public function isOwner($userId, $cardId) {
311+
public function isOwner($userId, $cardId): bool {
312312
$sql = 'SELECT owner FROM `*PREFIX*deck_boards` WHERE `id` IN (SELECT board_id FROM `*PREFIX*deck_stacks` WHERE id IN (SELECT stack_id FROM `*PREFIX*deck_cards` WHERE id = ?))';
313313
$stmt = $this->db->prepare($sql);
314314
$stmt->bindParam(1, $cardId, \PDO::PARAM_INT);
@@ -317,7 +317,7 @@ public function isOwner($userId, $cardId) {
317317
return ($row['owner'] === $userId);
318318
}
319319

320-
public function findBoardId($cardId) {
320+
public function findBoardId($cardId): ?int {
321321
$sql = 'SELECT id FROM `*PREFIX*deck_boards` WHERE `id` IN (SELECT board_id FROM `*PREFIX*deck_stacks` WHERE id IN (SELECT stack_id FROM `*PREFIX*deck_cards` WHERE id = ?))';
322322
$stmt = $this->db->prepare($sql);
323323
$stmt->bindParam(1, $cardId, \PDO::PARAM_INT);

0 commit comments

Comments
 (0)