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
No known key found for this signature in database
GPG Key ID: 7076EA9751AACDDA
3 changed files with
29 additions and
6 deletions
-
lib/Manager.php
-
lib/Share/RoomShareProvider.php
-
tests/psalm-baseline.xml
|
|
|
@ -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. |
|
|
|
* |
|
|
|
|
|
|
|
@ -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, |
|
|
|
|
|
|
|
@ -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"> |
|
|
|
|