Browse Source

Do not load full room object for share queries

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
pull/4856/head
Roeland Jago Douma 5 years ago
committed by Joas Schilling
parent
commit
bfc2cdd9b9
No known key found for this signature in database GPG Key ID: 7076EA9751AACDDA
  1. 27
      lib/Manager.php
  2. 6
      lib/Share/RoomShareProvider.php
  3. 2
      tests/psalm-baseline.xml

27
lib/Manager.php

@ -341,6 +341,33 @@ class Manager {
return $rooms;
}
/**
* @param string $userId
* @return string[]
*/
public function getRoomTokensForUser(string $userId): array {
$query = $this->db->getQueryBuilder();
$query->select('r.token')
->from('talk_attendees', 'a')
->leftJoin('a', 'talk_rooms', 'r', $query->expr()->eq('a.room_id', 'r.id'))
->where($query->expr()->eq('a.actor_id', $query->createNamedParameter($userId)))
->andWhere($query->expr()->eq('a.actor_type', $query->createNamedParameter(Attendee::ACTOR_USERS)));
$result = $query->execute();
$roomTokens = [];
while ($row = $result->fetch()) {
if ($row['token'] === null) {
// FIXME Temporary solution for the Talk6 release
continue;
}
$roomTokens[] = $row['token'];
}
$result->closeCursor();
return $roomTokens;
}
/**
* Returns rooms that are listable where the current user is not a participant.
*

6
lib/Share/RoomShareProvider.php

@ -781,7 +781,7 @@ class RoomShareProvider implements IShareProvider {
* @return IShare[]
*/
public function getSharedWith($userId, $shareType, $node, $limit, $offset): array {
$allRooms = $this->manager->getRoomsForUser($userId);
$allRooms = $this->manager->getRoomTokensForUser($userId);
/** @var IShare[] $shares */
$shares = [];
@ -816,10 +816,6 @@ class RoomShareProvider implements IShareProvider {
$qb->andWhere($qb->expr()->eq('s.file_source', $qb->createNamedParameter($node->getId())));
}
$rooms = array_map(function (Room $room) {
return $room->getToken();
}, $rooms);
$qb->andWhere($qb->expr()->eq('s.share_type', $qb->createNamedParameter(IShare::TYPE_ROOM)))
->andWhere($qb->expr()->in('s.share_with', $qb->createNamedParameter(
$rooms,

2
tests/psalm-baseline.xml

@ -250,7 +250,7 @@
</UndefinedDocblockClass>
</file>
<file src="lib/Manager.php">
<InvalidArgument occurrences="10"/>
<InvalidArgument occurrences="12"/>
</file>
<file src="lib/MatterbridgeManager.php">
<UndefinedClass occurrences="3">

Loading…
Cancel
Save