Add missing new line
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / system / html / output / node / HtmlOutputUnfurlUrlNode.class.php
CommitLineData
6285c3c9 1<?php
2
3namespace wcf\system\html\output\node;
4
5use wcf\system\html\node\AbstractHtmlNodeProcessor;
6use wcf\system\html\node\HtmlNodeUnfurlLink;
36d5d24e 7use wcf\system\html\output\HtmlOutputProcessor;
6285c3c9 8use wcf\system\message\embedded\object\MessageEmbeddedObjectManager;
9use wcf\util\StringUtil;
10
11/**
12 * Node class to replace unfurled urls in the output.
13 *
14 * @author Joshua Ruesweg
15 * @copyright 2001-2021 WoltLab GmbH
16 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
17 * @package WoltLabSuite\Core\System\Html\Output\Node
18 * @since 5.4
19 */
20class HtmlOutputUnfurlUrlNode extends AbstractHtmlOutputNode
21{
22 /**
23 * @inheritDoc
24 */
25 protected $tagName = 'a';
e54c5ad3 26
6285c3c9 27 /**
28 * @inheritDoc
29 */
30 public function process(array $elements, AbstractHtmlNodeProcessor $htmlNodeProcessor)
31 {
32 /** @var \DOMElement $element */
33 foreach ($elements as $element) {
34 $attribute = $element->getAttribute(HtmlNodeUnfurlLink::UNFURL_URL_ID_ATTRIBUTE_NAME);
e54c5ad3 35 if (
36 $this->outputType === 'text/html'
6285c3c9 37 && !empty($attribute)
e54c5ad3 38 && MessageEmbeddedObjectManager::getInstance()->getObject('com.woltlab.wcf.unfurlUrl', $attribute) !== null
39 ) {
36d5d24e 40 $enableUgc = true;
41 $processor = $htmlNodeProcessor->getHtmlProcessor();
42 if ($processor instanceof HtmlOutputProcessor) {
43 $enableUgc = $processor->enableUgc;
44 }
45
6285c3c9 46 $nodeIdentifier = StringUtil::getRandomID();
36d5d24e 47 $htmlNodeProcessor->addNodeData($this, $nodeIdentifier, [
48 'urlId' => $attribute,
49 'enableUgc' => $enableUgc,
50 ]);
e54c5ad3 51
6285c3c9 52 $htmlNodeProcessor->renameTag($element, 'wcfNode-' . $nodeIdentifier);
53 }
54 }
55 }
e54c5ad3 56
6285c3c9 57 /**
58 * @inheritDoc
59 */
60 public function replaceTag(array $data)
61 {
36d5d24e 62 /** @var \wcf\data\unfurl\url\UnfurlUrl $object */
63 $object = MessageEmbeddedObjectManager::getInstance()->getObject('com.woltlab.wcf.unfurlUrl', $data['urlId']);
c2f65fac 64
36d5d24e 65 return $object->render($data['enableUgc']);
6285c3c9 66 }
67}