]>
src.bluestatic.org Git - bugdar.git/blob - showreport.php
2 /*=====================================================================*\
3 || ###################################################################
4 || # Bugdar [#]version[#]
5 || # Copyright ©2002-[#]year[#] Blue Static
7 || # This program 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; version [#]gpl[#] of the License.
11 || # This program is distributed in the hope that it will be useful, but
12 || # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 || # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
16 || # You should have received a copy of the GNU General Public License along
17 || # with this program; if not, write to the Free Software Foundation, Inc.,
18 || # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
19 || ###################################################################
20 \*=====================================================================*/
22 $fetchtemplates = array (
24 'showreport_attachment' ,
27 'bugfield_static_text'
30 define ( 'SVN' , ' $Id $' );
32 $focus [' showreport
'] = ' focus
';
34 require_once(' ./ global . php
');
35 require_once(' ./ includes
/ functions_product
. php
');
37 $bugid = $bugsys- >input_clean(' bugid
', TYPE_UINT);
39 // ###################################################################
41 if (empty( $bugid ) OR $_REQUEST [' do '] == ' quicksearch
')
45 if ( $db- >query_first("SELECT bugid FROM " . TABLE_PREFIX . "bug WHERE bugid = $bugid" ))
47 header("Location: showreport.php?bugid= $bugid" );
52 $error = L_INVALID_ID;
56 eval(' $template- > flush ( "' . $template- >fetch('quicksearch') . '" ); ');
60 // ###################################################################
62 // -------------------------------------------------------------------
64 $bug = $db- >query_first("
65 SELECT bugvaluefill.*, bug.*, user.email, user.displayname, user.showemail
66 FROM " . TABLE_PREFIX . "bug AS bug
67 LEFT JOIN " . TABLE_PREFIX . "user AS user
68 ON (bug.userid = user.userid)
69 LEFT JOIN " . TABLE_PREFIX . "bugvaluefill AS bugvaluefill
70 ON (bug.bugid = bugvaluefill.bugid)
71 WHERE bug.bugid = $bugid"
76 $message- >error(L_INVALID_ID);
79 if (!check_bug_permissions( $bug ))
81 $message- >error_permission();
84 $show [' edit
'] = ((can_perform(' caneditown
', $bug [' product
']) AND $bugsys- >userinfo[' userid
'] == $bug [' userid
'] AND $bug [' userid
'] != 0) OR (can_perform(' caneditother
', $bug [' product
']) AND $bugsys- >userinfo[' userid
'] != $bug [' userid
']));
85 $show [' delete
'] = can_perform(' candeletedata
', $bug [' product
']);
87 // ###################################################################
91 $select [' severity
'] = construct_datastore_select(' severity
', ' severity
', ' severityid
', $bug [' severity
']);
93 $show [' changestatus
'] = (can_perform(' canchangestatus
', $bug [' product
']) ? true : false);
94 if (can_perform(' canchangestatus
', $bug [' product
']))
96 $select [' priority
'] = construct_datastore_select(' priority
', ' priority
', ' priorityid
', $bug [' priority
']);
97 $select [' status
'] = construct_datastore_select(' status
', ' status
', ' statusid
', $bug [' status
']);
98 $select [' resolution
'] = construct_datastore_select(' resolution
', ' resolution
', ' resolutionid
', $bug [' resolution
']);
102 $bug [' status
'] = $bugsys- >datastore[' status
'][" $bug [status]"][' status
'];
103 $bug [' resolution
'] = $bugsys- >datastore[' resolution
'][" $bug [resolution]"][' resolution
'];
104 $bug [' severity
'] = $bugsys- >datastore[' severity
'][" $bug [severity]"][' severity
'];
105 $bug [' priority
'] = $bugsys- >datastore[' priority
'][" $bug [priority]"][' priority
'];
108 $show [' assign
'] = (can_perform(' canassign
', $bug [' product
']) ? true : false);
109 if (can_perform(' canassign
', $bug [' product
']) AND is_array( $bugsys- >datastore[' assignto
']))
111 foreach ( $bugsys- >datastore[' assignto
'] AS $dev )
113 $value = $dev [' userid
'];
114 $selected = (( $dev [' userid
'] == $bug [' assignedto
']) ? true : false);
115 $label = construct_user_display( $dev , false);
116 eval(' $select [ dev
] .= "' . $template- >fetch('selectoption') . '" ; ');
120 $productSelect = ConstructProductSelect(' canviewbugs
', " $bug [product], $bug [component], $bug [version]");
122 if ( $bug [' duplicateof
'])
124 $duplicate = $db- >query_first("SELECT * FROM " . TABLE_PREFIX . "bug WHERE bugid = $bug [duplicateof]");
127 if ( $bug [' dependency
'])
130 $dependencies = $db- >query("SELECT * FROM " . TABLE_PREFIX . "bug WHERE bugid IN ( $bug [dependency])");
131 while ( $dependency = $db- >fetch_array( $dependencies ))
133 $depends [] = "<a href= \" showreport.php?bugid= $dependency [bugid] \" title= \" $dependency [summary] \" > $dependency [bugid]</a>";
135 $dependencies = implode(' ', $depends );
138 $select [' automations
'] = ' ';
139 $show [' automations
'] = false;
140 if (is_array( $bugsys- >datastore[' automation
']))
142 foreach ( $bugsys- >datastore[' automation
'] AS $action )
144 $label = $action [' name
'];
145 $value = $action [' actionid
'];
147 eval(' $select [ automation
] .= "' . $template- >fetch('selectoption') . '" ; ');
148 $show [' automations
'] = true;
150 if ( $show [' automations
'])
155 eval(' $select [ automation
] = "' . $template- >fetch('selectoption') . '" . $select [ automation
]; ');
160 // ###################################################################
164 // -------------------------------------------------------------------
166 $bug [' status
'] = $bugsys- >datastore[' status
'][" $bug [status]"][' status
'];
167 $bug [' resolution
'] = $bugsys- >datastore[' resolution
'][" $bug [resolution]"][' resolution
'];
168 $bug [' severity
'] = $bugsys- >datastore[' severity
'][" $bug [severity]"][' severity
'];
169 $bug [' priority
'] = $bugsys- >datastore[' priority
'][" $bug [priority]"][' priority
'];
171 $assigninfo = $bugsys- >datastore[' assignto
'][" $bug [assignedto]"];
172 $bug [' assigninfo
'] = ((is_array( $assigninfo )) ? construct_user_display( $assigninfo ) : ' ');
174 $duplicateof = $db- >query_first("SELECT bugid, summary FROM " . TABLE_PREFIX . "bug WHERE bugid = $bug [duplicateof]");
177 $duplicates = $db- >query("SELECT bugid, summary FROM " . TABLE_PREFIX . "bug WHERE duplicateof = $bug [bugid]");
178 while ( $duplicate = $db- >fetch_array( $duplicates ))
180 $dupelist [] = "<a href= \" showreport.php?bugid= $duplicate [bugid] \" target= \" _blank \" > $duplicate [summary]</a>";
182 $dupelist = implode(' , ', $dupelist );
184 if ( $bug [' dependency
'])
187 $dependencies = $db- >query("SELECT bugid, summary FROM " . TABLE_PREFIX . "bug WHERE bugid IN ( $bug [dependency])");
188 while ( $dependency = $db- >fetch_array( $dependencies ))
190 $depends [] = "<a href= \" showreport.php?bugid= $dependency [bugid] \" title= \" $dependency [summary] \" target= \" _blank \" > $dependency [bugid]</a>";
192 $dependencies = implode(' ', $depends );
196 // ###################################################################
197 // global display items
199 $show [' subscribe
'] = can_perform(' cansubscribe
', $bug [' product
']);
201 $favorite = (bool) $db- >query_first("SELECT * FROM " . TABLE_PREFIX . "favorite WHERE bugid = $bug [bugid] AND userid = " . $bugsys- >userinfo[' userid
']);
202 $favoritetext = ( $favorite ? _(' Remove from Favorites
') : _(' Add to Favorites
'));
204 $bug [' userinfo
'] = construct_user_display( $bug );
205 $bug [' datetime
'] = $datef- >format( $bugsys- >options[' dateformat
'], $bug [' dateline
']);
206 $bug [' productid
'] = $bug [' product
'];
207 $bug [' product
'] = $bugsys- >datastore[' product
'][" $bug [product]"][' title
'];
208 $bug [' componentid
'] = $bug [' component
'];
209 $bug [' component
'] = ( $bug [' component
'] ? $bugsys- >datastore[' product
'][" $bug [component]"][' title
'] : ' ');
210 $bug [' versionid
'] = $bug [' version
'];
211 $bug [' version
'] = $bugsys- >datastore[' version
'][" $bug [version]"][' version
'];
213 // ###################################################################
214 // custom field output
216 $fields = construct_custom_fields( $bug );
218 foreach ( $fields AS $field )
222 $customfields [' left
'] .= $field ;
226 $customfields [' right
'] .= $field ;
231 // ###################################################################
234 // -------------------------------------------------------------------
236 $words = explode(' ', $bugsys- >in[' hilight
']);
237 foreach ( $words AS $word )
241 $word = preg_quote( $bugsys- >unsanitize( $word ));
242 $hilight [] = $temp = trim(preg_replace(' #[ ^
0 - 9 a
- zA
- Z_
] #', '', $word));
246 // -------------------------------------------------------------------
248 $show [ 'getattachments' ] = (( can_perform ( 'cangetattach' , $bug [ 'productid' ]) OR can_perform ( 'caneditattach' , $bug [ 'productid' ])) ? true : false );
249 $show [ 'putattachments' ] = (( can_perform ( 'canputattach' , $bug [ 'productid' ]) OR can_perform ( 'caneditattach' , $bug [ 'productid' ])) ? true : false );
250 $show [ 'attachments' ] = ( $show [ 'getattachments' ] OR $show [ 'putattachments' ]) ? true : false ;
252 if ( $show [ 'getattachments' ] OR $show [ 'putattachments' ])
254 $attachments_fetch = $db- > query ( "
255 SELECT attachment.attachmentid, attachment.filename,
256 attachment.description, attachment.dateline,
257 attachment.userid, attachment.obsolete, user.email,
258 user.showemail, user.displayname
259 FROM " . TABLE_PREFIX
. "attachment AS attachment
260 LEFT JOIN " . TABLE_PREFIX
. "user AS user
261 ON (attachment.userid = user.userid)
262 WHERE attachment.bugid = $bug [bugid]
263 ORDER BY attachment.dateline"
267 while ( $attachment = $db- > fetch_array ( $attachments_fetch ))
270 $show [ 'editattach' ] = (( can_perform ( 'caneditattach' , $bug [ 'productid' ]) OR ( $attachment [ 'userid' ] == $bugsys- > userinfo
[ 'userid' ] AND can_perform ( 'canputattach' , $bug [ 'productid' ]))) ? true : false );
271 $attachment [ 'date' ] = $datef- > format ( $bugsys- > options
[ 'dateformat' ], $attachment [ 'dateline' ]);
272 $attachment [ 'user' ] = construct_user_display ( $attachment , false );
273 eval ( ' $attachments .= "' . $template- > fetch ( 'showreport_attachment' ) . '";' );
276 $show [ 'attachments' ] = (! $show [ 'putattachments' ] AND ! $attaches ) ? false : true ;
279 // -------------------------------------------------------------------
282 $vote = $db- > query_first ( "SELECT *, FIND_IN_SET(" . $bugsys- > userinfo
[ 'userid' ] . ", userids) AS uservote FROM " . TABLE_PREFIX
. "vote WHERE bugid = $bug [bugid]" );
284 $vote [ 'total' ] = $vote [ 'votefor' ] +
$vote [ 'voteagainst' ];
285 if ( $vote [ 'total' ] != 0 )
287 $vote [ 'forpercent' ] = round ( $vote [ 'votefor' ] / $vote [ 'total' ], 3 ) * 100 ;
288 $vote [ 'againstpercent' ] = round ( $vote [ 'voteagainst' ] / $vote [ 'total' ], 3 ) * 100 ;
292 $vote [ 'forpercent' ] = 0 ;
293 $vote [ 'againstpercent' ] = 0 ;
296 $show [ 'vote' ] = (( can_perform ( 'canvote' , $bug [ 'productid' ]) AND ! $vote [ 'uservote' ]) ? true : false );
298 // -------------------------------------------------------------------
300 $comments_fetch = $db- > query ( "
301 SELECT comment.*, user.email, user.showemail, user.displayname
302 FROM " . TABLE_PREFIX
. "comment AS comment
303 LEFT JOIN " . TABLE_PREFIX
. "user AS user
304 ON (comment.userid = user.userid)
305 WHERE comment.bugid = $bug [bugid]" . (! can_perform ( 'canviewhidden' , $bug [ 'productid' ]) ? "
306 AND !hidden" : '' ) . "
307 ORDER BY comment.dateline ASC"
309 while ( $comment = $db- > fetch_array ( $comments_fetch ))
311 $comment [ 'posttime' ] = $datef- > format ( $bugsys- > options
[ 'dateformat' ], $comment [ 'dateline' ]);
312 $comment [ 'postby' ] = construct_user_display ( $comment );
313 $show [ 'editcomment' ] = (( can_perform ( 'caneditownreply' , $bug [ 'productid' ]) AND $bugsys- > userinfo
[ 'userid' ] == $comment [ 'userid' ]) OR ( can_perform ( 'caneditotherreply' , $bug [ 'productid' ]) AND $bugsys- > userinfo
[ 'userid' ] != $comment [ 'userid' ]));
315 $bugsys- > debug ( 'can edit own replies: ' . ( int )( can_perform ( 'caneditownreply' , $bug [ 'productid' ]) AND $bugsys- > userinfo
[ 'userid' ] == $comment [ 'userid' ]));
316 $bugsys- > debug ( 'can edit other replies:' . ( int )( can_perform ( 'caneditotherreply' , $bug [ 'productid' ]) AND $bugsys- > userinfo
[ 'userid' ] != $comment [ 'userid' ]));
317 $bugsys- > debug ( ' $show [editcomment]: ' . $show [ 'editcomment' ]);
319 if ( is_array ( $hilight ))
321 foreach ( $hilight AS $id => $find )
323 $find = "#( $find )#i" ;
324 $replace = "<span style= \" background-color: yellow; font-weight: bold; color: red; \" > \\ 1</span>" ;
325 $comment [ 'comment_parsed' ] = preg_replace ( $find , $replace , $comment [ 'comment_parsed' ]);
329 eval ( ' $comments .= "' . $template- > fetch ( 'showreport_comment' ) . '";' );
332 $show [ 'newreply' ] = ( can_perform ( 'canpostcomments' , $bug [ 'productid' ]) ? true : false );
334 $bug [ 'summary_title' ] = $bug [ 'summary' ];
335 if ( is_array ( $hilight ) AND ! $show [ 'edit' ])
337 foreach ( $hilight AS $id => $find )
339 $find = "#( $find )#i" ;
340 $replace = "<span style= \" background-color: yellow; font-weight: bold; color: red; \" > \\ 1</span>" ;
341 $bug [ 'summary' ] = preg_replace ( $find , $replace , $bug [ 'summary' ]);
345 eval ( ' $template- >flush("' . $template- > fetch ( 'showreport' ) . '");' );
347 /*=====================================================================*\
348 || ###################################################################
351 || ###################################################################
352 \*=====================================================================*/