isset($_GET['id']) && count($renderData['newsPosts']), 'currentPage' => 0 ]; // News XML feed if(isset($_GET['xml'])) { // Meta data attributes $metaData = [ 'title' => ($_FEED_TITLE = Configuration::getConfig('sitename')) .' News', 'link' => ($_FEED_URL = 'http://'. Configuration::getConfig('url_main')), 'description' => 'News about '. $_FEED_TITLE, 'language' => 'en-gb', 'webMaster' => (new User(1))->data['email'] .' ('. $_FEED_TITLE .' Webmaster)', 'pubDate' => ($_FEED_DATE = date('r', $renderData['newsPosts'][0]['date'])), 'lastBuildDate' => $_FEED_DATE ]; // Item attributes $itemData = [ 'title' => ['text' => '{EVAL}', 'eval' => '$newsPost["title"]'], 'link' => ['text' => $_FEED_URL .'/news/{EVAL}', 'eval' => '$newsPost["id"]'], 'guid' => ['text' => $_FEED_URL .'/news/{EVAL}', 'eval' => '$newsPost["id"]'], 'pubDate' => ['text' => '{EVAL}', 'eval' => 'date("D, d M Y G:i:s O", $newsPost["date"])'], 'dc:publisher' => ['text' => '{EVAL}', 'eval' => '$newsPost["udata"]["username"]'], 'description' => ['cdata' => '{EVAL}', 'eval' => '$newsPost["parsed"]'] ]; // Create a new DOM document $feed = new DOMDocument('1.0', 'utf-8'); // Create the RSS element $fRss = $feed->createElement('rss'); // Set attributes $fRss->setAttribute('version', '2.0'); $fRss->setAttribute('xmlns:atom', 'http://www.w3.org/2005/Atom'); $fRss->setAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1'); // Create the channel element $fChannel = $feed->createElement('channel'); // Build meta elements foreach($metaData as $name => $value) { // Create the elements $mElem = $feed->createElement($name); $mElemText = $feed->createTextNode($value); // Append them $mElem ->appendChild($mElemText); $fChannel ->appendChild($mElem); // Unset the working vars unset($mElem); unset($mElemText); } // Add all the posts foreach($renderData['newsPosts'] as $newsPost) { // Create item element $fPost = $feed->createElement('item'); // Create post attributes foreach($itemData as $tag => $valueData) { // Create the element $pElem = $feed->createElement($tag); // Create value eval('$value = '. $valueData['eval'] .';'); $value = str_replace('{EVAL}', $value, $valueData[(array_key_exists('cdata', $valueData) ? 'cdata' : 'text')]); // Create text node or cdata container $pElemText = (array_key_exists('cdata', $valueData)) ? $feed->createCDATASection($value) : $feed->createTextNode($value); // Append them $pElem ->appendChild($pElemText); $fPost ->appendChild($pElem); // Unset the working vars unset($pElem); unset($pElemText); unset($value); } // Append the item to the channel $fChannel->appendChild($fPost); } // Append the channel element to RSS $fRss->appendChild($fChannel); // Append the RSS element to the DOM $feed->appendChild($fRss); // Return the feed print $feed->saveXML(); exit; } // If we're not using the XML feed and we're not viewing a single post create pages if(!isset($_GET['id'])) { // Create the current page $renderData['newsPosts'] = array_chunk($renderData['newsPosts'], Configuration::getConfig('news_posts_per_page'), true); $renderData['page']['currentPage'] = isset($_GET['page']) && ($_GET['page'] - 1) >= 0 ? $_GET['page'] - 1 : 0; } // Print page contents print Templates::render('main/news.tpl', $renderData);