diff options
Diffstat (limited to 'lib/Room.php')
-rw-r--r-- | lib/Room.php | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/lib/Room.php b/lib/Room.php index d0a594910..312d8189e 100644 --- a/lib/Room.php +++ b/lib/Room.php @@ -168,6 +168,8 @@ class Room { private $password; /** @var int */ private $activeGuests; + /** @var int */ + private $callFlag; /** @var \DateTime|null */ private $activeSince; /** @var \DateTime|null */ @@ -204,6 +206,7 @@ class Room { string $description, string $password, int $activeGuests, + int $callFlag, \DateTime $activeSince = null, \DateTime $lastActivity = null, int $lastMessageId, @@ -229,6 +232,7 @@ class Room { $this->description = $description; $this->password = $password; $this->activeGuests = $activeGuests; + $this->callFlag = $callFlag; $this->activeSince = $activeSince; $this->lastActivity = $lastActivity; $this->lastMessageId = $lastMessageId; @@ -318,6 +322,10 @@ class Room { return $this->activeGuests; } + public function getCallFlag(): int { + return $this->callFlag; + } + public function getActiveSince(): ?\DateTime { return $this->activeSince; } @@ -662,18 +670,32 @@ class Room { /** * @param \DateTime $since + * @param int $callFlag * @param bool $isGuest * @return bool */ - public function setActiveSince(\DateTime $since, bool $isGuest): bool { + public function setActiveSince(\DateTime $since, int $callFlag, bool $isGuest): bool { if ($isGuest && $this->getType() === self::PUBLIC_CALL) { $query = $this->db->getQueryBuilder(); $query->update('talk_rooms') ->set('active_guests', $query->createFunction($query->getColumnName('active_guests') . ' + 1')) + ->set( + 'call_flag', + $query->expr()->bitwiseOr('call_flag', $callFlag) + ) ->where($query->expr()->eq('id', $query->createNamedParameter($this->getId(), IQueryBuilder::PARAM_INT))); $query->execute(); $this->activeGuests++; + } elseif (!$isGuest) { + $query = $this->db->getQueryBuilder(); + $query->update('talk_rooms') + ->set( + 'call_flag', + $query->expr()->bitwiseOr('call_flag', $callFlag) + ) + ->where($query->expr()->eq('id', $query->createNamedParameter($this->getId(), IQueryBuilder::PARAM_INT))); + $query->execute(); } if ($this->activeSince instanceof \DateTime) { @@ -682,7 +704,7 @@ class Room { $query = $this->db->getQueryBuilder(); $query->update('talk_rooms') - ->set('active_since', $query->createNamedParameter($since, 'datetime')) + ->set('active_since', $query->createNamedParameter($since, IQueryBuilder::PARAM_DATE)) ->where($query->expr()->eq('id', $query->createNamedParameter($this->getId(), IQueryBuilder::PARAM_INT))) ->andWhere($query->expr()->isNull('active_since')); $query->execute(); @@ -703,8 +725,9 @@ class Room { public function resetActiveSince(): bool { $query = $this->db->getQueryBuilder(); $query->update('talk_rooms') - ->set('active_guests', $query->createNamedParameter(0)) - ->set('active_since', $query->createNamedParameter(null, 'datetime')) + ->set('active_guests', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT)) + ->set('active_since', $query->createNamedParameter(null, IQueryBuilder::PARAM_DATE)) + ->set('call_flag', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT)) ->where($query->expr()->eq('id', $query->createNamedParameter($this->getId(), IQueryBuilder::PARAM_INT))) ->andWhere($query->expr()->isNotNull('active_since')); |