Commit | Line | Data |
---|---|---|
d45eaff6 MW |
1 | <?php |
2 | namespace wcf\system\message\quote; | |
a8c5936e | 3 | use wcf\system\cache\runtime\UserProfileRuntimeCache; |
d45eaff6 MW |
4 | use wcf\system\SingletonFactory; |
5 | use wcf\system\WCF; | |
6 | ||
7 | /** | |
8 | * Default implementation for quote handlers. | |
9 | * | |
10 | * @author Alexander Ebert | |
c839bd49 | 11 | * @copyright 2001-2018 WoltLab GmbH |
d45eaff6 | 12 | * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php> |
e71525e4 | 13 | * @package WoltLabSuite\Core\System\Message\Quote |
d45eaff6 MW |
14 | */ |
15 | abstract class AbstractMessageQuoteHandler extends SingletonFactory implements IMessageQuoteHandler { | |
16 | /** | |
17 | * template name | |
18 | * @var string | |
19 | */ | |
20 | public $templateName = 'messageQuoteList'; | |
21 | ||
22 | /** | |
23 | * list of quoted message | |
7a23a706 | 24 | * @var QuotedMessage[] |
d45eaff6 | 25 | */ |
058cbd6a | 26 | public $quotedMessages = []; |
d45eaff6 MW |
27 | |
28 | /** | |
0fcfe5f6 | 29 | * @inheritDoc |
d45eaff6 MW |
30 | */ |
31 | public function render(array $data, $supportPaste = false) { | |
32 | $messages = $this->getMessages($data); | |
1d9d9296 AE |
33 | $this->overrideIsFullQuote($messages); |
34 | ||
058cbd6a | 35 | $userIDs = $userProfiles = []; |
d45eaff6 MW |
36 | foreach ($messages as $message) { |
37 | $userID = $message->getUserID(); | |
38 | if ($userID) { | |
39 | $userIDs[] = $userID; | |
40 | } | |
41 | } | |
42 | ||
43 | if (!empty($userIDs)) { | |
44 | $userIDs = array_unique($userIDs); | |
a8c5936e | 45 | $userProfiles = UserProfileRuntimeCache::getInstance()->getObjects($userIDs); |
d45eaff6 MW |
46 | } |
47 | ||
058cbd6a | 48 | WCF::getTPL()->assign([ |
1d9d9296 | 49 | 'messages' => $messages, |
d45eaff6 MW |
50 | 'supportPaste' => $supportPaste, |
51 | 'userProfiles' => $userProfiles | |
058cbd6a | 52 | ]); |
d45eaff6 MW |
53 | |
54 | return WCF::getTPL()->fetch($this->templateName); | |
55 | } | |
56 | ||
57 | /** | |
0fcfe5f6 | 58 | * @inheritDoc |
d45eaff6 | 59 | */ |
69cabb77 | 60 | public function renderQuotes(array $data, $render = true, $renderAsString = true) { |
d45eaff6 | 61 | $messages = $this->getMessages($data); |
1d9d9296 | 62 | $this->overrideIsFullQuote($messages); |
d45eaff6 | 63 | |
058cbd6a | 64 | $renderedQuotes = []; |
d45eaff6 MW |
65 | foreach ($messages as $message) { |
66 | foreach ($message as $quoteID => $quote) { | |
7cdf6715 AE |
67 | $quotedMessage = $message->getFullQuote($quoteID); |
68 | if ($render && ($renderAsString && $quotedMessage === null)) { | |
69cabb77 | 69 | $renderedQuotes[] = MessageQuoteManager::getInstance()->renderQuote($message->object, $quote, $renderAsString); |
d45eaff6 MW |
70 | } |
71 | else { | |
69cabb77 | 72 | $renderedQuotes[] = MessageQuoteManager::getInstance()->renderQuote($message->object, ($quotedMessage === null ? $quote : $quotedMessage), $renderAsString); |
d45eaff6 MW |
73 | } |
74 | } | |
75 | } | |
76 | ||
77 | return $renderedQuotes; | |
78 | } | |
79 | ||
1d9d9296 AE |
80 | /** |
81 | * Overrides the full quote flag for given message. | |
82 | * | |
83 | * @param QuotedMessage[] $messages | |
84 | */ | |
85 | protected function overrideIsFullQuote(array $messages) { | |
86 | foreach ($messages as $message) { | |
87 | $quoteIDs = $message->getQuoteIDs(); | |
88 | foreach ($quoteIDs as $quoteID) { | |
89 | $message->setOverrideIsFullQuote($quoteID, MessageQuoteManager::getInstance()->isFullQuote($quoteID)); | |
90 | } | |
91 | } | |
92 | } | |
93 | ||
d45eaff6 MW |
94 | /** |
95 | * Returns a list of QuotedMessage objects. | |
96 | * | |
7a23a706 MS |
97 | * @param mixed[][] $data |
98 | * @return QuotedMessage[] | |
d45eaff6 MW |
99 | */ |
100 | abstract protected function getMessages(array $data); | |
101 | } |