Compare commits
3 Commits
get-cards-
...
fix-duplic
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8ebeeaa755 | ||
|
|
ce81c89b03 | ||
|
|
1e59511d8d |
@@ -45,8 +45,7 @@ class SessionMapper extends QBMapper {
|
||||
$qb->select('id', 'board_id', 'last_contact', 'user_id', 'token')
|
||||
->from($this->getTableName())
|
||||
->where($qb->expr()->eq('board_id', $qb->createNamedParameter($boardId)))
|
||||
->andWhere($qb->expr()->gt('last_contact', $qb->createNamedParameter(time() - SessionService::SESSION_VALID_TIME)))
|
||||
->executeQuery();
|
||||
->andWhere($qb->expr()->gt('last_contact', $qb->createNamedParameter(time() - SessionService::SESSION_VALID_TIME)));
|
||||
|
||||
return $this->findEntities($qb);
|
||||
}
|
||||
|
||||
@@ -621,7 +621,9 @@ class BoardService {
|
||||
|
||||
if ($fullDetails) {
|
||||
$this->enrichWithStacks($board);
|
||||
$this->enrichWithLabels($board);
|
||||
if ($board->getLabels() === null) {
|
||||
$this->enrichWithLabels($board);
|
||||
}
|
||||
$this->enrichWithUsers($board);
|
||||
$this->enrichWithBoardSettings($board);
|
||||
$this->enrichWithActiveSessions($board);
|
||||
|
||||
@@ -19,7 +19,6 @@ use OCA\Deck\Db\CardMapper;
|
||||
use OCA\Deck\Db\ChangeHelper;
|
||||
use OCA\Deck\Db\Label;
|
||||
use OCA\Deck\Db\LabelMapper;
|
||||
use OCA\Deck\Db\Stack;
|
||||
use OCA\Deck\Db\StackMapper;
|
||||
use OCA\Deck\Event\CardCreatedEvent;
|
||||
use OCA\Deck\Event\CardDeletedEvent;
|
||||
@@ -65,47 +64,31 @@ class CardService {
|
||||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Card[] $cards
|
||||
* @return CardDetails[]
|
||||
*/
|
||||
public function enrichCards(array $cards, Stack $stack = null): array {
|
||||
if (!$cards) {
|
||||
return [];
|
||||
}
|
||||
|
||||
public function enrichCards($cards) {
|
||||
$user = $this->userManager->get($this->userId);
|
||||
|
||||
$cardIds = array_map(function (Card $card) use ($user, $stack) {
|
||||
$cardIds = array_map(function (Card $card) use ($user) {
|
||||
// Everything done in here might be heavy as it is executed for every card
|
||||
$cardId = $card->getId();
|
||||
$this->cardMapper->mapOwner($card);
|
||||
|
||||
$card->setAttachmentCount($this->attachmentService->count($cardId));
|
||||
|
||||
if ($stack === null) {
|
||||
$stack = $this->stackMapper->find($card->getStackId());
|
||||
}
|
||||
// TODO We should find a better way just to get the comment count so we can save 1-3 queries per card here
|
||||
$countComments = $this->commentsManager->getNumberOfCommentsForObject('deckCard', (string)$card->getId());
|
||||
$lastRead = $countComments > 0 ? $this->commentsManager->getReadMark('deckCard', (string)$card->getId(), $user) : null;
|
||||
$countUnreadComments = $lastRead ? $this->commentsManager->getNumberOfCommentsForObject('deckCard', (string)$card->getId(), $lastRead) : 0;
|
||||
$card->setCommentsUnread($countUnreadComments);
|
||||
$card->setCommentsCount($countComments);
|
||||
|
||||
$stack = $this->stackMapper->find($card->getStackId());
|
||||
$board = $this->boardService->find($stack->getBoardId(), false);
|
||||
$card->setRelatedStack($stack);
|
||||
$card->setRelatedBoard($board);
|
||||
|
||||
return $cardId;
|
||||
return $card->getId();
|
||||
}, $cards);
|
||||
|
||||
$commentsCountPerCardId = $this->commentsManager->getNumberOfCommentsForObjects('deckCard', $cardIds);
|
||||
$unreadCommentsCountPerCardId = $this->commentsManager->getNumberOfUnreadCommentsForObjects('deckCard', $cardIds, $user);
|
||||
|
||||
foreach ($commentsCountPerCardId as $cardId => $commentCounts) {
|
||||
foreach ($cards as $card) {
|
||||
if ($card->getId() === $cardId) {
|
||||
$card->setCommentsUnread($unreadCommentsCountPerCardId[$cardId]);
|
||||
$card->setCommentsCount($commentCounts);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$assignedLabels = $this->labelMapper->findAssignedLabelsForCards($cardIds);
|
||||
$assignedUsers = $this->assignedUsersMapper->findIn($cardIds);
|
||||
|
||||
|
||||
@@ -214,7 +214,7 @@ class PermissionService {
|
||||
}
|
||||
|
||||
try {
|
||||
$board = $this->boardMapper->find($boardId);
|
||||
$board = $this->getBoard($boardId);
|
||||
} catch (DoesNotExistException $e) {
|
||||
return [];
|
||||
} catch (MultipleObjectsReturnedException $e) {
|
||||
@@ -227,7 +227,7 @@ class PermissionService {
|
||||
} else {
|
||||
$users[$board->getOwner()] = new User($board->getOwner(), $this->userManager);
|
||||
}
|
||||
$acls = $this->aclMapper->findAll($boardId);
|
||||
$acls = $board->getAcl();
|
||||
/** @var Acl $acl */
|
||||
foreach ($acls as $acl) {
|
||||
if ($acl->getType() === Acl::PERMISSION_TYPE_USER) {
|
||||
|
||||
@@ -82,7 +82,7 @@ class StackService {
|
||||
return;
|
||||
}
|
||||
|
||||
$stack->setCards($this->cardService->enrichCards($cards, $stack));
|
||||
$stack->setCards($this->cardService->enrichCards($cards));
|
||||
}
|
||||
|
||||
private function enrichStacksWithCards($stacks, $since = -1) {
|
||||
|
||||
@@ -347,9 +347,8 @@ class PermissionServiceTest extends \Test\TestCase {
|
||||
->method('__call')
|
||||
->with('getOwner', [])
|
||||
->willReturn('user1');
|
||||
$this->aclMapper->expects($this->once())
|
||||
->method('findAll')
|
||||
->with(123)
|
||||
$board->expects($this->any())
|
||||
->method('getAcl')
|
||||
->willReturn([$aclUser, $aclGroup]);
|
||||
$this->boardMapper->expects($this->once())
|
||||
->method('find')
|
||||
|
||||
Reference in New Issue
Block a user