escaper = $escaper; } /** * Returns the HTML for notification's title to the ui component * * @param array $page * @return string */ public function getNotificationTitle(array $page) { $title = $this->escaper->escapeHtml($page['mainContent']['title']); $imageUrl = $this->escaper->escapeUrl($page['mainContent']['imageUrl']); $content = ""; if (!empty($imageUrl)) { $content .= "
"; $content .= $this->escaper->escapeHtml($contentArea['text']); $content .= "
"; if ($contentArea != $lastContentArea) { $content .= ""; $content .= $this->formatContentWithLinks($subHeading['content']); $content .= "
"; $content .= ""; $content .= $this->escaper->escapeHtml($footer['content']); $content .= "
"; return $this->formatContentWithLinks($content); } /** * Searches a given string for a URL, formats it to an HTML anchor tag, and returns the original string in the * correct HTML format. * * @param string $content * @return string */ private function formatContentWithLinks($content) { $urlRegex = '#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#'; $urlTextRegex = '/\[(.*?)\]/'; preg_match_all($urlRegex, $content, $urlMatches); preg_match_all($urlTextRegex, $content, $urlTextMatches); foreach ($urlMatches[0] as $key => $urlMatch) { if (!empty($urlTextMatches[0])) { $linkMatch = $urlMatch . " " . $urlTextMatches[0][$key]; $content = str_replace( $linkMatch, " {$this->escaper->escapeHtml($urlTextMatches[1][$key])}", $content ); } else { $content = str_replace( $urlMatch, " {$this->escaper->escapeUrl($urlMatch)}", $content ); } } return $content; } }