isPostedOnBehalfOfGroup()) return $this->getClub(); return parent::getOwner($real); } function getClub(): Club { return (new Clubs)->get($this->getRecord()->group); } function getTitle(): string { return $this->getRecord()->title; } function isClosed(): bool { return (bool) $this->getRecord()->closed; } function isPinned(): bool { return (bool) $this->getRecord()->pinned; } function getPrettyId(): string { return $this->getRecord()->group . "_" . $this->getVirtualId(); } function isPostedOnBehalfOfGroup(): bool { return ($this->getRecord()->flags & 0b10000000) > 0; } function isDeleted(): bool { return (bool) $this->getRecord()->deleted; } function canBeModifiedBy(User $user): bool { return $this->getOwner(false)->getId() === $user->getId() || $this->getClub()->canBeModifiedBy($user); } function getLastComment(): ?Comment { $array = iterator_to_array($this->getLastComments(1)); return isset($array[0]) ? $array[0] : NULL; } function getUpdateTime(): DateTime { $lastComment = $this->getLastComment(); if(!is_null($lastComment)) return $lastComment->getPublicationTime(); else return $this->getEditTime() ?? $this->getPublicationTime(); } function deleteTopic(): void { $this->setDeleted(1); $this->unwire(); $this->save(); } }