3 namespace wcf\system\message\quote
;
5 use wcf\system\cache\runtime\UserProfileRuntimeCache
;
6 use wcf\system\SingletonFactory
;
10 * Default implementation for quote handlers.
12 * @author Alexander Ebert
13 * @copyright 2001-2019 WoltLab GmbH
14 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
16 abstract class AbstractMessageQuoteHandler
extends SingletonFactory
implements IMessageQuoteHandler
22 public $templateName = 'messageQuoteList';
25 * list of quoted message
26 * @var QuotedMessage[]
28 public $quotedMessages = [];
33 public function render(array $data, $supportPaste = false)
35 $messages = $this->getMessages($data);
36 $this->overrideIsFullQuote($messages);
38 $userIDs = $userProfiles = [];
39 foreach ($messages as $message) {
40 $userID = $message->getUserID();
46 if (!empty($userIDs)) {
47 $userIDs = \array_unique
($userIDs);
48 $userProfiles = UserProfileRuntimeCache
::getInstance()->getObjects($userIDs);
51 WCF
::getTPL()->assign([
52 'messages' => $messages,
53 'supportPaste' => $supportPaste,
54 'userProfiles' => $userProfiles,
57 return WCF
::getTPL()->fetch($this->templateName
);
63 public function renderQuotes(array $data, $render = true, $renderAsString = true)
65 $messages = $this->getMessages($data);
66 $this->overrideIsFullQuote($messages);
69 foreach ($messages as $message) {
70 foreach ($message as $quoteID => $quote) {
71 $quotedMessage = $message->getFullQuote($quoteID);
72 if ($render && ($renderAsString && $quotedMessage === null)) {
73 $renderedQuotes[] = MessageQuoteManager
::getInstance()->renderQuote(
79 $renderedQuotes[] = MessageQuoteManager
::getInstance()->renderQuote(
81 ($quotedMessage === null ?
$quote : $quotedMessage),
88 return $renderedQuotes;
92 * Overrides the full quote flag for given message.
94 * @param QuotedMessage[] $messages
96 protected function overrideIsFullQuote(array $messages)
98 foreach ($messages as $message) {
99 $quoteIDs = $message->getQuoteIDs();
100 foreach ($quoteIDs as $quoteID) {
101 $message->setOverrideIsFullQuote($quoteID, MessageQuoteManager
::getInstance()->isFullQuote($quoteID));
107 * Returns a list of QuotedMessage objects.
109 * @param mixed[][] $data
110 * @return QuotedMessage[]
112 abstract protected function getMessages(array $data);