3 * http://fusionforge.org/
5 * This file is part of FusionForge. FusionForge is free software;
6 * you can redistribute it and/or modify it under the terms of the
7 * GNU General Public License as published by the Free Software
8 * Foundation; either version 2 of the Licence, or (at your option)
11 * FusionForge is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License along
17 * with FusionForge; if not, write to the Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22 require_once '../env.inc.php';
23 require_once $gfcommon.'include/pre.php';
24 require_once $gfwww.'export/rss_utils.inc';
30 $max_number_items = 100;
40 //group and project and user, or group or project or user?
41 //take care: status means AND to all (user or group, but AND status)
42 if (isset($_GET['OR']))
47 $user_arr=handle_getvar('user_ids');
48 if(isset($user_arr[0]))
50 foreach($user_arr AS $single_user_id)
52 $user.=" OR (a.assigned_to_id = '".$single_user_id."')";
54 $user='('.substr($user,4).')';
58 $groups = handle_getvar('group_ids');
59 if(isset($groups[0])) //die projekte der gruppen werden in $projects gespeichert
61 foreach($groups AS $group)
63 $sql="SELECT group_project_id FROM project_group_list WHERE group_id='".$group."'";
65 while($row=db_fetch_array($res))
67 $projects[]=$row['group_project_id'];
71 $p=handle_getvar('group_project_ids');
72 $projects = array_unique(array_merge($projects,$p)); //die projekte der getvars kommen dazu
74 if(isset($projects[0]))
76 foreach($projects AS $project)
78 $project_sq.=" OR (group_project_id = '".$project."')";
79 /*$sql="SELECT project_name,group_id FROM project_group_list WHERE group_project_id='".$project."'";
81 if(pg_num_rows($res)==0)
83 $project_c[$project]['project_name']='Wrong or deleted project';
84 $project_c[$project]['group_id']='0';
87 $project_c[$project]=db_fetch_array($res);
89 if(!isset($group_c[$project_c[$project]['group_id']]))
91 $sql="SELECT group_name FROM groups WHERE group_id='".$project_c[$project]['group_id']."'";
93 if(pg_num_rows($res2)==0)
95 $group_c[$project_c[$project]['group_id']]='Wrong or deleted group';
98 $a=db_fetch_array($res2);
99 $group_c[$project_c[$project]['group_id']]=$a['group_name'];
104 $project_sq='('.substr($project_sq,4).')';
107 foreach(handle_getvar('status_ids') AS $status_id)
109 $status.=" OR (status_id = '".$status_id."')";
113 $status='('.substr($status,4).')';
116 //important for correct sql-syntax
119 $status=' AND '.$status;
121 if(!empty($project_sq) OR !empty($user) OR !empty($status))
125 if(!empty($project_sq) AND !empty($user))
130 //calculates number of shown
131 if (isset($_GET['number']) AND ctype_digit($_GET['number']))
133 if($_GET['number']<=$max_number AND $_GET['number']>0)
135 $number=$_GET['number'];
136 } elseif($_GET['number']>$max_number)
142 //creating, sending, and using the query
146 pt.*,u.realname AS user_realname
148 project_task pt,users u,project_assigned_to a
150 ".is_needed('(').$project_sq." ".$btwp."
152 ".$status.is_needed(')')."
153 ".$us."u.user_id=pt.created_by
154 AND pt.project_task_id=a.project_task_id
162 beginTaskFeed('evolvis: Current Tasks',forge_get_config('web_host'),'See all the tasks you want to see!');
163 if(0<pg_num_rows($res))
165 while($i<pg_num_rows($res))
167 $sql1="SELECT group_id,project_name FROM project_group_list WHERE group_project_id='".pg_fetch_result($res,$i,'group_project_id')."'";
168 $res1=pg_query($sql1);
169 if(pg_num_rows($res1)==1)
171 $row1=db_fetch_array($res1);
172 $project_c[pg_fetch_result($res,$i,'group_project_id')]['group_id']=$row1['group_id'];
173 if(isset($row1['project_name']))
175 $project_c[pg_fetch_result($res,$i,'group_project_id')]['project_name']=$row1['project_name'];
178 $project_c[pg_fetch_result($res,$i,'group_project_id')]['project_name']='Wrong or deleted project';
180 $sql2="SELECT group_name FROM groups WHERE group_id='".$row1['group_id']."'";
181 $res2=pg_query($sql2);
182 $row2=db_fetch_array($res2);
183 if(isset($row2['group_name']))
185 $group_c[$row1['group_id']]=$row2['group_name'];
188 $group_c[$row1['group_id']]='Wrong or deleted group';
193 $item_cat = $group_c[$project_c[pg_fetch_result($res,$i,'group_project_id')]['group_id']]." - ".$project_c[pg_fetch_result($res,$i,'group_project_id')]['project_name']." -- ".pg_fetch_result($res,$i,'summary');
194 $ar['project_task_id']=pg_fetch_result($res,$i,'project_task_id');
195 $ar['group_project_id']=pg_fetch_result($res,$i,'group_project_id');
196 $ar['group_id']=$project_c[pg_fetch_result($res,$i,'group_project_id')]['group_id'];
197 $ar['most_recent_date']=pg_fetch_result($res,$i,'last_modified_date');
198 $ar['subject']=pg_fetch_result($res,$i,'summary');
199 $ar['user_realname']=pg_fetch_result($res,$i,'user_realname');
200 $ar['details']=pg_fetch_result($res,$i,'details');
201 writeTaskFeed($ar,$item_cat);
207 displayError('No tasks found! Please check for invalid params.');
214 //*********************** HELPER FUNCTIONS ***************************************
216 function is_needed($str)
218 global $project_sq,$user,$status;
219 if(!empty($project_sq) OR !empty($user) OR !empty($status))
227 function handle_getvar($name)
230 if(isset($_GET[$name]))
232 $vars = array_unique(explode(" ",$_GET[$name]));
233 foreach ($vars as $var)
235 if(ctype_digit($var))
245 function beginTaskFeed($feed_title, $feed_link, $feed_desc) {
247 header("Content-Type: text/xml");
248 print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
249 print "<rss version=\"2.0\">\n";
250 print " <channel>\n";
251 print " <title>".$feed_title."</title>\n";
252 print " <link>".$feed_link."</link>\n";
253 print " <description>".$feed_desc."</description>\n";
254 print " <language>en-us</language>\n";
255 print " <copyright>Copyright 2000-".date("Y")." ".forge_get_config('forge_name')."</copyright>\n";
256 print " <webMaster>".forge_get_config('admin_email')."</webMaster>\n";
257 print " <lastBuildDate>".gmdate('D, d M Y G:i:s',time())." GMT</lastBuildDate>\n";
258 print " <docs>http://blogs.law.harvard.edu/tech/rss</docs>\n";
260 print " <url>http://".forge_get_config('web_host')."/images/bflogo-88.png</url>\n";
261 print " <title>".forge_get_config('forge_name')." Developer</title>\n";
262 print " <link>http://".forge_get_config('web_host')."/</link>\n";
263 print " <width>124</width>\n";
264 print " <heigth>32</heigth>\n";
268 function writeTaskFeed($msg, $item_cat){
269 global $show_threads;
271 //------------ build one feed item ------------
273 print " <title>".$msg['subject']."</title>\n";
274 print " <link>" . util_make_url("/pm/t_follow.php/" . $msg['project_task_id']) . "</link>\n";
275 print " <category>".$item_cat."</category>\n";
276 print " <description>".$msg['details']."</description>\n";
277 print " <author>".$msg['user_realname']."</author>\n";
278 //print " <comment></comment>\n";
279 print " <pubDate>".gmdate('D, d M Y G:i:s',$msg['most_recent_date'])." GMT</pubDate>\n";
280 print " <guid>" . util_make_url("/pm/t_lookup.php?tid=" . $msg['project_task_id']) . "</guid>\n";
286 function displayError($errorMessage) {
287 print " <title>Error</title>\n".
288 " <description>".$errorMessage."</description>";
292 print "\n </channel>\n</rss>";
296 function endOnError($errorMessage) {
297 displayError($errorMessage);