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