diff options
Diffstat (limited to 'platform/www/vendor/openpsa/universalfeedcreator/lib/Creator/HTMLCreator.php')
-rw-r--r-- | platform/www/vendor/openpsa/universalfeedcreator/lib/Creator/HTMLCreator.php | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/platform/www/vendor/openpsa/universalfeedcreator/lib/Creator/HTMLCreator.php b/platform/www/vendor/openpsa/universalfeedcreator/lib/Creator/HTMLCreator.php new file mode 100644 index 0000000..e02a8d7 --- /dev/null +++ b/platform/www/vendor/openpsa/universalfeedcreator/lib/Creator/HTMLCreator.php @@ -0,0 +1,161 @@ +<?php + +/** + * HTMLCreator is a FeedCreator that writes an HTML feed file to a specific + * location, overriding the createFeed method of the parent FeedCreator. + * The HTML produced can be included over http by scripting languages, or serve + * as the source for an IFrame. + * All output by this class is embedded in <div></div> tags to enable formatting + * using CSS. + * + * @author Pascal Van Hecke + * @since 1.7 + */ +class HTMLCreator extends FeedCreator +{ + + protected $contentType = "text/html"; + + /** + * Contains HTML to be output at the start of the feed's html representation. + */ + public $header; + + /** + * Contains HTML to be output at the end of the feed's html representation. + */ + public $footer; + + /** + * Contains HTML to be output between entries. A separator is only used in + * case of multiple entries. + */ + public $separator; + + /** + * Used to prefix the stylenames to make sure they are unique + * and do not clash with stylenames on the user's page. + */ + public $stylePrefix; + + /** @var bool Determines whether the links open in a new window or not. */ + public $openInNewWindow = true; + + /** @var string image alignments in output */ + public $imageAlign = "right"; + + /** + * In case of very simple output you may want to get rid of the style tags, + * hence this variable. There's no equivalent on item level, but of course you can + * add strings to it while iterating over the items ($this->stylelessOutput .= ...) + * and when it is non-empty, ONLY the styleless output is printed, the rest is ignored + * in the function createFeed(). + */ + public $stylelessOutput = ""; + + /** + * Writes the HTML. + * + * @inheritdoc + */ + public function createFeed() + { + // if there is styleless output, use the content of this variable and ignore the rest + if ($this->stylelessOutput != "") { + return $this->stylelessOutput; + } + + //if no stylePrefix is set, generate it yourself depending on the script name + if ($this->stylePrefix == "") { + $this->stylePrefix = str_replace(".", "_", $this->_generateFilename())."_"; + } + + //set an openInNewWindow_token_to be inserted or not + if ($this->openInNewWindow) { + $targetInsert = " class='target_blank'"; + } else { + $targetInsert = ''; + } + + // use this array to put the lines in and implode later with "document.write" javascript + $feedArray = array(); + if ($this->image != null) { + $imageStr = "<a href='".$this->image->link."'".$targetInsert.">". + "<img src='".$this->image->url."' border='0' alt='". + FeedCreator::iTrunc(htmlspecialchars($this->image->title), 100). + "' align='".$this->imageAlign."' "; + if ($this->image->width) { + $imageStr .= " width='".$this->image->width."' "; + } + if ($this->image->height) { + $imageStr .= " height='".$this->image->height."' "; + } + $imageStr .= "/></a>"; + $feedArray[] = $imageStr; + } + + if ($this->title) { + $feedArray[] = "<div class='".$this->stylePrefix."title'><a href='".$this->link."' ".$targetInsert." class='".$this->stylePrefix."title'>". + FeedCreator::iTrunc(htmlspecialchars($this->title), 100)."</a></div>"; + } + if ($this->getDescription()) { + $feedArray[] = "<div class='".$this->stylePrefix."description'>". + str_replace("]]>", "", str_replace("<![CDATA[", "", $this->getDescription())). + "</div>"; + } + + if ($this->header) { + $feedArray[] = "<div class='".$this->stylePrefix."header'>".$this->header."</div>"; + } + + for ($i = 0; $i < count($this->items); $i++) { + if ($this->separator and $i > 0) { + $feedArray[] = "<div class='".$this->stylePrefix."separator'>".$this->separator."</div>"; + } + + if ($this->items[$i]->title) { + if ($this->items[$i]->link) { + $feedArray[] = + "<div class='".$this->stylePrefix."item_title'><a href='".$this->items[$i]->link."' class='".$this->stylePrefix. + "item_title'".$targetInsert.">".FeedCreator::iTrunc( + htmlspecialchars(strip_tags($this->items[$i]->title)), + 100 + ). + "</a></div>"; + } else { + $feedArray[] = + "<div class='".$this->stylePrefix."item_title'>". + FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)), 100). + "</div>"; + } + } + if ($this->items[$i]->getDescription()) { + $feedArray[] = + "<div class='".$this->stylePrefix."item_description'>". + str_replace("]]>", "", str_replace("<![CDATA[", "", $this->items[$i]->getDescription())). + "</div>"; + } + } + if ($this->footer) { + $feedArray[] = "<div class='".$this->stylePrefix."footer'>".$this->footer."</div>"; + } + + $feed = "".join($feedArray, "\r\n"); + + return $feed; + } + + /** + * Overrides parent to produce .html extensions + * + * @return string the feed cache filename + * @since 1.4 + * @access private + */ + protected function _generateFilename() + { + $fileInfo = pathinfo($_SERVER["PHP_SELF"]); + + return substr($fileInfo["basename"], 0, -(strlen($fileInfo["extension"]) + 1)).".html"; + } +} |