3 * http://fusionforge.org/
5 * This file is part of FusionForge.
7 * FusionForge is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * FusionForge is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with FusionForge; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 require_once '../env.inc.php';
24 require_once $gfcommon.'include/pre.php';
25 require_once $gfwww.'export/rss_utils.inc';
31 $max_number_items = 100;
41 //group and project and user, or group or project or user?
42 //take care: status means AND to all (user or group, but AND status)
43 if (isset($_GET['OR']))
48 $user_arr=handle_getvar('user_ids');
49 if(isset($user_arr[0]))
51 foreach($user_arr AS $single_user_id)
53 $user.=" OR (a.assigned_to_id = '".$single_user_id."')";
55 $user='('.substr($user,4).')';
59 $groups = handle_getvar('group_ids');
60 if(isset($groups[0])) //die projekte der gruppen werden in $projects gespeichert
62 foreach($groups AS $group)
64 $sql="SELECT group_project_id FROM project_group_list WHERE group_id='".$group."'";
66 while($row=db_fetch_array($res))
68 $projects[]=$row['group_project_id'];
72 $p=handle_getvar('group_project_ids');
73 $projects = array_unique(array_merge($projects,$p)); //die projekte der getvars kommen dazu
75 if(isset($projects[0]))
77 foreach($projects AS $project)
79 $project_sq.=" OR (group_project_id = '".$project."')";
80 /*$sql="SELECT project_name,group_id FROM project_group_list WHERE group_project_id='".$project."'";
82 if(pg_num_rows($res)==0)
84 $project_c[$project]['project_name']='Wrong or deleted project';
85 $project_c[$project]['group_id']='0';
88 $project_c[$project]=db_fetch_array($res);
90 if(!isset($group_c[$project_c[$project]['group_id']]))
92 $sql="SELECT group_name FROM groups WHERE group_id='".$project_c[$project]['group_id']."'";
94 if(pg_num_rows($res2)==0)
96 $group_c[$project_c[$project]['group_id']]='Wrong or deleted group';
99 $a=db_fetch_array($res2);
100 $group_c[$project_c[$project]['group_id']]=$a['group_name'];
105 $project_sq='('.substr($project_sq,4).')';
108 foreach(handle_getvar('status_ids') AS $status_id)
110 $status.=" OR (status_id = '".$status_id."')";
114 $status='('.substr($status,4).')';
117 //important for correct sql-syntax
120 $status=' AND '.$status;
122 if(!empty($project_sq) OR !empty($user) OR !empty($status))
126 if(!empty($project_sq) AND !empty($user))
131 //calculates number of shown
132 if (isset($_GET['number']) AND ctype_digit($_GET['number']))
134 if($_GET['number']<=$max_number AND $_GET['number']>0)
136 $number=$_GET['number'];
137 } elseif($_GET['number']>$max_number)
143 //creating, sending, and using the query
147 pt.*,u.realname AS user_realname
149 project_task pt,users u,project_assigned_to a
151 ".is_needed('(').$project_sq." ".$btwp."
153 ".$status.is_needed(')')."
154 ".$us."u.user_id=pt.created_by
155 AND pt.project_task_id=a.project_task_id
163 beginTaskFeed('evolvis: Current Tasks',forge_get_config('web_host'),'See all the tasks you want to see!');
164 if(0<pg_num_rows($res))
166 while($i<pg_num_rows($res))
168 $sql1="SELECT group_id,project_name FROM project_group_list WHERE group_project_id='".pg_fetch_result($res,$i,'group_project_id')."'";// AND is_public";
169 $res1=pg_query($sql1);
170 if(pg_num_rows($res1)==1)
172 $row1=db_fetch_array($res1);
173 $project_c[pg_fetch_result($res,$i,'group_project_id')]['group_id']=$row1['group_id'];
174 if(isset($row1['project_name']))
176 $project_c[pg_fetch_result($res,$i,'group_project_id')]['project_name']=$row1['project_name'];
179 $project_c[pg_fetch_result($res,$i,'group_project_id')]['project_name']='Wrong or deleted project';
181 $sql2="SELECT group_name FROM groups WHERE group_id='".$row1['group_id']."'";
182 $res2=pg_query($sql2);
183 $row2=db_fetch_array($res2);
184 if(isset($row2['group_name']))
186 $group_c[$row1['group_id']]=$row2['group_name'];
189 $group_c[$row1['group_id']]='Wrong or deleted group';
194 $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');
195 $ar['project_task_id']=pg_fetch_result($res,$i,'project_task_id');
196 $ar['group_project_id']=pg_fetch_result($res,$i,'group_project_id');
197 $ar['group_id']=$project_c[pg_fetch_result($res,$i,'group_project_id')]['group_id'];
198 $ar['most_recent_date']=pg_fetch_result($res,$i,'last_modified_date');
199 $ar['subject']=pg_fetch_result($res,$i,'summary');
200 $ar['user_realname']=pg_fetch_result($res,$i,'user_realname');
201 $ar['details']=pg_fetch_result($res,$i,'details');
202 writeTaskFeed($ar,$item_cat);
208 displayError('No tasks found! Please check for invalid params.');
215 //*********************** HELPER FUNCTIONS ***************************************
217 function is_needed($str)
219 global $project_sq,$user,$status;
220 if(!empty($project_sq) OR !empty($user) OR !empty($status))
228 function handle_getvar($name)
231 if(isset($_GET[$name]))
233 $vars = array_unique(explode(" ",$_GET[$name]));
234 foreach ($vars as $var)
236 if(ctype_digit($var))
246 function beginTaskFeed($feed_title, $feed_link, $feed_desc) {
248 header("Content-Type: text/xml");
249 print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
250 print "<rss version=\"2.0\">\n";
251 print " <channel>\n";
252 print " <title>".$feed_title."</title>\n";
253 print " <link>".$feed_link."</link>\n";
254 print " <description>".$feed_desc."</description>\n";
255 print " <language>en-us</language>\n";
256 print " <copyright>Copyright 2000-".date("Y")." ".forge_get_config('forge_name')."</copyright>\n";
257 print " <webMaster>".forge_get_config('admin_email')."</webMaster>\n";
258 print " <lastBuildDate>".gmdate('D, d M Y G:i:s',time())." GMT</lastBuildDate>\n";
259 print " <docs>http://blogs.law.harvard.edu/tech/rss</docs>\n";
261 print " <url>http://".forge_get_config('web_host')."/images/bflogo-88.png</url>\n";
262 print " <title>".forge_get_config('forge_name')." Developer</title>\n";
263 print " <link>http://".forge_get_config('web_host')."/</link>\n";
264 print " <width>124</width>\n";
265 print " <heigth>32</heigth>\n";
269 function writeTaskFeed($msg, $item_cat){
270 global $show_threads;
272 //------------ build one feed item ------------
274 print " <title>".$msg['subject']."</title>\n";
275 print " <link>" . util_make_url("/pm/t_follow.php/" . $msg['project_task_id']) . "</link>\n";
276 print " <category>".$item_cat."</category>\n";
277 print " <description>".$msg['details']."</description>\n";
278 print " <author>".$msg['user_realname']."</author>\n";
279 //print " <comment></comment>\n";
280 print " <pubDate>".gmdate('D, d M Y G:i:s',$msg['most_recent_date'])." GMT</pubDate>\n";
281 print " <guid>" . util_make_url("/pm/t_lookup.php?tid=" . $msg['project_task_id']) . "</guid>\n";
287 function displayError($errorMessage) {
288 print " <title>Error</title>\n".
289 " <description>".$errorMessage."</description>";
293 print "\n </channel>\n</rss>";
297 function endOnError($errorMessage) {
298 displayError($errorMessage);