Add a RSS handler for site_errors.
authorFlorent Bruneau <florent.bruneau@polytechnique.org>
Sun, 27 Feb 2011 19:29:07 +0000 (20:29 +0100)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Sun, 27 Feb 2011 19:30:07 +0000 (20:30 +0100)
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
classes/plerrorreport.php
modules/core.php

index 50afe41..cf32c63 100644 (file)
@@ -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:
 ?>
index 9f268a9..97eb6a6 100644 (file)
@@ -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;