Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/old/vendor/magento/module-release-notification/Ui/Renderer/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //home/corals/old/vendor/magento/module-release-notification/Ui/Renderer/NotificationRenderer.php
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

namespace Magento\ReleaseNotification\Ui\Renderer;

use Magento\Framework\Escaper;

/**
 * Builds the HTML for the release notification modals
 */
class NotificationRenderer
{
    /**
     * @var Escaper
     */
    private $escaper;

    /**
     * @param Escaper $escaper
     */
    public function __construct(
        Escaper $escaper
    ) {
        $this->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 .= "<div class='release-notification-title-with-image' style='background-image: url(\"" . $imageUrl
                . "\")'>";
            $content .= $title;
            $content .= "</div>";
        } else {
            $content = $title;
        }

        return $content;
    }

    /**
     * Returns the HTML for the content in the notification ui component
     *
     * @param array $page
     * @return string
     */
    public function getNotificationContent(array $page)
    {
        $content = $this->buildMainContent($page['mainContent']);
        $content .= $this->buildSubHeadings($page['subHeading']);
        $content .= $this->buildFooter($page['footer']);

        return $content;
    }

    /**
     * Builds the HTML for the main content in the notification ui component
     *
     * @param array $mainContent
     * @return string
     */
    private function buildMainContent(array $mainContent)
    {
        $content = $this->buildContentTextAreas($mainContent['content']);
        $content .= $this->buildLists($mainContent['lists']);

        return $this->formatContentWithLinks($content);
    }

    /**
     * Builds the HTML for the main text areas in the notification ui component
     *
     * @param array $contentAreas
     * @return string
     */
    private function buildContentTextAreas(array $contentAreas)
    {
        $content = "";
        $lastContentArea = end($contentAreas);

        foreach ($contentAreas as $contentArea) {
            $content .= "<p>";
            $content .= $this->escaper->escapeHtml($contentArea['text']);
            $content .= "</p>";
            if ($contentArea != $lastContentArea) {
                $content .= "<br />";
            }
        }

        return $content;
    }

    /**
     * Builds the HTML for the bullet list content in the notification ui component
     *
     * @param array $lists
     * @return string
     */
    private function buildLists(array $lists)
    {
        $content = "<ul>";

        foreach ($lists as $listItem) {
            $content .= "<li><span>";
            $content .= $this->escaper->escapeHtml($listItem['text']);
            $content .= "</span></li>";
        }

        $content .= "</ul>";

        return $content;
    }

    /**
     * Builds the HTML for the highlighted sub heads for the overview page in the notification ui component
     *
     * @param array $subHeadings
     * @return string
     */
    private function buildSubHeadings(array $subHeadings)
    {
        $content = "";

        foreach ($subHeadings as $subHeading) {
            if (!empty($subHeading['imageUrl'])) {
                $content .= "<div class='highlight-item' style='background-image: url(\""
                    . $this->escaper->escapeUrl($subHeading['imageUrl']) . "\")'>";
            } else {
                $content .= "<div class='highlight-item-no-image'>";
            }

            $content .= "<h3>";
            $content .= $this->escaper->escapeHtml($subHeading['title']);
            $content .= "</h3>";
            $content .= "<p>";
            $content .= isset($subHeading['content']) ? $this->formatContentWithLinks($subHeading['content']) : '';
            $content .= "</p>";
            $content .= "</div>";
        }

        return $content;
    }

    /**
     * Builds the HTML for the footer content in the notification ui component
     *
     * @param array $footer
     * @return string
     */
    private function buildFooter(array $footer)
    {
        $content = "<p>";
        $content .= $this->escaper->escapeHtml($footer['content']);
        $content .= "</p>";

        return $this->formatContentWithLinks($content);
    }

    /**
     * Formats links in the content to a correct format.
     *
     * 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,
                    "<a target='_blank' href='{$this->escaper->escapeUrl($urlMatch)}'>
                        {$this->escaper->escapeHtml($urlTextMatches[1][$key])}</a>",
                    $content
                );
            } else {
                $content = str_replace(
                    $urlMatch,
                    "<a target='_blank' href='{$this->escaper->escapeUrl($urlMatch)}'>
                        {$this->escaper->escapeUrl($urlMatch)}</a>",
                    $content
                );
            }
        }

        return $content;
    }
}

Spamworldpro Mini