⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 feedcreator.php

📁 简介:一款免费开源的内容管理系统(CMS)
💻 PHP
📖 第 1 页 / 共 4 页
字号:
			}			$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 + -