diff options
Diffstat (limited to 'formats/HtmlFormat.php')
-rw-r--r-- | formats/HtmlFormat.php | 217 |
1 files changed, 110 insertions, 107 deletions
diff --git a/formats/HtmlFormat.php b/formats/HtmlFormat.php index 12b5fc3a..d60c4d81 100644 --- a/formats/HtmlFormat.php +++ b/formats/HtmlFormat.php @@ -1,96 +1,97 @@ <?php -class HtmlFormat extends FormatAbstract { - const MIME_TYPE = 'text/html'; - - public function stringify(){ - $extraInfos = $this->getExtraInfos(); - $title = htmlspecialchars($extraInfos['name']); - $uri = htmlspecialchars($extraInfos['uri']); - $donationUri = htmlspecialchars($extraInfos['donationUri']); - $donationsAllowed = Configuration::getConfig('admin', 'donations'); - - // Dynamically build buttons for all formats (except HTML) - $formatFac = new FormatFactory(); - - $buttons = ''; - $links = ''; - - foreach($formatFac->getFormatNames() as $format) { - if(strcasecmp($format, 'HTML') === 0) { - continue; - } - - $query = str_ireplace('format=Html', 'format=' . $format, htmlentities($_SERVER['QUERY_STRING'])); - $buttons .= $this->buildButton($format, $query) . PHP_EOL; - - $mime = $formatFac->create($format)->getMimeType(); - $links .= $this->buildLink($format, $query, $mime) . PHP_EOL; - } - - if($donationUri !== '' && $donationsAllowed) { - $buttons .= '<a href="' - . $donationUri - . '" target="_blank"><button class="highlight">Donate to maintainer</button></a>' - . PHP_EOL; - $links .= '<link href="' - . $donationUri - . ' target="_blank"" title="Donate to Maintainer" rel="alternate">' - . PHP_EOL; - } - - $entries = ''; - foreach($this->getItems() as $item) { - $entryAuthor = $item->getAuthor() ? '<br /><p class="author">by: ' . $item->getAuthor() . '</p>' : ''; - $entryTitle = $this->sanitizeHtml(strip_tags($item->getTitle())); - $entryUri = $item->getURI() ?: $uri; - - $entryDate = ''; - if($item->getTimestamp()) { - - $entryDate = sprintf( - '<time datetime="%s">%s</time>', - date('Y-m-d H:i:s', $item->getTimestamp()), - date('Y-m-d H:i:s', $item->getTimestamp()) - ); - } - - $entryContent = ''; - if($item->getContent()) { - $entryContent = '<div class="content">' - . $this->sanitizeHtml($item->getContent()) - . '</div>'; - } - - $entryEnclosures = ''; - if(!empty($item->getEnclosures())) { - $entryEnclosures = '<div class="attachments"><p>Attachments:</p>'; - - foreach($item->getEnclosures() as $enclosure) { - $template = '<li class="enclosure"><a href="%s" rel="noopener noreferrer nofollow">%s</a></li>'; - $url = $this->sanitizeHtml($enclosure); - $anchorText = substr($url, strrpos($url, '/') + 1); - - $entryEnclosures .= sprintf($template, $url, $anchorText); - } - - $entryEnclosures .= '</div>'; - } - - $entryCategories = ''; - if(!empty($item->getCategories())) { - $entryCategories = '<div class="categories"><p>Categories:</p>'; - - foreach($item->getCategories() as $category) { - - $entryCategories .= '<li class="category">' - . $this->sanitizeHtml($category) - . '</li>'; - } - - $entryCategories .= '</div>'; - } - - $entries .= <<<EOD + +class HtmlFormat extends FormatAbstract +{ + const MIME_TYPE = 'text/html'; + + public function stringify() + { + $extraInfos = $this->getExtraInfos(); + $title = htmlspecialchars($extraInfos['name']); + $uri = htmlspecialchars($extraInfos['uri']); + $donationUri = htmlspecialchars($extraInfos['donationUri']); + $donationsAllowed = Configuration::getConfig('admin', 'donations'); + + // Dynamically build buttons for all formats (except HTML) + $formatFac = new FormatFactory(); + + $buttons = ''; + $links = ''; + + foreach ($formatFac->getFormatNames() as $format) { + if (strcasecmp($format, 'HTML') === 0) { + continue; + } + + $query = str_ireplace('format=Html', 'format=' . $format, htmlentities($_SERVER['QUERY_STRING'])); + $buttons .= $this->buildButton($format, $query) . PHP_EOL; + + $mime = $formatFac->create($format)->getMimeType(); + $links .= $this->buildLink($format, $query, $mime) . PHP_EOL; + } + + if ($donationUri !== '' && $donationsAllowed) { + $buttons .= '<a href="' + . $donationUri + . '" target="_blank"><button class="highlight">Donate to maintainer</button></a>' + . PHP_EOL; + $links .= '<link href="' + . $donationUri + . ' target="_blank"" title="Donate to Maintainer" rel="alternate">' + . PHP_EOL; + } + + $entries = ''; + foreach ($this->getItems() as $item) { + $entryAuthor = $item->getAuthor() ? '<br /><p class="author">by: ' . $item->getAuthor() . '</p>' : ''; + $entryTitle = $this->sanitizeHtml(strip_tags($item->getTitle())); + $entryUri = $item->getURI() ?: $uri; + + $entryDate = ''; + if ($item->getTimestamp()) { + $entryDate = sprintf( + '<time datetime="%s">%s</time>', + date('Y-m-d H:i:s', $item->getTimestamp()), + date('Y-m-d H:i:s', $item->getTimestamp()) + ); + } + + $entryContent = ''; + if ($item->getContent()) { + $entryContent = '<div class="content">' + . $this->sanitizeHtml($item->getContent()) + . '</div>'; + } + + $entryEnclosures = ''; + if (!empty($item->getEnclosures())) { + $entryEnclosures = '<div class="attachments"><p>Attachments:</p>'; + + foreach ($item->getEnclosures() as $enclosure) { + $template = '<li class="enclosure"><a href="%s" rel="noopener noreferrer nofollow">%s</a></li>'; + $url = $this->sanitizeHtml($enclosure); + $anchorText = substr($url, strrpos($url, '/') + 1); + + $entryEnclosures .= sprintf($template, $url, $anchorText); + } + + $entryEnclosures .= '</div>'; + } + + $entryCategories = ''; + if (!empty($item->getCategories())) { + $entryCategories = '<div class="categories"><p>Categories:</p>'; + + foreach ($item->getCategories() as $category) { + $entryCategories .= '<li class="category">' + . $this->sanitizeHtml($category) + . '</li>'; + } + + $entryCategories .= '</div>'; + } + + $entries .= <<<EOD <section class="feeditem"> <h2><a class="itemtitle" href="{$entryUri}">{$entryTitle}</a></h2> @@ -102,12 +103,12 @@ class HtmlFormat extends FormatAbstract { </section> EOD; - } + } - $charset = $this->getCharset(); + $charset = $this->getCharset(); - /* Data are prepared, now let's begin the "MAGIE !!!" */ - $toReturn = <<<EOD + /* Data are prepared, now let's begin the "MAGIE !!!" */ + $toReturn = <<<EOD <!DOCTYPE html> <html> <head> @@ -130,22 +131,24 @@ EOD; </html> EOD; - // Remove invalid characters - ini_set('mbstring.substitute_character', 'none'); - $toReturn = mb_convert_encoding($toReturn, $this->getCharset(), 'UTF-8'); - return $toReturn; - } + // Remove invalid characters + ini_set('mbstring.substitute_character', 'none'); + $toReturn = mb_convert_encoding($toReturn, $this->getCharset(), 'UTF-8'); + return $toReturn; + } - private function buildButton($format, $query) { - return <<<EOD + private function buildButton($format, $query) + { + return <<<EOD <a href="./?{$query}"><button class="rss-feed">{$format}</button></a> EOD; - } + } - private function buildLink($format, $query, $mime) { - return <<<EOD + private function buildLink($format, $query, $mime) + { + return <<<EOD <link href="./?{$query}" title="{$format}" rel="alternate" type="{$mime}"> EOD; - } + } } |