<?php class pluginRSS extends Plugin { private function createXML() { global $Site; global $dbPages; global $dbPosts; global $Url; $xml = '<?xml version="1.0" encoding="UTF-8" ?>'; $xml .= '<rss version="2.0">'; $xml .= '<channel>'; $xml .= '<title>'.$Site->title().'</title>'; $xml .= '<link>'.$Site->url().'</link>'; $xml .= '<description>'.$Site->description().'</description>'; $posts = buildPostsForPage(0, 10, true); foreach($posts as $Post) { $xml .= '<item>'; $xml .= '<title>'.$Post->title().'</title>'; $xml .= '<link>'.$Post->permalink(true).'</link>'; $xml .= '<description>'.$Post->description().'</description>'; $xml .= '</item>'; } $xml .= '</channel></rss>'; // New DOM document $doc = new DOMDocument(); // Friendly XML code $doc->formatOutput = true; $doc->loadXML($xml); $doc->save(PATH_PLUGINS_DATABASES.$this->directoryName.DS.'rss.xml'); } public function install($position = 0) { parent::install($position); $this->createXML(); } public function afterPostCreate() { $this->createXML(); } public function afterPageCreate() { $this->createXML(); } public function afterPostModify() { $this->createXML(); } public function afterPageModify() { $this->createXML(); } public function afterPostDelete() { $this->createXML(); } public function afterPageDelete() { $this->createXML(); } public function siteHead() { $html = '<link rel="alternate" type="application/rss+xml" href="'.DOMAIN_BASE.'rss.xml" title="RSS Feed">'.PHP_EOL; return $html; } public function beforeRulesLoad() { global $Url; if( $Url->uri() === HTML_PATH_ROOT.'rss.xml' ) { // Send XML header header('Content-type: text/xml'); // New DOM document $doc = new DOMDocument(); // Load XML libxml_disable_entity_loader(false); $doc->load(PATH_PLUGINS_DATABASES.$this->directoryName.DS.'rss.xml'); libxml_disable_entity_loader(true); // Print the XML echo $doc->saveXML(); // Stop Bludit running exit; } } }