dbFields = array( 'numberOfItems'=>5 ); } // Method called on the settings of the plugin on the admin area public function form() { global $L; $html = ''; $html .= '
'; $html .= ''; $html .= ''.Theme::rssUrl().''; $html .= '
'; $html .= '
'; $html .= ''; $html .= ''; $html .= ''.$L->get('Amount of items to show on the feed').''; $html .= '
'; return $html; } private function urlRSS($url) { return preg_replace_callback('/[^\x20-\x7f]/', function($match) { return urlencode($match[0]); }, $url); } private function createXML() { global $site; global $pages; global $url; // Amount of pages to show $numberOfItems = $this->getValue('numberOfItems'); // Get the list of public pages (sticky and static included) $list = $pages->getList( $pageNumber=1, $numberOfItems, $published=true, $static=true, $sticky=true, $draft=false, $scheduled=false ); $xml = ''; $xml .= ''; $xml .= ''; $xml .= ''; $xml .= ''.$site->title().''; $xml .= ''.$this->urlRSS($site->url()).''; $xml .= ''.$site->description().''; $xml .= ''.date(DATE_RSS).''; // Get keys of pages foreach ($list as $pageKey) { try { // Create the page object from the page key $page = new Page($pageKey); $xml .= ''; $xml .= ''.$page->title().''; $xml .= ''.$this->urlRSS($page->permalink()).''; $xml .= ''.Sanitize::html($page->contentBreak()).''; $xml .= ''.date('r',strtotime($page->getValue('dateRaw'))).''; $xml .= ''.$page->uuid().''; $xml .= ''; } catch (Exception $e) { // Continue } } $xml .= ''; // New DOM document $doc = new DOMDocument(); $doc->formatOutput = true; $doc->loadXML($xml); return $doc->save($this->workspace().'rss.xml'); } public function install($position=0) { parent::install($position); return $this->createXML(); } public function post() { parent::post(); return $this->createXML(); } public function afterPageCreate() { $this->createXML(); } public function afterPageModify() { $this->createXML(); } public function afterPageDelete() { $this->createXML(); } public function siteHead() { return ''.PHP_EOL; } public function beforeAll() { $webhook = 'rss.xml'; if ($this->webhook($webhook)) { // Send XML header header('Content-type: text/xml'); $doc = new DOMDocument(); // Load XML libxml_disable_entity_loader(false); $doc->load($this->workspace().'rss.xml'); libxml_disable_entity_loader(true); // Print the XML echo $doc->saveXML(); // Stop Bludit execution exit(0); } } }