diff options
author | Yaco <franco@reevo.org> | 2022-03-08 13:08:34 +0000 |
---|---|---|
committer | Yaco <franco@reevo.org> | 2022-03-08 13:08:34 +0000 |
commit | c985c40d3f3fc6a2be3be3186df3bf2f32189475 (patch) | |
tree | cee11f5e5a7e351ee0fec36d58d72cbee4f7e49b /platform/www/vendor/openpsa/universalfeedcreator/lib/Creator/RSSCreator091.php |
first commit after acervus codebase
Diffstat (limited to 'platform/www/vendor/openpsa/universalfeedcreator/lib/Creator/RSSCreator091.php')
-rw-r--r-- | platform/www/vendor/openpsa/universalfeedcreator/lib/Creator/RSSCreator091.php | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/platform/www/vendor/openpsa/universalfeedcreator/lib/Creator/RSSCreator091.php b/platform/www/vendor/openpsa/universalfeedcreator/lib/Creator/RSSCreator091.php new file mode 100644 index 0000000..7b13acd --- /dev/null +++ b/platform/www/vendor/openpsa/universalfeedcreator/lib/Creator/RSSCreator091.php @@ -0,0 +1,197 @@ +<?php + +/** + * RSSCreator091 is a FeedCreator that implements RSS 0.91 Spec, revision 3. + * + * @see http://my.netscape.com/publish/formats/rss-spec-0.91.html + * @since 1.3 + * @author Kai Blankenhorn <kaib@bitfolge.de> + */ +class RSSCreator091 extends FeedCreator +{ + + /** @var string Stores this RSS feed's version number. */ + protected $RSSVersion; + + /** + * RSSCreator091 constructor. + */ + function __construct() + { + $this->_setRSSVersion("0.91"); + $this->contentType = "application/rss+xml"; + } + + /** + * Sets this RSS feed's version number. + * + * @param string $version + */ + protected function _setRSSVersion($version) + { + $this->RSSVersion = $version; + } + + /** @inheritdoc */ + public function createFeed() + { + $feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n"; + $feed .= $this->_createGeneratorComment(); + $feed .= $this->_createStylesheetReferences(); + $feed .= "<rss version=\"".$this->RSSVersion."\""; + + if (count($this->items) > 0 + && !empty($this->items[0]->lat) + ) { + $feed .= " xmlns:georss=\"http://www.georss.org/georss/\"\n"; + } + if (count($this->items) > 0 + && isset($this->items[0]->additionalElements['xcal:dtstart']) + ) { + $feed .= " xmlns:xcal=\"urn:ietf:params:xml:ns:xcal\"\n"; + } + $feed .= ">\n"; + if ($this->format == 'BASE') { + $feed .= " <channel xmlns:g=\"http://base.google.com/ns/1.0\">\n"; + } else { + $feed .= " <channel>\n"; + } + $feed .= " <title>".FeedCreator::iTrunc(htmlspecialchars($this->title), 100)."</title>\n"; + $this->descriptionTruncSize = 500; + $feed .= " <description>".$this->getDescription()."</description>\n"; + $feed .= " <link>".$this->link."</link>\n"; + $now = new FeedDate(); + $feed .= " <lastBuildDate>".htmlspecialchars( + $this->lastBuildDate ?: $now->rfc822() + )."</lastBuildDate>\n"; + $feed .= " <generator>".FEEDCREATOR_VERSION."</generator>\n"; + + if ($this->image != null) { + $feed .= " <image>\n"; + $feed .= " <url>".$this->image->url."</url>\n"; + $feed .= " <title>".FeedCreator::iTrunc(htmlspecialchars($this->image->title), 100)."</title>\n"; + $feed .= " <link>".$this->image->link."</link>\n"; + if ($this->image->width != "") { + $feed .= " <width>".$this->image->width."</width>\n"; + } + if ($this->image->height != "") { + $feed .= " <height>".$this->image->height."</height>\n"; + } + if ($this->image->description != "") { + $feed .= " <description>".htmlspecialchars($this->image->description)."</description>\n"; + } + $feed .= " </image>\n"; + } + if ($this->language != "") { + $feed .= " <language>".$this->language."</language>\n"; + } + if ($this->copyright != "") { + $feed .= " <copyright>".FeedCreator::iTrunc( + htmlspecialchars($this->copyright), + 100 + )."</copyright>\n"; + } + if ($this->editor != "") { + $feed .= " <managingEditor>".FeedCreator::iTrunc( + htmlspecialchars($this->editor), + 100 + )."</managingEditor>\n"; + } + if ($this->webmaster != "") { + $feed .= " <webMaster>".FeedCreator::iTrunc( + htmlspecialchars($this->webmaster), + 100 + )."</webMaster>\n"; + } + if ($this->pubDate != "") { + $pubDate = new FeedDate($this->pubDate); + $feed .= " <pubDate>".htmlspecialchars($pubDate->rfc822())."</pubDate>\n"; + } + if ($this->category != "") { + $feed .= " <category>".htmlspecialchars($this->category)."</category>\n"; + } + if ($this->docs != "") { + $feed .= " <docs>".FeedCreator::iTrunc(htmlspecialchars($this->docs), 500)."</docs>\n"; + } + if ($this->ttl != "") { + $feed .= " <ttl>".htmlspecialchars($this->ttl)."</ttl>\n"; + } + if ($this->rating != "") { + $feed .= " <rating>".FeedCreator::iTrunc(htmlspecialchars($this->rating), 500)."</rating>\n"; + } + if ($this->skipHours != "") { + $feed .= " <skipHours>".htmlspecialchars($this->skipHours)."</skipHours>\n"; + } + if ($this->skipDays != "") { + $feed .= " <skipDays>".htmlspecialchars($this->skipDays)."</skipDays>\n"; + } + $feed .= $this->_createAdditionalElements($this->additionalElements, " "); + + for ($i = 0; $i < count($this->items); $i++) { + $feed .= " <item>\n"; + $feed .= " <title>".FeedCreator::iTrunc( + htmlspecialchars(strip_tags($this->items[$i]->title)), + 100 + )."</title>\n"; + $feed .= " <link>".htmlspecialchars($this->items[$i]->link)."</link>\n"; + $feed .= " <description>".$this->items[$i]->getDescription()."</description>\n"; + + $creator = $this->getAuthor($this->items[$i]->author, $this->items[$i]->authorEmail); + if ($creator) { + $feed .= " <author>".htmlspecialchars($creator)."</author>\n"; + } + + /* + // on hold + if ($this->items[$i]->source!="") { + $feed.= " <source>".htmlspecialchars($this->items[$i]->source)."</source>\n"; + } + */ + if ($this->items[$i]->lat != "") { + $feed .= " <georss:point>".$this->items[$i]->lat." ".$this->items[$i]->long."</georss:point>\n"; + } + if (is_array($this->items[$i]->category)) { + foreach ($this->items[$i]->category as $cat) { + $feed .= " <category>".htmlspecialchars($cat)."</category>\n"; + } + } else { + if ($this->items[$i]->category != "") { + $feed .= " <category>".htmlspecialchars($this->items[$i]->category)."</category>\n"; + } + } + if ($this->items[$i]->comments != "") { + $feed .= " <comments>".htmlspecialchars($this->items[$i]->comments)."</comments>\n"; + } + if ($this->items[$i]->date != "") { + $itemDate = new FeedDate($this->items[$i]->date); + $feed .= " <pubDate>".htmlspecialchars($itemDate->rfc822())."</pubDate>\n"; + } + if ($this->items[$i]->guid != "") { + $feed .= " <guid>".htmlspecialchars($this->items[$i]->guid)."</guid>\n"; + } + if ($this->items[$i]->thumb != "") { + $feed .= " <g:image_link>".htmlspecialchars($this->items[$i]->thumb)."</g:image_link>\n"; + } + $feed .= $this->_createAdditionalElements($this->items[$i]->additionalElements, " "); + $feed .= " </item>\n"; + } + $feed .= " </channel>\n"; + $feed .= "</rss>\n"; + + return $feed; + } + + /** + * Compose the RSS-0.91 and RSS-2.0 author field. + * + * @author Joe Lapp <joe.lapp@pobox.com> + */ + function getAuthor($author, $email) + { + if ($author && $email) { + return $email.' ('.$author.')'; + } + + return $email; + } +} |