Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/spreed.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Manager.php')
-rw-r--r--lib/Manager.php35
1 files changed, 19 insertions, 16 deletions
diff --git a/lib/Manager.php b/lib/Manager.php
index fa23f4ade..8795b056a 100644
--- a/lib/Manager.php
+++ b/lib/Manager.php
@@ -303,6 +303,7 @@ class Manager {
* @return Room[]
*/
public function getRoomsForUser(string $userId, bool $includeLastMessage = false): array {
+ // FIXME hand in a list of sessions or how do we want to do it here?
$query = $this->db->getQueryBuilder();
$helper = new SelectHelper();
$helper->selectRoomsTable($query);
@@ -391,9 +392,6 @@ class Manager {
$query->expr()->eq('a.actor_type', $query->createNamedParameter(Attendee::ACTOR_USERS)),
$query->expr()->eq('a.room_id', 'r.id')
))
- ->leftJoin('a', 'talk_sessions', 's', $query->expr()->andX(
- $query->expr()->eq('a.id', 's.attendee_id')
- ))
->where($query->expr()->isNull('a.id'))
->andWhere($query->expr()->in('r.type', $query->createNamedParameter($allowedRoomTypes, IQueryBuilder::PARAM_INT_ARRAY)))
->andWhere($query->expr()->in('r.listable', $query->createNamedParameter($allowedListedTypes, IQueryBuilder::PARAM_INT_ARRAY)));
@@ -435,15 +433,11 @@ class Manager {
if ($userId !== null) {
// Non guest user
$helper->selectAttendeesTable($query);
- $helper->selectSessionsTable($query);
$query->leftJoin('r', 'talk_attendees', 'a', $query->expr()->andX(
$query->expr()->eq('a.actor_id', $query->createNamedParameter($userId)),
$query->expr()->eq('a.actor_type', $query->createNamedParameter(Attendee::ACTOR_USERS)),
$query->expr()->eq('a.room_id', 'r.id')
))
- ->leftJoin('a', 'talk_sessions', 's', $query->expr()->andX(
- $query->expr()->eq('a.id', 's.attendee_id')
- ))
->andWhere($query->expr()->isNotNull('a.id'));
}
@@ -483,12 +477,13 @@ class Manager {
*
* @param string $token
* @param string|null $userId
+ * @param string|null $sessionId
* @param bool $includeLastMessage
* @param bool $isSIPBridgeRequest
* @return Room
* @throws RoomNotFoundException
*/
- public function getRoomForUserByToken(string $token, ?string $userId, bool $includeLastMessage = false, bool $isSIPBridgeRequest = false): Room {
+ public function getRoomForUserByToken(string $token, ?string $userId, ?string $sessionId = null, bool $includeLastMessage = false, bool $isSIPBridgeRequest = false): Room {
$query = $this->db->getQueryBuilder();
$helper = new SelectHelper();
$helper->selectRoomsTable($query);
@@ -499,15 +494,18 @@ class Manager {
if ($userId !== null) {
// Non guest user
$helper->selectAttendeesTable($query);
- $helper->selectSessionsTable($query);
$query->leftJoin('r', 'talk_attendees', 'a', $query->expr()->andX(
$query->expr()->eq('a.actor_id', $query->createNamedParameter($userId)),
$query->expr()->eq('a.actor_type', $query->createNamedParameter(Attendee::ACTOR_USERS)),
$query->expr()->eq('a.room_id', 'r.id')
- ))
- ->leftJoin('a', 'talk_sessions', 's', $query->expr()->andX(
+ ));
+ if ($sessionId !== null) {
+ $helper->selectSessionsTable($query);
+ $query->leftJoin('a', 'talk_sessions', 's', $query->expr()->andX(
+ $query->expr()->eq('s.session_id', $query->createNamedParameter($sessionId)),
$query->expr()->eq('a.id', 's.attendee_id')
));
+ }
}
if ($includeLastMessage) {
@@ -584,26 +582,31 @@ class Manager {
* @param string $token
* @param string $actorType
* @param string $actorId
+ * @param string|null $sessionId
* @return Room
* @throws RoomNotFoundException
*/
- public function getRoomByActor(string $token, string $actorType, string $actorId): Room {
+ public function getRoomByActor(string $token, string $actorType, string $actorId, ?string $sessionId = null): Room {
$query = $this->db->getQueryBuilder();
$helper = new SelectHelper();
$helper->selectRoomsTable($query);
$helper->selectAttendeesTable($query);
- $helper->selectSessionsTable($query);
$query->from('talk_rooms', 'r')
->leftJoin('r', 'talk_attendees', 'a', $query->expr()->andX(
$query->expr()->eq('a.actor_type', $query->createNamedParameter($actorType)),
$query->expr()->eq('a.actor_id', $query->createNamedParameter($actorId)),
$query->expr()->eq('a.room_id', 'r.id')
))
- ->leftJoin('a', 'talk_sessions', 's', $query->expr()->andX(
- $query->expr()->eq('a.id', 's.attendee_id')
- ))
->where($query->expr()->eq('r.token', $query->createNamedParameter($token)));
+ if ($sessionId !== null) {
+ $helper->selectSessionsTable($query);
+ $query->leftJoin('a', 'talk_sessions', 's', $query->expr()->andX(
+ $query->expr()->eq('s.session_id', $query->createNamedParameter($sessionId)),
+ $query->expr()->eq('a.id', 's.attendee_id')
+ ));
+ }
+
$result = $query->execute();
$row = $result->fetch();
$result->closeCursor();