summaryrefslogtreecommitdiff
path: root/platform/www/vendor/openpsa/universalfeedcreator/lib/Creator/AtomCreator10.php
diff options
context:
space:
mode:
Diffstat (limited to 'platform/www/vendor/openpsa/universalfeedcreator/lib/Creator/AtomCreator10.php')
-rw-r--r--platform/www/vendor/openpsa/universalfeedcreator/lib/Creator/AtomCreator10.php164
1 files changed, 164 insertions, 0 deletions
diff --git a/platform/www/vendor/openpsa/universalfeedcreator/lib/Creator/AtomCreator10.php b/platform/www/vendor/openpsa/universalfeedcreator/lib/Creator/AtomCreator10.php
new file mode 100644
index 0000000..2f45322
--- /dev/null
+++ b/platform/www/vendor/openpsa/universalfeedcreator/lib/Creator/AtomCreator10.php
@@ -0,0 +1,164 @@
+<?php
+
+/**
+ * AtomCreator10 is a FeedCreator that implements the atom specification,
+ * as in http://www.atomenabled.org/developers/syndication/atom-format-spec.php
+ * Please note that just by using AtomCreator10 you won't automatically
+ * produce valid atom files. For example, you have to specify either an editor
+ * for the feed or an author for every single feed item.
+ * Some elements have not been implemented yet. These are (incomplete list):
+ * author URL, item author's email and URL, item contents, alternate links,
+ * other link content types than text/html. Some of them may be created with
+ * AtomCreator10::additionalElements.
+ *
+ * @see FeedCreator#additionalElements
+ * @since 1.7.2-mod (modified)
+ * @author Mohammad Hafiz Ismail (mypapit@gmail.com)
+ */
+class AtomCreator10 extends FeedCreator
+{
+
+ /**
+ * AtomCreator10 constructor.
+ */
+ public function __construct()
+ {
+ $this->contentType = "application/atom+xml";
+ $this->encoding = "utf-8";
+ }
+
+ /** @inheritdoc */
+ public function createFeed()
+ {
+ $feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
+ $feed .= $this->_createGeneratorComment();
+ $feed .= $this->_createStylesheetReferences();
+ $feed .= "<feed xmlns=\"http://www.w3.org/2005/Atom\"";
+ if (!empty($this->items[0]->lat)) {
+ $feed .= " xmlns:georss=\"http://www.georss.org/georss\"\n";
+ }
+ if ($this->language != "") {
+ $feed .= " xml:lang=\"".$this->language."\"";
+ }
+ $feed .= ">\n";
+ $feed .= " <title>".htmlspecialchars($this->title)."</title>\n";
+ $feed .= " <subtitle>".htmlspecialchars($this->description)."</subtitle>\n";
+ $feed .= " <link rel=\"alternate\" type=\"text/html\" href=\"".htmlspecialchars($this->link)."\"/>\n";
+ $feed .= " <id>".htmlspecialchars($this->link)."</id>\n";
+ $now = new FeedDate();
+ $feed .= " <updated>".htmlspecialchars($now->iso8601())."</updated>\n";
+ if ($this->editor != "") {
+ $feed .= " <author>\n";
+ $feed .= " <name>".$this->editor."</name>\n";
+ if ($this->editorEmail != "") {
+ $feed .= " <email>".$this->editorEmail."</email>\n";
+ }
+ $feed .= " </author>\n";
+ }
+ if ($this->category != "") {
+
+ $feed .= " <category term=\"".htmlspecialchars($this->category)."\" />\n";
+ }
+ if ($this->copyright != "") {
+ $feed .= " <rights>".FeedCreator::iTrunc(htmlspecialchars($this->copyright), 100)."</rights>\n";
+ }
+ $feed .= " <generator>".$this->version()."</generator>\n";
+
+ $feed .= " <link rel=\"self\" type=\"application/atom+xml\" href=\"".htmlspecialchars(
+ $this->syndicationURL
+ )."\" />\n";
+ $feed .= $this->_createAdditionalElements($this->additionalElements, " ");
+ for ($i = 0; $i < count($this->items); $i++) {
+ $feed .= " <entry>\n";
+ $feed .= " <title>".htmlspecialchars(strip_tags($this->items[$i]->title))."</title>\n";
+ $feed .= " <link rel=\"alternate\" type=\"text/html\" href=\"".htmlspecialchars(
+ $this->items[$i]->link
+ )."\"/>\n";
+ if ($this->items[$i]->date == "") {
+ $this->items[$i]->date = time();
+ }
+ $itemDate = new FeedDate($this->items[$i]->date);
+ $feed .= " <published>".htmlspecialchars($itemDate->iso8601())."</published>\n";
+ $feed .= " <updated>".htmlspecialchars($itemDate->iso8601())."</updated>\n";
+
+ $tempguid = $this->items[$i]->link;
+ if ($this->items[$i]->guid != "") {
+ $tempguid = $this->items[$i]->guid;
+ }
+
+ $feed .= " <id>".htmlspecialchars($tempguid)."</id>\n";
+ $feed .= $this->_createAdditionalElements($this->items[$i]->additionalElements, " ");
+ if ($this->items[$i]->author != "") {
+ $feed .= " <author>\n";
+ $feed .= " <name>".htmlspecialchars($this->items[$i]->author)."</name>\n";
+ if ($this->items[$i]->authorEmail != "") {
+ $feed .= " <email>".htmlspecialchars($this->items[$i]->authorEmail)."</email>\n";
+ }
+
+ if ($this->items[$i]->authorURL != "") {
+ $feed .= " <uri>".htmlspecialchars($this->items[$i]->authorURL)."</uri>\n";
+ }
+
+ $feed .= " </author>\n";
+ }
+
+ if (!empty($this->items[$i]->category)) {
+ foreach ((array) $this->items[$i]->category as $category) {
+ $feed .= " <category ";
+
+ if ($this->items[$i]->categoryScheme != "") {
+ $feed .= " scheme=\"".htmlspecialchars($this->items[$i]->categoryScheme)."\" ";
+ }
+
+ $feed .= " term=\"".htmlspecialchars($category)."\" />\n";
+ }
+ }
+
+ if ($this->items[$i]->description != "") {
+
+ /*
+ * ATOM should have at least summary tag, however this implementation may be inaccurate
+ */
+ $tempdesc = $this->items[$i]->getDescription();
+ $temptype = "";
+
+ if ($this->items[$i]->descriptionHtmlSyndicated) {
+ $temptype = " type=\"html\"";
+ $tempdesc = $this->items[$i]->getDescription();
+
+ }
+
+ if (empty($this->items[$i]->descriptionTruncSize)) {
+ $feed .= " <content".$temptype.">".$tempdesc."</content>\n";
+ }
+
+ $feed .= " <summary".$temptype.">".$tempdesc."</summary>\n";
+ } else {
+
+ $feed .= " <summary>no summary</summary>\n";
+
+ }
+
+ if ($this->items[$i]->enclosure != null) {
+ $feed .= " <link rel=\"enclosure\" href=\"".$this->items[$i]->enclosure->url."\" type=\"".$this->items[$i]->enclosure->type."\" length=\"".$this->items[$i]->enclosure->length."\"";
+
+ if ($this->items[$i]->enclosure->language != "") {
+ $feed .= " xml:lang=\"".$this->items[$i]->enclosure->language."\" ";
+ }
+
+ if ($this->items[$i]->enclosure->title != "") {
+ $feed .= " title=\"".$this->items[$i]->enclosure->title."\" ";
+ }
+
+ $feed .= " /> \n";
+ }
+ if ($this->items[$i]->lat != "") {
+ $feed .= " <georss:point>".$this->items[$i]->lat." ".$this->items[$i]->long."</georss:point>\n";
+ }
+ $feed .= " </entry>\n";
+ }
+ $feed .= "</feed>\n";
+
+ return $feed;
+ }
+}