<?php /* * Copyright (c) 2010-2020 Tim Düsterhus. * * Use of this software is governed by the Business Source License * included in the LICENSE file. * * Change Date: 2024-11-20 * * On the date above, in accordance with the Business Source * License, use of this software will be governed by version 2 * or later of the General Public License. */ namespace chat\data\message; use \chat\data\room\Room; use \wcf\data\object\type\ObjectType; use \wcf\data\object\type\ObjectTypeCache; /** * Represents a chat message. * * @property-read integer $messageID * @property-read integer $time * @property-read integer $roomID * @property-read integer $userID * @property-read string $username * @property-read integer $objectTypeID * @property-read mixed $payload * @property-read integer $hasEmbeddedObjects * @property-read integer $isDeleted */ class Message extends \wcf\data\DatabaseObject { /** * @inheritDoc */ protected function handleData($data) { parent::handleData($data); $this->data['payload'] = @unserialize($this->data['payload']); if (!is_array($this->data['payload'])) { $this->data['payload'] = [ ]; } } /** * Returns whether this message already is inside the log. */ public function isInLog(): bool { return $this->time < (TIME_NOW - CHAT_ARCHIVE_AFTER); } /** * Returns the message type object of this message. */ public function getMessageType(): ObjectType { return ObjectTypeCache::getInstance()->getObjectType($this->objectTypeID); } /** * Returns the chat room that contains this message. */ public function getRoom(): Room { return \chat\data\room\RoomCache::getInstance()->getRoom($this->roomID); } }