From: Florent Bruneau Date: Sun, 27 Feb 2011 19:29:07 +0000 (+0100) Subject: Add a RSS handler for site_errors. X-Git-Tag: core/1.1.3~9 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=ddc2d3fa3020759c9beeca19c3d255325aaaa260;p=platal.git Add a RSS handler for site_errors. Signed-off-by: Florent Bruneau --- 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;