<?php
Interface IFeed {
public function __construct();
public function getFeed();
public function render();
}
class Feed implements IFeed{
protected $feed;
public function __construct(){}
public function getFeed(){
return $this->feed;
}
public function render(){
include("QXml.class.php");
header("content-type:text/xml");
$xml = new QXML;
$xml->noCDATA();
$xml->toXML($this->getFeed());
echo $xml->asXML();
}
}
class AtomFeed extends Feed {
public function __construct(){
$this->feed["feed"]["@attributes"]["xmlns"] = "http://www.w3.org/2005/Atom";
}
public function setAuthor($name=null){
$this->feed["feed"]["author"]["name"] = $name;
}
public function setId($id=null){
$this->feed["feed"]["id"]["@textNode"] = $id;
}
public function setEntry($title, $link, $summary, $content, $updated=null){
$this->feed["feed"]["entry"][] = array(
"title" => array("@textNode" => $title),
"link" => array("@attributes"=>$link),
"summary" => array("@textNode" => $summary),
"updated" => array("@textNode" => ($updated?$updated:date("Y-m-d H:M:S"))),
"content" => array("@textNode" => $content),
);
}
}
class RSSFeed extends Feed {
public function __construct(){
$this->feed["rss"]["@attributes"]["version"] = "2.0";
$this->feed["rss"]["channel"]["pubDate"]["@textNode"] = date("Y-m-d H:M:S");
}
public function setLink($title = "RSS", $href = "http://www.example.net/feed.rss", $rel = "alternate", $type = "application/rss+xml"){
$this->feed["rss"]["link"]["@attributes"] = array("rel" => $rel, "type" => $type, "title" => $title, "href" => $href);
}
public function setChannel($title,$link,$description,$lang,$date,$img){
$this->feed["rss"]["channel"]["title"]["@textNode"] = $title;
$this->feed["rss"]["channel"]["link"]["@textNode"] = $link;
$this->feed["rss"]["channel"]["description"]["@textNode"] = $description;
$this->feed["rss"]["channel"]["language"]["@textNode"] = $lang;
$this->feed["rss"]["channel"]["pubDate"]["@textNode"] = $date;
$this->feed["rss"]["channel"]["image"]["@textNode"] = $image;
}
protected function setChannelData($name, $data){
$this->feed["rss"]["channel"][$name]["@textNode"] = $data;
}
public function setChannelTitle($data){
$this->setChannelData("title", $data);
}
public function setChannelDescription($data){
$this->setChannelData("description", $data);
}
public function setChannelLanguage($data){
$this->setChannelData("language", $data);
}
public function setChannelPubDate($data){
$this->setChannelData("pubDate", $data);
}
public function setChannelImage($data){
$this->setChannelData("image", $data);
}
public function setItem($title,$link,$description,$author,$guid){
$intItem = count($this->feed["rss"]["channel"]["item"]);
$this->feed["rss"]["channel"]["item"][$intItem]["title"]["@textNode"] = $title;
$this->feed["rss"]["channel"]["item"][$intItem]["link"]["@textNode"] = $link;
$this->feed["rss"]["channel"]["item"][$intItem]["description"]["@textNode"] = $description;
$this->feed["rss"]["channel"]["item"][$intItem]["author"]["@textNode"] = $author;
$this->feed["rss"]["channel"]["item"][$intItem]["guid"]["@textNode"] = $guid;
}
}
/*
$feeds = new AtomFeed;
$feeds->setAuthor("Thomas Schäfer");
$feeds->setId("urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6");
$feeds->setEntry("Welt Online","http://www.welt.de","Zeitung","adasdasd");
$feeds->setEntry("Spiegel Online","http://www.spiegel.de","Zeitung","adasdasd");
*/
$feeds = new RSSFeed();
$feeds->setLink();
$feeds->setChannelTitle("Test");
$feeds->setChannelDescription("Test Feed");
$feeds->setChannelLanguage("de");
$feeds->setItem("Lorem lipsum","","Lorem Ipsum is simply dummy text of the printing and typesetting industry.","Thomas Schaefer", md5(rand()));
$feeds->setItem("Lorem lipsum2","","Lorem Ipsum is simply dummy text of the printing and typesetting industry.","Thomas Schaefer", md5(rand()));
$feeds->setItem("Lorem lipsum3","","Lorem Ipsum is simply dummy text of the printing and typesetting industry.","Thomas Schaefer", md5(rand()));
$feeds->render();
?>
|