From ddc2d3fa3020759c9beeca19c3d255325aaaa260 Mon Sep 17 00:00:00 2001 From: Florent Bruneau Date: Sun, 27 Feb 2011 20:29:07 +0100 Subject: [PATCH] Add a RSS handler for site_errors. Signed-off-by: Florent Bruneau --- classes/plerrorreport.php | 40 ++++++++++++++++++++++++++++++++++++++++ modules/core.php | 11 ++++++++++- 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/classes/plerrorreport.php b/classes/plerrorreport.php index 50afe41..cf32c63 100644 --- a/classes/plerrorreport.php +++ b/classes/plerrorreport.php @@ -62,6 +62,12 @@ class PlErrorReport return new PlErrorReportIterator(); } + public static function feed(PlPage $page, PlUser $user) + { + $feed = new PlErrorReportFeed(); + return $feed->run($page, $user); + } + public static function clear() { @unlink(Platal::globals()->spoolroot . '/spool/tmp/site_errors'); @@ -113,5 +119,39 @@ class PlErrorReportIterator implements PlIterator } } +class PlErrorReportFeed extends PlFeed +{ + public function __construct() + { + global $globals; + parent::__construct($globals->core->sitename . ' :: News', + $globals->baseurl . '/site_errors', + 'Erreurs d\'exécution', + $globals->baseurl . '/images/logo.png', + $globals->spoolroot . '/core/templates/site_errors.feed.tpl'); + } + + protected function fetch(PlUser $user) + { + global $globals; + $it = PlErrorReport::iterate(); + $data = array(); + while ($row = $it->next()) { + $title = explode("\n", $row->error); + $title = $title[0]; + $line = array(); + $line['id'] = $row->date + count($data); + $line['author'] = 'admin'; + $line['link'] = $globals->baseurl . '/site_errors'; + $line['data'] = $row; + $line['title'] = $title; + $line['last_modification'] = $row->date; + $line['publication'] = $row->date; + $data[] = $line; + } + return PlIteratorUtils::fromArray($data, 1, true); + } +} + // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: ?> diff --git a/modules/core.php b/modules/core.php index 9f268a9..97eb6a6 100644 --- a/modules/core.php +++ b/modules/core.php @@ -34,6 +34,7 @@ class CoreModule extends PLModule 'sql_errors' => $this->make_hook('siteerror', AUTH_COOKIE, 'admin'), 'assert_errors' => $this->make_hook('siteerror', AUTH_COOKIE, 'admin'), 'site_errors' => $this->make_hook('siteerror', AUTH_COOKIE, 'admin'), + 'site_errors/rss' => $this->make_token_hook('siteerror_rss', AUTH_COOKIE, 'admin'), 'embedded' => $this->make_hook('embedded', AUTH_PUBLIC), @@ -207,9 +208,12 @@ class CoreModule extends PLModule exit; } - function handler_siteerror($page) { + function handler_siteerror($page) + { global $globals; $page->coreTpl('site_errors.tpl'); + $page->setRssLink('Polytechnique.org :: Erreurs', + 'site_errors/rss/' . S::v('hruid') . '/' . S::user()->token . '/rss.xml'); if (Post::has('clear')) { PlErrorReport::clear(); $page->trigSuccess("Erreurs effacées."); @@ -217,6 +221,11 @@ class CoreModule extends PLModule $page->assign('errors', PlErrorReport::iterate()); } + function handler_siteerror_rss(PlPage $page, PlUser $user) + { + return PlErrorReport::feed($page, $user); + } + function handler_embedded($page) { global $platal, $globals; -- 2.1.4