4 * Copyright 2006 Daniel A. Perez <daniel@gforgegroup.com>
5 * Copyright (C) 2012 Alain Peyrat - Alcatel-Lucent
6 * http://fusionforge.org/
8 * This file is part of FusionForge. FusionForge is free software;
9 * you can redistribute it and/or modify it under the terms of the
10 * GNU General Public License as published by the Free Software
11 * Foundation; either version 2 of the Licence, or (at your option)
14 * FusionForge is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
19 * You should have received a copy of the GNU General Public License along
20 * with FusionForge; if not, write to the Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24 require_once '../env.inc.php';
25 require_once $gfcommon.'include/pre.php';
26 require_once $gfwww.'export/rss_utils.inc';
28 $group_id = getIntFromRequest('group_id');
29 $limit = getIntFromRequest('limit', 10);
31 if ($limit > 100) $limit = 100;
33 $url = util_make_url ('/');
34 $url = rtrim($url, '/');
37 session_require_perm('project_read', $group_id);
39 $res = db_query_params ('SELECT group_name FROM groups WHERE group_id=$1',
42 $row = db_fetch_array($res);
43 $title = $row['group_name']." - ";
44 $link = "?group_id=$group_id";
45 $description = " of ".$row['group_name'];
47 $admins = RBACEngine::getInstance()->getUsersByAllowedAction ('project_admin', $group_id) ;
48 if (count ($admins)) {
49 $webmaster = $admins[0]->getUnixName()."@".forge_get_config('users_host')." (".$admins[0]->getRealName().")";
51 $webmaster = forge_get_config('admin_email');
55 header("Content-Type: text/xml; charset=utf-8");
56 print '<?xml version="1.0" encoding="UTF-8"?>
60 print " <title>".forge_get_config ('forge_name')." $title Activity</title>\n";
61 print " <link>".util_make_url("/activity/$link")."</link>\n";
62 print " <description>".forge_get_config ('forge_name')." Project Activity$description</description>\n";
63 print " <language>en-us</language>\n";
64 print " <copyright>Copyright ".date("Y")." ".forge_get_config ('forge_name')."</copyright>\n";
65 print " <webMaster>$webmaster</webMaster>\n";
66 print " <lastBuildDate>".rss_date(time())."</lastBuildDate>\n";
67 print " <docs>http://blogs.law.harvard.edu/tech/rss</docs>\n";
68 print " <generator>".forge_get_config ('forge_name')." RSS generator</generator>\n";
70 $res = db_query_params('SELECT * FROM activity_vw WHERE activity_date BETWEEN $1 AND $2
71 AND group_id=$3 ORDER BY activity_date DESC',
72 array(time() - 30*86400,
77 while ($arr = db_fetch_array($res)) {
81 // If plugins wants to add activities.
86 $hookParams['group'] = $group_id ;
87 $hookParams['results'] = &$results;
88 $hookParams['show'] = &$show;
89 $hookParams['begin'] = time()-(30*86400);
90 $hookParams['end'] = time();
91 $hookParams['ids'] = &$ids;
92 $hookParams['texts'] = &$texts;
93 plugin_hook ("activity", $hookParams) ;
95 usort($results, 'date_compare');
98 foreach ($results as $arr) {
100 switch ($arr['section']) {
102 if (!forge_check_perm('tracker',$arr['ref_id'],'read')) {
106 print " <title>".htmlspecialchars('Commit for Tracker Item [#'.$arr['subref_id'].'] '.$arr['description'])."</title>\n";
107 print " <link>$url/tracker/?func=detail&atid=".$arr['ref_id'].'&aid='.$arr['subref_id'].'&group_id='.$arr['group_id']."</link>\n";
108 print " <comments>$url/tracker/?func=detail&atid=".$arr['ref_id'].'&aid='.$arr['subref_id'].'&group_id='.$arr['group_id']."</comments>\n";
111 case 'trackeropen': {
112 if (!forge_check_perm('tracker',$arr['ref_id'],'read')) {
116 print " <title>".htmlspecialchars('Tracker Item [#'.$arr['subref_id'].' '.$arr['description'].'] Opened')."</title>\n";
117 print " <link>$url/tracker/?func=detail&atid=".$arr['ref_id'].'&aid='.$arr['subref_id'].'&group_id='.$arr['group_id']."</link>\n";
118 print " <comments>$url/tracker/?func=detail&atid=".$arr['ref_id'].'&aid='.$arr['subref_id'].'&group_id='.$arr['group_id']."</comments>\n";
121 case 'trackerclose': {
122 if (!forge_check_perm('tracker',$arr['ref_id'],'read')) {
126 print " <title>".htmlspecialchars('Tracker Item [#'.$arr['subref_id'].' '.$arr['description'].'] Closed')."</title>\n";
127 print " <link>$url/tracker/?func=detail&atid=".$arr['ref_id'].'&aid='.$arr['subref_id'].'&group_id='.$arr['group_id']."</link>\n";
128 print " <comments>$url/tracker/?func=detail&atid=".$arr['ref_id'].'&aid='.$arr['subref_id'].'&group_id='.$arr['group_id']."</comments>\n";
132 if (!forge_check_perm('frs',$arr['group_id'],'read_public')) {
136 print " <title>".htmlspecialchars('FRS Release [#'.$arr['description'].']')."</title>\n";
137 print " <link>$url/frs/?release_id=".$arr['subref_id'].'&group_id='.$arr['group_id']."</link>\n";
138 print " <comments>$url/frs/?release_id=".$arr['subref_id'].'&group_id='.$arr['group_id']."</comments>\n";
142 if (!forge_check_perm('forum',$arr['ref_id'],'read')) {
146 print " <title>".htmlspecialchars('Forum Post [#'.$arr['subref_id'].'] '.$arr['description'])."</title>\n";
147 print " <link>$url/forum/message.php?forum_id=".$arr['ref_id'].'&msg_id='.$arr['subref_id'].'&group_id='.$arr['group_id']."</link>\n";
148 print " <comments>$url/forum/message.php?forum_id=".$arr['ref_id'].'&msg_id='.$arr['subref_id'].'&group_id='.$arr['group_id']."</comments>\n";
152 if (!forge_check_perm('forum',$arr['subref_id'],'read')) {
156 print " <title>".htmlspecialchars('News Post [#'.$arr['subref_id'].'] '.$arr['description'])."</title>\n";
157 print " <link>$url/forum/forum.php?forum_id=".$arr['subref_id']."</link>\n";
158 print " <comments>$url/forum/forum.php?forum_id=".$arr['subref_id']."</comments>\n";
163 print " <title>".htmlspecialchars($arr['title'])."</title>\n";
164 print " <link>".$url.$arr['link']."</link>\n";
165 print " <comment>".$url.$arr['link']."</comment>\n";
169 print " <description>".rss_description($arr['description'])."</description>\n";
170 if (isset($arr['user_name']) && $arr['user_name']) {
171 print " <author>".$arr['user_name']."@".forge_get_config('users_host')." (".$arr['realname'].")</author>\n";
173 print " <author>".$arr['realname']."</author>\n";
175 print " <pubDate>".rss_date($arr['activity_date'])."</pubDate>\n";
179 print " </channel>\n";
183 // Print error showing no group was selected
185 echo "<br /><span class=\"error\"> Error: No group selected</span>";
188 function date_compare($a, $b)
190 if ($a['activity_date'] == $b['activity_date']) {
193 return ($a['activity_date'] > $b['activity_date']) ? -1 : 1;