Browse Source

Controllers: Add RSS feed from the blog posts

master
Riyyi 2 years ago
parent
commit
91de0f1462
  1. 41
      app/controllers/BlogController.php
  2. 3
      route.php

41
app/controllers/BlogController.php

@ -2,11 +2,12 @@
namespace App\Controllers; namespace App\Controllers;
use App\Classes\Config;
use App\Model\BlogModel; use App\Model\BlogModel;
class BlogController extends PageController { class BlogController extends PageController {
public function indexAction(): void public function searchAction(): void
{ {
$archived = $this->router->request()->param('archived', 0); $archived = $this->router->request()->param('archived', 0);
$search = $this->router->request()->param('search', ''); $search = $this->router->request()->param('search', '');
@ -23,7 +24,43 @@ class BlogController extends PageController {
$this->router->service()->posts = $posts; $this->router->service()->posts = $posts;
$this->router->service()->search = $search; $this->router->service()->search = $search;
$this->router->service()->injectView = $this->views . '/partials/blog-posts.php'; $this->router->service()->injectView = $this->views . '/partials/blog-posts.php';
parent::view('blog', 'Hello'); parent::view('blog', 'Blog');
}
public function rssAction(): void
{
date_default_timezone_set('Europe/Amsterdam');
$xml = new \SimpleXMLElement('<rss version="2.0"/>');
$channel = $xml->addChild('channel');
$channel->addChild('title', 'Rick&apos;s Webpage');
$channel->addChild('link', Config::c('APP_URL'));
$channel->addChild('description', 'Recent content on Rick&apos;s Webpage.');
$channel->addChild('language', 'en-us');
$channel->addChild('lastBuildDate', date('D, d M Y H:i:s O'));
// Fetch all non-archived blog posts
$search = $this->router->request()->param('search', '');
$posts = $this->search($search, 0);
foreach ($posts as $post) {
$link = Config::c('APP_URL') . '/' . $post['section'] . '/' . $post['page'];
$date = (new \DateTime($post['created_at']))->format('D, d M Y H:i:s O');
$item = $channel->addChild('item');
$item->addChild('title', $post['title']);
$item->addChild('link', $link);
$item->addChild('description', $post['content']);
$item->addChild('pubDate', $date);
$item->addChild('guid', $link);
}
header('content-type: text/xml; charset=UTF-8');
$dom = new \DOMDocument("1.0");
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml->asXML());
print $dom->saveXML();
} }
//-------------------------------------// //-------------------------------------//

3
route.php

@ -17,7 +17,8 @@ return [
['/img/captcha.jpg', 'IndexController', 'captcha'], ['/img/captcha.jpg', 'IndexController', 'captcha'],
['/robots.txt', 'IndexController', 'robots'], ['/robots.txt', 'IndexController', 'robots'],
['/sitemap.xml', 'IndexController', 'sitemap'], ['/sitemap.xml', 'IndexController', 'sitemap'],
['/blog', 'BlogController'], ['/blog', 'BlogController', 'search'],
['/blog.xml', 'BlogController', 'rss'],
['/login', 'LoginController', 'login', ['', 'Sign in', '']], ['/login', 'LoginController', 'login', ['', 'Sign in', '']],
['/reset-password', 'LoginController', 'reset', ['', 'Reset password', '']], ['/reset-password', 'LoginController', 'reset', ['', 'Reset password', '']],
['/logout', 'LoginController', 'logout'], ['/logout', 'LoginController', 'logout'],

Loading…
Cancel
Save