Stop using `TLegacyUserPropertyAccess` (and associated legacy `__get()`)
[GitHub/WoltLab/com.woltlab.wcf.conversation.git] / files / lib / data / conversation / message / ViewableConversationMessage.class.php
CommitLineData
9544b6b4 1<?php
fea86294 2
9544b6b4 3namespace wcf\data\conversation\message;
fea86294 4
232cdc4b 5use wcf\data\DatabaseObjectDecorator;
fea86294 6use wcf\data\user\UserProfile;
95ed3132 7use wcf\system\cache\runtime\UserProfileRuntimeCache;
9544b6b4 8
db864366
MS
9/**
10 * Represents a viewable conversation message.
fea86294
TD
11 *
12 * @author Marcel Werk
13 * @copyright 2001-2019 WoltLab GmbH
14 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
15 * @package WoltLabSuite\Core\Data\Conversation\Message
16 *
17 * @method ConversationMessage getDecoratedObject()
18 * @mixin ConversationMessage
db864366 19 */
fea86294
TD
20class ViewableConversationMessage extends DatabaseObjectDecorator
21{
fea86294
TD
22 /**
23 * @inheritDoc
24 */
25 protected static $baseClass = ConversationMessage::class;
26
27 /**
28 * user profile object
29 * @var UserProfile
30 */
31 protected $userProfile;
32
33 /**
34 * Returns the user profile object.
35 *
36 * @return UserProfile
37 */
38 public function getUserProfile()
39 {
40 if ($this->userProfile === null) {
41 if ($this->userID) {
42 $this->userProfile = UserProfileRuntimeCache::getInstance()->getObject($this->userID);
43 } else {
44 $this->userProfile = UserProfile::getGuestUserProfile($this->username);
45 }
46 }
47
48 return $this->userProfile;
49 }
50
51 /**
52 * Returns the viewable conversation message with the given id.
53 *
c85e9df8 54 * @param int $messageID
fea86294
TD
55 * @return ViewableConversationMessage
56 */
57 public static function getViewableConversationMessage($messageID)
58 {
59 $messageList = new ViewableConversationMessageList();
60 $messageList->setObjectIDs([$messageID]);
61 $messageList->readObjects();
62
63 return $messageList->search($messageID);
64 }
78fd78a7 65}