. require_once("../inc/util.inc"); require_once("../inc/news.inc"); require_once("../inc/notify.inc"); require_once("../inc/forum_rss.inc"); function notice_cmp($a, $b) { return $a->time < $b->time; } function notices_rss_start() { $t = gmdate('D, d M Y H:i:s', time())." GMT"; header("Expires: $t"); header("Last-Modified: $t"); header("Content-Type: application/xml"); echo " ".PROJECT." notices ".URL_BASE." Notices $t "; } function notices_rss_end() { echo " "; } $userid = get_int('userid'); $auth = get_str('auth'); $seqno = get_int('seqno', true); $user = BoincUser::lookup_id($userid); if (!$user) xml_error(); //if (notify_rss_auth($user) != $auth) xml_error(); $seqno_clause = $seqno?"and create_time > $seqno":""; $notifies = BoincNotify::enum("userid = $userid $seqno_clause"); $forum = news_forum(); if ($forum) { $threads = BoincThread::enum( "forum = $forum->id and hidden=0 $seqno_clause" ); } // there may be a better way to do this $items = array(); foreach ($notifies as $n) { $i = null; $i->type = 0; $i->time = $n->create_time; $i->val = $n; $items[] = $i; } foreach ($threads as $t) { $i = null; $i->type = 1; $i->time = $t->create_time; $i->val = $t; $items[] = $i; } usort($items, 'notice_cmp'); notices_rss_start(); foreach ($items as $item) { switch ($item->type) { case 0: show_notify_rss_item($item->val); break; case 1: show_forum_rss_item($item->val, 0, 1, 0); break; } } notices_rss_end(); ?>