1572dd708SAndreas Gohr<?php 2572dd708SAndreas Gohr 3572dd708SAndreas Gohr/** 4572dd708SAndreas Gohr * RSSCreator10 is a FeedCreator that implements RDF Site Summary (RSS) 1.0. 5572dd708SAndreas Gohr * 6572dd708SAndreas Gohr * @see http://www.purl.org/rss/1.0/ 7572dd708SAndreas Gohr * @since 1.3 8572dd708SAndreas Gohr * @author Kai Blankenhorn <kaib@bitfolge.de> 9572dd708SAndreas Gohr */ 10572dd708SAndreas Gohrclass RSSCreator10 extends FeedCreator 11572dd708SAndreas Gohr{ 12572dd708SAndreas Gohr 13572dd708SAndreas Gohr /** @inheritdoc */ 14572dd708SAndreas Gohr public function createFeed() 15572dd708SAndreas Gohr { 16572dd708SAndreas Gohr $feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n"; 17572dd708SAndreas Gohr $feed .= $this->_createGeneratorComment(); 18572dd708SAndreas Gohr if (empty($this->cssStyleSheet)) { 19572dd708SAndreas Gohr $this->cssStyleSheet = "http://www.w3.org/2000/08/w3c-synd/style.css"; 20572dd708SAndreas Gohr } 21572dd708SAndreas Gohr $feed .= $this->_createStylesheetReferences(); 22572dd708SAndreas Gohr $feed .= "<rdf:RDF\n"; 23572dd708SAndreas Gohr $feed .= " xmlns=\"http://purl.org/rss/1.0/\"\n"; 24572dd708SAndreas Gohr $feed .= " xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n"; 25572dd708SAndreas Gohr $feed .= " xmlns:slash=\"http://purl.org/rss/1.0/modules/slash/\"\n"; 26572dd708SAndreas Gohr if (!empty($this->items[0]->thumb)) { 27572dd708SAndreas Gohr $feed .= " xmlns:photo=\"http://www.pheed.com/pheed/\"\n"; 28572dd708SAndreas Gohr } 29572dd708SAndreas Gohr if (!empty($this->items[0]->lat)) { 30572dd708SAndreas Gohr $feed .= " xmlns:georss=\"http://www.georss.org/georss\"\n"; 31572dd708SAndreas Gohr } 32572dd708SAndreas Gohr $feed .= " xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n"; 33572dd708SAndreas Gohr $feed .= " <channel rdf:about=\"".$this->syndicationURL."\">\n"; 34*64d8abdbSAndreas Gohr $feed .= " <title>".htmlspecialchars((string) $this->title)."</title>\n"; 35*64d8abdbSAndreas Gohr $feed .= " <description>".htmlspecialchars((string) $this->description)."</description>\n"; 36572dd708SAndreas Gohr $feed .= " <link>".$this->link."</link>\n"; 37572dd708SAndreas Gohr if ($this->image != null) { 38572dd708SAndreas Gohr $feed .= " <image rdf:resource=\"".$this->image->url."\" />\n"; 39572dd708SAndreas Gohr } 40572dd708SAndreas Gohr $now = new FeedDate(); 41572dd708SAndreas Gohr $feed .= " <dc:date>".htmlspecialchars($now->iso8601())."</dc:date>\n"; 42572dd708SAndreas Gohr $feed .= " <items>\n"; 43572dd708SAndreas Gohr $feed .= " <rdf:Seq>\n"; 44572dd708SAndreas Gohr for ($i = 0; $i < count($this->items); $i++) { 45*64d8abdbSAndreas Gohr $feed .= " <rdf:li rdf:resource=\"".htmlspecialchars((string) $this->items[$i]->link)."\"/>\n"; 46572dd708SAndreas Gohr } 47572dd708SAndreas Gohr $feed .= " </rdf:Seq>\n"; 48572dd708SAndreas Gohr $feed .= " </items>\n"; 49572dd708SAndreas Gohr $feed .= " </channel>\n"; 50572dd708SAndreas Gohr if ($this->image != null) { 51572dd708SAndreas Gohr $feed .= " <image rdf:about=\"".$this->image->url."\">\n"; 52572dd708SAndreas Gohr $feed .= " <title>".$this->image->title."</title>\n"; 53572dd708SAndreas Gohr $feed .= " <link>".$this->image->link."</link>\n"; 54572dd708SAndreas Gohr $feed .= " <url>".$this->image->url."</url>\n"; 55572dd708SAndreas Gohr $feed .= " </image>\n"; 56572dd708SAndreas Gohr } 57572dd708SAndreas Gohr $feed .= $this->_createAdditionalElements($this->additionalElements, " "); 58572dd708SAndreas Gohr 59572dd708SAndreas Gohr for ($i = 0; $i < count($this->items); $i++) { 60*64d8abdbSAndreas Gohr $feed .= " <item rdf:about=\"".htmlspecialchars((string) $this->items[$i]->link)."\">\n"; 61572dd708SAndreas Gohr $feed .= " <dc:format>text/html</dc:format>\n"; 62572dd708SAndreas Gohr if ($this->items[$i]->date != null) { 63572dd708SAndreas Gohr $itemDate = new FeedDate($this->items[$i]->date); 64572dd708SAndreas Gohr $feed .= " <dc:date>".htmlspecialchars($itemDate->iso8601())."</dc:date>\n"; 65572dd708SAndreas Gohr } 66572dd708SAndreas Gohr if ($this->items[$i]->source != "") { 67572dd708SAndreas Gohr $feed .= " <dc:source>".htmlspecialchars($this->items[$i]->source)."</dc:source>\n"; 68572dd708SAndreas Gohr } 69572dd708SAndreas Gohr $creator = $this->getAuthor($this->items[$i]->author, $this->items[$i]->authorEmail); 70572dd708SAndreas Gohr if ($creator) { 71572dd708SAndreas Gohr $feed .= " <dc:creator>".htmlspecialchars($creator)."</dc:creator>\n"; 72572dd708SAndreas Gohr } 73572dd708SAndreas Gohr if ($this->items[$i]->lat != "") { 74572dd708SAndreas Gohr $feed .= " <georss:point>".$this->items[$i]->lat." ".$this->items[$i]->long."</georss:point>\n"; 75572dd708SAndreas Gohr } 76572dd708SAndreas Gohr if ($this->items[$i]->thumb != "") { 77572dd708SAndreas Gohr $feed .= " <photo:thumbnail>".htmlspecialchars($this->items[$i]->thumb)."</photo:thumbnail>\n"; 78572dd708SAndreas Gohr } 79572dd708SAndreas Gohr $feed .= " <title>".htmlspecialchars( 80*64d8abdbSAndreas Gohr strip_tags(strtr((string) $this->items[$i]->title, "\n\r", " ")) 81572dd708SAndreas Gohr )."</title>\n"; 82*64d8abdbSAndreas Gohr $feed .= " <link>".htmlspecialchars((string) $this->items[$i]->link)."</link>\n"; 83*64d8abdbSAndreas Gohr $feed .= " <description>".htmlspecialchars((string) $this->items[$i]->description)."</description>\n"; 84572dd708SAndreas Gohr $feed .= $this->_createAdditionalElements($this->items[$i]->additionalElements, " "); 85572dd708SAndreas Gohr $feed .= " </item>\n"; 86572dd708SAndreas Gohr } 87572dd708SAndreas Gohr $feed .= "</rdf:RDF>\n"; 88572dd708SAndreas Gohr 89572dd708SAndreas Gohr return $feed; 90572dd708SAndreas Gohr } 91572dd708SAndreas Gohr 92572dd708SAndreas Gohr /** 93572dd708SAndreas Gohr * Compose the RSS-1.0 author field. 94572dd708SAndreas Gohr * 95572dd708SAndreas Gohr * @author Joe Lapp <joe.lapp@pobox.com> 96572dd708SAndreas Gohr * @param string $author 97572dd708SAndreas Gohr * @param string $email 98572dd708SAndreas Gohr * @return string 99572dd708SAndreas Gohr */ 100572dd708SAndreas Gohr protected function getAuthor($author, $email) 101572dd708SAndreas Gohr { 102572dd708SAndreas Gohr if ($author) { 103572dd708SAndreas Gohr if ($email) { 104572dd708SAndreas Gohr return $author.' ('.$email.')'; 105572dd708SAndreas Gohr } 106572dd708SAndreas Gohr 107572dd708SAndreas Gohr return $author; 108572dd708SAndreas Gohr } 109572dd708SAndreas Gohr 110572dd708SAndreas Gohr return $email; 111572dd708SAndreas Gohr } 112572dd708SAndreas Gohr} 113