📄 feedcreator.php
字号:
} $this->unix += $tzOffset; return; } $this->unix = 0; } /** * Gets the date stored in this FeedDate as an RFC 822 date. * * @return a date in RFC 822 format */ function rfc822() { //return gmdate("r",$this->unix); $date = @gmdate("D, d M Y H:i:s", $this->unix); if (TIME_ZONE!="") $date .= " ".str_replace(":","",TIME_ZONE); return $date; } /** * Gets the date stored in this FeedDate as an ISO 8601 date. * * @return a date in ISO 8601 (RFC 3339) format */ function iso8601() { $date = @gmdate("Y-m-d\TH:i:sO",$this->unix); $date = substr($date,0,22) . ':' . substr($date,-2); if (TIME_ZONE!="") $date = str_replace("+00:00",TIME_ZONE,$date); return $date; } /** * Gets the date stored in this FeedDate as unix time stamp. * * @return a date as a unix time stamp */ function unix() { return $this->unix; }}/** * RSSCreator10 is a FeedCreator that implements RDF Site Summary (RSS) 1.0. * * @see http://www.purl.org/rss/1.0/ * @since 1.3 * @author Kai Blankenhorn <kaib@bitfolge.de> */class RSSCreator10 extends FeedCreator { /** * Builds the RSS feed's text. The feed will be compliant to RDF Site Summary (RSS) 1.0. * The feed will contain all items previously added in the same order. * @return string the feed's complete text */ function createFeed() { $feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n"; $feed.= $this->_createGeneratorComment(); if ($this->cssStyleSheet=="") { $cssStyleSheet = "http://www.w3.org/2000/08/w3c-synd/style.css"; } $feed.= $this->_createStylesheetReferences(); $feed.= "<rdf:RDF\n"; $feed.= " xmlns=\"http://purl.org/rss/1.0/\"\n"; $feed.= " xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n"; $feed.= " xmlns:slash=\"http://purl.org/rss/1.0/modules/slash/\"\n"; $feed.= " xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n"; $feed.= " <channel rdf:about=\"".$this->syndicationURL."\">\n"; $feed.= " <title>".htmlspecialchars($this->title)."</title>\n"; $feed.= " <description>".htmlspecialchars($this->description)."</description>\n"; $feed.= " <link>".$this->link."</link>\n"; if ($this->image!=null) { $feed.= " <image rdf:resource=\"".$this->image->url."\" />\n"; } $now = new FeedDate(); $feed.= " <dc:date>".htmlspecialchars($now->iso8601())."</dc:date>\n"; $feed.= " <items>\n"; $feed.= " <rdf:Seq>\n"; for ($i=0;$i<count($this->items);$i++) { $feed.= " <rdf:li rdf:resource=\"".htmlspecialchars($this->items[$i]->link)."\"/>\n"; } $feed.= " </rdf:Seq>\n"; $feed.= " </items>\n"; $feed.= " </channel>\n"; if ($this->image!=null) { $feed.= " <image rdf:about=\"".$this->image->url."\">\n"; $feed.= " <title>".$this->image->title."</title>\n"; $feed.= " <link>".$this->image->link."</link>\n"; $feed.= " <url>".$this->image->url."</url>\n"; $feed.= " </image>\n"; } $feed.= $this->_createAdditionalElements($this->additionalElements, " "); $feed.= $this->additionalMarkup; for ($i=0;$i<count($this->items);$i++) { $feed.= " <item rdf:about=\"".htmlspecialchars($this->items[$i]->link)."\">\n"; //$feed.= " <dc:type>Posting</dc:type>\n"; $feed.= " <dc:format>text/html</dc:format>\n"; if ($this->items[$i]->date!=null) { $itemDate = new FeedDate($this->items[$i]->date); $feed.= " <dc:date>".htmlspecialchars($itemDate->iso8601())."</dc:date>\n"; } if ($this->items[$i]->source!="") { $feed.= " <dc:source>".htmlspecialchars($this->items[$i]->source)."</dc:source>\n"; } if ($this->items[$i]->author!="") { $feed.= " <dc:creator>".htmlspecialchars($this->items[$i]->author)."</dc:creator>\n"; } $feed.= " <title>".htmlspecialchars(strip_tags(strtr($this->items[$i]->title,"\n\r"," ")))."</title>\n"; $feed.= " <link>".htmlspecialchars($this->items[$i]->link)."</link>\n"; $feed.= " <description>".htmlspecialchars($this->items[$i]->description)."</description>\n"; $feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements, " "); $feed.= $this->items[$i]->additionalMarkup; $feed.= " </item>\n"; } $feed.= "</rdf:RDF>\n"; return $feed; }}/** * 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 { /** * Stores this RSS feed's version number. * @access private */ var $RSSVersion; var $namespaces; function RSSCreator091() { $this->_setRSSVersion("0.91"); $this->contentType = "application/rss+xml"; $this->namespaces = array(); } /** * Sets this RSS feed's version number. * @access private */ function _setRSSVersion($version) { $this->RSSVersion = $version; } function _getNameSpaces() { if (!is_array($this->namespaces)) return ""; $output = ""; foreach ($this->namespaces as $namespace=>$dtd) { $output .= " ".$namespace."=\"".$dtd."\""; } return $output; } function addNameSpace($namespace,$dtd) { $this->namespaces[$namespace] = $dtd; } /** * Builds the RSS feed's text. The feed will be compliant to RDF Site Summary (RSS) 1.0. * The feed will contain all items previously added in the same order. * @return string the feed's complete text */ function createFeed() { $feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n"; $feed.= $this->_createGeneratorComment(); $feed.= $this->_createStylesheetReferences(); $feed.= "<rss version=\"".$this->RSSVersion."\"".$this->_getNameSpaces().">\n"; $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($now->rfc822())."</lastBuildDate>\n"; $feed.= " <generator>".$this->generator."</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>".$this->image->getDescription()."</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, " "); $feed.= $this->additionalMarkup; 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"; if ($this->items[$i]->author!="") { $feed.= " <author>".htmlspecialchars($this->items[$i]->author)."</author>\n"; } /* // on hold if ($this->items[$i]->source!="") { $feed.= " <source>".htmlspecialchars($this->items[$i]->source)."</source>\n"; } */ 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"; } $feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements, " "); $feed.= $this->items[$i]->additionalMarkup; if ($this->RSSVersion == "2.0" && $this->items[$i]->enclosure != NULL) { $feed.= " <enclosure url=\""; $feed.= $this->items[$i]->enclosure->url; $feed.= "\" length=\""; $feed.= $this->items[$i]->enclosure->length; $feed.= "\" type=\""; $feed.= $this->items[$i]->enclosure->type; $feed.= "\"/>\n"; } $feed.= " </item>\n"; } $feed.= " </channel>\n"; $feed.= "</rss>\n"; return $feed; }}/** * RSSCreator20 is a FeedCreator that implements RDF Site Summary (RSS) 2.0. * * @see http://backend.userland.com/rss * @since 1.3 * @author Kai Blankenhorn <kaib@bitfolge.de> */class RSSCreator20 extends RSSCreator091 { function RSSCreator20() { parent::_setRSSVersion("2.0"); }}/** * PIECreator01 is a FeedCreator that implements the emerging PIE specification, * as in http://intertwingly.net/wiki/pie/Syntax. * * @deprecated * @since 1.3 * @author Scott Reynen <scott@randomchaos.com> and Kai Blankenhorn <kaib@bitfolge.de> */class PIECreator01 extends FeedCreator { function PIECreator01() { $this->encoding = "utf-8"; } function createFeed() { $feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n"; $feed.= $this->_createStylesheetReferences(); $feed.= "<feed version=\"0.1\" xmlns=\"http://example.com/newformat#\">\n"; $feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars($this->title),100)."</title>\n"; $this->truncSize = 500; $feed.= " <subtitle>".$this->getDescription()."</subtitle>\n"; $feed.= " <link>".$this->link."</link>\n"; for ($i=0;$i<count($this->items);$i++) { $feed.= " <entry>\n"; $feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),100)."</title>\n"; $feed.= " <link>".htmlspecialchars($this->items[$i]->link)."</link>\n"; $itemDate = new FeedDate($this->items[$i]->date); $feed.= " <created>".htmlspecialchars($itemDate->iso8601())."</created>\n"; $feed.= " <issued>".htmlspecialchars($itemDate->iso8601())."</issued>\n"; $feed.= " <modified>".htmlspecialchars($itemDate->iso8601())."</modified>\n"; $feed.= " <id>".htmlspecialchars($this->items[$i]->guid)."</id>\n"; if ($this->items[$i]->author!="") { $feed.= " <author>\n"; $feed.= " <name>".htmlspecialchars($this->items[$i]->author)."</name>\n"; if ($this->items[$i]->authorEmail!="") { $feed.= " <email>".$this->items[$i]->authorEmail."</email>\n"; } $feed.=" </author>\n"; } $feed.= " <content type=\"text/html\" xml:lang=\"en-us\">\n"; $feed.= " <div xmlns=\"http://www.w3.org/1999/xhtml\">".$this->items[$i]->getDescription()."</div>\n"; $feed.= " </content>\n"; $feed.= " </entry>\n"; } $feed.= "</feed>\n"; return $feed; }}/** * 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 { function AtomCreator10() { $this->contentType = "application/atom+xml"; $this->encoding = "utf-8"; } 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 ($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"; } $feed.= " <generator>".FEEDCREATOR_VERSION."</generator>\n"; $feed.= "<link rel=\"self\" type=\"application/atom+xml\" href=\"". $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"; $feed.= " <id>".htmlspecialchars($this->items[$i]->link)."</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"; $feed.= " </author>\n"; } if ($this->items[$i]->description!="") { $feed.= " <summary>".htmlspecialchars($this->items[$i]->description)."</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 . "\" />\n"; } $feed.= " </entry>\n"; } $feed.= "</feed>\n"; return $feed; }}/** * AtomCreator03 is a FeedCreator that implements the atom specification, * as in http://www.intertwingly.net/wiki/pie/FrontPage. * Please note that just by using AtomCreator03 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 * AtomCreator03::additionalElements. * * @see FeedCreator#additionalElements * @since 1.6 * @author Kai Blankenhorn <kaib@bitfolge.de>, Scott Reynen <scott@randomchaos.com> */class AtomCreator03 extends FeedCreator { function AtomCreator03() { $this->contentType = "application/atom+xml"; $this->encoding = "utf-8"; } function createFeed() { $feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n"; $feed.= $this->_createGeneratorComment(); $feed.= $this->_createStylesheetReferences(); $feed.= "<feed version=\"0.3\" xmlns=\"http://purl.org/atom/ns#\""; if ($this->language!="") { $feed.= " xml:lang=\"".$this->language."\"";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -