Add a guard against overlapping transactions.
[platal.git] / classes / plfeed.php
index cd2d469..d54199a 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2008 Polytechnique.org                              *
+ *  Copyright (C) 2003-2010 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -69,7 +69,7 @@ abstract class PlFeed implements PlIterator
 
     /** Fetch the feed for the given user.
      */
-    abstract protected function fetch($user);
+    abstract protected function fetch(PlUser &$user);
 
     public function next()
     {
@@ -100,14 +100,14 @@ abstract class PlFeed implements PlIterator
         $user = Platal::session()->tokenAuth($login, $token);
         if (empty($user)) {
             if ($require_auth) {
-                $page->kill("Authentication required");
+                return PL_FORBIDDEN;
             } else {
                 $user = null;
             }
         }
 
         $page->assign('rss_hash', $token);
-        header('Content-Type: application/rss+xml; charset=utf8');
+        pl_content_headers("application/rss+xml");
         $this->iterator = $this->fetch($user);
         $page->coreTpl('feed.' . $type . '.tpl', NO_SKIN);
         $page->assign_by_ref('feed', $this);