cvs: phpweb / bug-pwd-finder.php bugs-dos-and-donts.php bugs-generating-backtrace.php bugs.php bugstats.php lbugs.php lstats.php /include bugform.inc
bugtypes.inc
| From: | Jim Winstead | Date: | Fri, 21 Sep 2001 18:30:14 +0000 |
| Subject: | cvs: phpweb / bug-pwd-finder.php bugs-dos-and-donts.php bugs-generating-backtrace.php bugs.php bugstats.php lbugs.php lstats.php /include bugform.inc bugtypes.inc |
||
| Groups: | php.mirrors | ||
| Request: | Send a blank email to php-mirrors+get-6535@lists.php.net to get a copy of this message | ||
jimw Fri Sep 21 14:30:14 2001 EDT
Removed files:
/phpweb bug-pwd-finder.php bugs-dos-and-donts.php
bugs-generating-backtrace.php lbugs.php lstats.php
/phpweb/include bugform.inc bugtypes.inc
Modified files:
/phpweb bugs.php bugstats.php
Log:
bugs stuff is in its own repository now
Index: phpweb/bugs.php diff -u phpweb/bugs.php:1.176 phpweb/bugs.php:1.177 --- phpweb/bugs.php:1.176 Wed Sep 19 13:54:05 2001 +++ phpweb/bugs.php Fri Sep 21 14:30:13 2001 @@ -1,808 +1,3 @@ -<?php /* vim: set noet ts=4 sw=4: : */ -require_once 'prepend.inc'; - -require 'cvs-auth.inc'; - -if (isset($save) && isset($pw)) { # non-developers don't have $user set - setcookie("MAGIC_COOKIE",base64_encode("$user:$pw"),time()+3600*24*12,'/'); -} -if (isset($MAGIC_COOKIE) && !isset($user) && !isset($pw)) { - list($user,$pw) = explode(":", base64_decode($MAGIC_COOKIE)); -} - -/* See the end of the script for the table layout. */ - -$mail_bugs_to = "php-dev@lists.php.net"; - -if (is_primary_site() || strstr($MYSITE,"localhost")) { - $dbhost = "localhost"; - $dbuser = "nobody"; - $dbpwd = ""; -} else { - if (is_backup_primary()) { - commonHeader("Service Unavailable");?> -<p>Sorry, the bug database is temporarily unavailable.</p> <?php - commonFooter(); - exit; - } - header("Location: http://www.php.net/bugs.php" . ($QUERY_STRING ? "?$QUERY_STRING" : "")); - exit; -} - -mysql_connect($dbhost,$dbuser,$dbpwd) - or die("Unable to connect to SQL server."); -mysql_select_db("php3"); - -commonHeader("Bug Reporting"); -echo "<font size=\"-1\">\n"; - -?> -<table bgcolor="#ccccff" border="0" cellspacing="1"> - <form method="POST" action="<?php echo $PHP_SELF?>"> - <input type="hidden" name="cmd" value="display" /> - <tr> - <td><input type="submit" value="Display" /></td> - <td><select name="status"><?php show_state_options($status);?></select></td> - <td align="right">bugs of type: </td> - <td><select name="bug_type"><?php show_types($bug_type,1);?></select></td> - <td align="right">reported since:</td> - <td><select name="bug_age"><?php show_byage_options($bug_age);?></select></td> - </tr> - <tr> - <td colspan=2 align=right>OS (substr search):</td> - <td colspan="4"><input type="text" name="php_os" value="<?echo htmlspecialchars($php_os);?>"> - </tr> - <tr> - <td align="right">with text:</td> - <td colspan="3"><input type="text" name="search_for" value="<?echo htmlspecialchars($search_for);?>"> in the report or email address</td> - <td colspan="2">max. <select name="limit"><?php show_limit_options($limit);?></select> entries / page.</td> - </tr> - </form> - <tr> - <td bgcolor="#000000" colspan="6"><?echo spacer(1,1);?></td> - </tr> - <form method="GET" action="<?php echo $PHP_SELF;?>"> - <tr> - <td align="right"><input type="submit" value="Edit" /></td> - <td align="right">bug number:</td> - <td colspan="3"><input type="text" name="id" value="<?echo $id?>"></td> - <input type="hidden" name="edit" value="<?php echo isset($MAGIC_COOKIE) ? 1 : 2;?>"> - <td align="center"><a href="bugstats.php">Statistics</a></td> - </tr> - </form> -</table> - -<?php - -echo hdelim(); - -if ($cmd == "send") { - if (incoming_details_are_valid(1,1)) { - $ret = mysql_query("INSERT INTO bugdb (bug_type,email,sdesc,ldesc,php_version,php_os,status,ts1,passwd) VALUES ('$bug_type','$email','$sdesc','$ldesc','$php_version','$php_os','Open',NOW(),'$passwd')"); - - $cid = mysql_insert_id(); - - $report = ""; - - $ldesc = stripslashes($ldesc); - $sdesc = stripslashes($sdesc); - - echo "<pre>\n"; - - $report .= "From: $email\n"; - $report .= "Operating system: $php_os\n"; - $report .= "PHP version: $php_version\n"; - $report .= "PHP Bug Type: $bug_type\n"; - $report .= "Bug description: "; - - echo $report; - - echo htmlspecialchars($sdesc), "\n\n"; - - echo wordwrap(htmlspecialchars($ldesc)); - - echo "</pre>\n"; - - $ascii_report = "$report$sdesc\n\n".wordwrap($ldesc); - $ascii_report.= "\n-- \nEdit bug report at: http://bugs.php.net/?id=$cid&edit=1\n"; - - list($mailto,$mailfrom) = get_bugtype_mail($bug_type); - - if (mail($mailto, "Bug #$cid: $sdesc", $ascii_report, "From: $email\nX-PHP-Bug: $cid\nMessage-ID: <bug-$cid@bugs.php.net>")) { - @mail($email, "Bug #$cid: $sdesc", $ascii_report, "From: PHP Bug Database <$mailfrom>\nX-PHP-Bug: $cid\nMessage-ID: <bug-$cid@bugs.php.net>"); - echo "<p><h2>Mail sent to $mailto...</h2></p>\n"; - echo "<p>Thank you for your help!</p>"; - echo "<p><i>The password for this report is</i>: <b>".htmlentities($passwd)."</b><br>"; - echo "If the status of the bug report you submitted\n"; - echo "changes, you will be notified. You may return here and check on the status\n"; - echo "or update your report at any time. The URL for your bug report is: <a href=\"http://bugs.php.net/?id=$cid\">"; - echo "http://bugs.php.net/?id=$cid</a></p>\n"; - } else { - echo "<p><h2>Mail not sent!</h2>\n"; - echo "Please send this page in a mail to " . - "<a href=\"mailto:$mailto\">$mailto</a> manually.</p>\n"; - } - - commonFooter(); - exit; - } - -} -elseif ($cmd == "display") { - if (!$bug_type) $bug_type = "Any"; - - $query = "SELECT *,TO_DAYS(NOW())-TO_DAYS(ts2) AS unchanged FROM bugdb "; - - if($bug_type=="Any") { - $where_clause = "WHERE bug_type != 'Feature/Change Request'"; - } else { - $where_clause = "WHERE bug_type = '$bug_type'"; - } - - /* Treat assigned, analyzed and critical bugs as open */ - if ($status == "Open") { - $where_clause .= " AND (status='Open' OR status='Assigned' OR status='Analyzed' OR status='Critical')"; - } elseif ($status == "Old Feedback") { - $where_clause .= " AND status='Feedback' AND TO_DAYS(NOW())-TO_DAYS(ts2)>60"; - } elseif ($status == "Stale") { - $where_clause .= " AND status != 'Closed' AND status != 'Duplicate' AND status != 'Bogus' AND TO_DAYS(NOW())-TO_DAYS(ts2) > 30"; - } elseif ($status != "All") { - $where_clause .= " AND status='$status'"; - } - - if (strlen($search_for)) { - $where_clause .= " AND (email like '%$search_for%' OR sdesc LIKE '%$search_for%' OR ldesc LIKE '%$search_for%')"; - } - - if ($bug_age) { - $where_clause .= " AND ts1 >= DATE_SUB(NOW(), INTERVAL $bug_age DAY)"; - } - - if ($php_os) { - $where_clause .= " AND php_os like '%$php_os%'"; - } - - if (!isset($phpver)) $phpver = "4"; - if ($phpver) $where_clause .= " AND SUBSTRING(php_version,1,1) = '$phpver'"; - - /* not in the header, but someone can build a query manually with it. */ - if(strlen($by) and $by!='Any') - $where_clause .= " AND dev_id = '$by' "; - - $query .= "$where_clause "; - - if (!$order_by) $order_by = "id"; - if (!$direction) $direction = "ASC"; - - if ($reorder_by) { - if ($order_by == $reorder_by) { - $direction = $direction == "ASC" ? "DESC" : "ASC"; - } - else { - $direction = "ASC"; - } - $order_by = $reorder_by; - } - - $query .= " ORDER BY $order_by $direction"; - - if (!$begin) $begin = 0; - if (!isset($limit)) $limit = 30; - - if($limit!='All') $query .= " LIMIT $begin,$limit"; - - $res = @mysql_query($query); - if (!$res) die(htmlspecialchars($query)."<br>".mysql_error()); - - $rows = mysql_numrows($res); - if (!$rows) { - echo "<h2 class=\"error\">No bugs with the specified criteria were found.</h2>"; - } - else { - $link = "$PHP_SELF?cmd=display&bug_type=" . urlencode ($bug_type) . "&status=$status&search_for=".htmlspecialchars(stripslashes($search_for))."&php_os=".htmlspecialchars(stripslashes($php_os))."&bug_age=$bug_age&by=$by&order_by=$order_by&direction=$direction&phpver=$phpver&limit=$limit"; -?> -<table align="center" border="0" cellspacing="2" width="95%"> - <?php show_prev_next($begin,$rows,$link,$limit);?> - <tr bgcolor="#aaaaaa"> - <th><a href="<?php echo $link;?>&reorder_by=id">ID#</a></th> -<?php if ($bug_type == "Any") {?> - <th><a href="<?php echo $link;?>&reorder_by=bug_type">Type</a></th> -<?php }?> - <th><a href="<?php echo $link;?>&reorder_by=status">Status</a></th> - <th><a href="<?php echo $link;?>&reorder_by=php_version">Version</a></th> - <th><a href="<?php echo $link;?>&reorder_by=php_os">OS</a></th> - <th><a href="<?php echo $link;?>&reorder_by=sdesc">Description</a></th> - <th>Mod</th> - <th><a href="<?php echo $link;?>&reorder_by=assign">Assigned</a></th> - </tr> -<?php - while ($row = mysql_fetch_array($res)) { - echo '<tr bgcolor="', get_row_color($row), '">'; - echo "<td><a href=\"$PHP_SELF?id=$row[id]\">$row[id]</a></td>"; - if ($bug_type == "Any") { - echo "<td>", htmlspecialchars($row[bug_type]), "</td>"; - } - echo "<td>", htmlspecialchars($row[status]); - if ($row[status] == "Feedback" && $row[unchanged] > 0) { - printf ("<br>%d day%s", $row[unchanged], $row[unchanged] > 1 ? "s" : ""); - } - echo "</td>"; - echo "<td>", htmlspecialchars($row[php_version]), "</td>"; - echo "<td>", $row[php_os] ? htmlspecialchars($row[php_os]) : " ", "</td>"; - echo "<td>", $row[sdesc] ? htmlspecialchars($row[sdesc]) : " ", "</td>"; - echo "<td align=\"center\"><a href=\"$PHP_SELF?id=$row[id]&edit=1\"><img src=\"gifs/small_submit.gif\" border=\"0\" width=\"11\" height=\"11\" alt=\"edit\" /></a></td>"; - echo "<td>", $row[assign] ? htmlspecialchars($row[assign]) : " ", "</td>"; - echo "</tr>\n"; - } - - show_prev_next($begin,$rows,$link,$limit); -?> -</table> -<?php - } - echo "<p align=\"center\"><a href=\"$PHP_SELF\">Submit a Bug Report</a></p>"; - commonFooter(); - exit; - -} elseif (!isset($cmd) && isset($id)) { - - # fetch the original bug into $original - $res = mysql_query("SELECT * FROM bugdb WHERE id=$id"); - if ($res) $original = mysql_fetch_array($res); - if (!$res || !$original) { - echo "<h1 class=\"error\">No such bug #$id!</h1>"; - commonFooter(); - exit; - } - - # handle any updates, displaying errors if there were any - $success = 0; - - if ($modify == "user") { - if (!$original[passwd] || $original[passwd] != stripslashes($pw)) { - echo "<h2 class=\"error\">The password you supplied was incorrect.</h2>\n"; - } - elseif (incoming_details_are_valid()) { - /* update bug record */ - $success = @mysql_query("UPDATE bugdb SET status='$status', bug_type='$bug_type', php_version='$php_version', php_os='$php_os', ts2=NOW(), email='$email' WHERE id=$id"); - - /* add comment */ - if ($success && !empty($ncomment)) { - $success = @mysql_query("INSERT INTO bugdb_comments (bug, email, ts, comment) VALUES ($id,'$email',NOW(),'$ncomment')"); - } - } - $from = $email; - } - elseif ($modify == "developer") { - if (!verify_password($user,$pw)) { - echo "<h2 class=\"error\">The username or password you supplied was incorrect.</h2>\n"; - } - elseif (incoming_details_are_valid()) { - $success = @mysql_query("UPDATE bugdb SET sdesc='$sdesc',status='$status', bug_type='$bug_type', assign='$assign', dev_id='$user', php_version='$php_version', php_os='$php_os', ts2=NOW() WHERE id=$id"); - if ($success && !empty($ncomment)) { - $success = @mysql_query("INSERT INTO bugdb_comments (bug, email, ts, comment) VALUES ($id,'$user@php.net',NOW(),'$ncomment')"); - } - } - $from = "$user@php.net"; - } - - if ($modify && $success) { - # mail out the updated bug - $text = "ID: $id\n"; - if ($modify == "developer") { - $text .= "Updated by: $user\n"; - } - else { - $text .= "User updated by: $email\n"; - } - - $text.= "Reported By: $original[email]\n"; - - if (stripslashes($sdesc) != $original[sdesc]) - $text .= "Old Summary: $original[sdesc]\n"; - - if ($status!=$original[status]) - $text .= "Old Status: $original[status]\n"; - $text.= "Status: $status\n"; - - if ($bug_type != $original[bug_type]) - $text .= "Old Bug Type: $original[bug_type]\n"; - $text.= "Bug Type: $bug_type\n"; - - if ($php_os != $original[php_os]) - $text .= "Old Operating System: $original[php_os]\n"; - $text.= "Operating System: $php_os\n"; - - if ($php_version != $original[php_version]) - $text .= "Old PHP Version: $original[php_version]\n"; - $text.= "PHP Version: $php_version\n"; - - if ($assign != $original[assign]) - $text .= "Old Assigned To: $original[assign]\n"; - if ($assign || $original[assign]) - $text.= "Assigned To: $assign\n"; - - if ($ncomment) - $text .= "New Comment:\n\n".stripslashes($ncomment); - - $text.= get_old_comments($id); - - $user_text = $text . "\n\nATTENTION! Do NOT reply to this email!\n"; - $user_text.= "To reply, use the web interface found at http://bugs.php.net/?id=$id&edit=2\n"; - - $dev_text .= $text . "\n\nEdit this bug report at http://bugs.php.net/?id=$id&edit=1\n"; - - list($mailto,$mailfrom) = get_bugtype_mail($bug_type); - - /* send mail if status was changed or there is a comment */ - if ($status != $original[status] || $ncomment != "") { - @mail($original[email], "Bug #$id Updated: ".stripslashes($sdesc), $user_text, "From: Bug Database <$mailfrom>\nX-PHP-Bug: $id\nIn-Reply-To: <bug-$id@bugs.php.net>"); - @mail($mailto, "Bug #$id Updated: ".stripslashes($sdesc), $dev_text, "From: $from\nX-PHP-Bug: $id\nIn-Reply-To: <bug-$id@bugs.php.net>"); - } - - # display a happy success message - echo "<h2>Bug #$id updated successfully.</h2>\n"; - - unset($ncomment); - } - elseif ($modify && !$success) { - echo "<h2 class=\"error\">Something went wrong updating the database.</h2>"; - } - - /* DISPLAY BUG */ - if ($edit) { - echo "<form method=\"POST\" action=\"$PHP_SELF?id=$id\">\n"; - echo "<input type=\"hidden\" name=\"edit\" value=\"$edit\">\n"; - } - if ($edit==1) - echo '<input type="hidden" name="modify" value="developer">',"\n"; - if ($edit==2) - echo '<input type="hidden" name="modify" value="user">',"\n"; -?> -<br> -<h1>Bug id #<?php echo $id?></h1> -<table border="0"> - <tr> - <th align="right">Status:</th> - <?php if ($edit) {?> - <td><select name="status"><?php show_state_options($status,$edit,$original[status])?></select> - <?php if ($edit == 1) {?> - <b>Assign To:</b> <input type="text" name="assign" size="10" maxlength="16" value="<?php echo $assign ? htmlspecialchars(stripslashes($assign)) : htmlspecialchars($original[assign])?>"> <input type="submit" value="Submit Changes"></td> - <small><a href="<?php echo "$PHP_SELF?id=$id";?>&edit=2"><tt>User Modify</tt></a></small></td> - <?php } else { ?> - <small><a href="<?php echo "$PHP_SELF?id=$id";?>&edit=1"><tt>Dev Modify</tt></a></small></td> - <?php }?> - <?php } else { ?> - <td><?php echo $original[status]?></td> - <td><td><small><a href="<?php echo "$PHP_SELF?id=$id";?>&edit=2"><tt>User Modify</tt></a> <a href="<?php echo "$PHP_SELF?id=$id";?>&edit=1"><tt>Dev Modify</tt></a></small></td> - <?php }?> - </tr> - <tr> - <th align="right">From:</th> - <?php if ($edit) {?> - <td><input type="text" name="email" size="20" maxlength="40" value="<?php echo $email ? htmlspecialchars(stripslashes($email)) : htmlspecialchars($original[email])?>"></td> - <?php } else { ?> - <td><?php echo $original[email]?></td> - <?php }?> - </tr> - <tr> - <th align="right">Reported:</th> - <td><?php echo $original[ts1]?></td> - </tr> - <tr> - <th align="right">Type:</th> - <?php if ($edit) {?> - <td><select name="bug_type"><?php show_types($bug_type,0,$original[bug_type])?></select></td> - <?php } else { ?> - <td><?php echo $original[bug_type]?></td> - <?php }?> - </tr> - <tr> - <th align="right">OS:</th> - <?php if ($edit) {?> - <td><input type="text" name="php_os" size="20" maxlength="32" value="<?php echo $php_os ? htmlspecialchars(stripslashes($php_os)) : htmlspecialchars($original[php_os])?>"></td> - <?php } else { ?> - <td><?php echo $original[php_os]?></td> - <?php }?> - </tr> - <tr> - <th align="right">PHP Version:</th> - <?php if ($edit) {?> - <td><input type="text" name="php_version" size="20" maxlength="100" value="<?php echo $php_version ? htmlspecialchars(stripslashes($php_version)) : htmlspecialchars($original[php_version])?>"></td> - <?php } else { ?> - <td><?php echo $original[php_version]?></td> - <?php }?> - </tr> -<?php if ($original[assign] && !$edit) {?> - <tr> - <th align="right">Assigned To:</th> - <td><?php echo $original[assign]?></td> - </tr> -<?php }?> - <tr> - <th align="right">Summary:</th> - <?php if ($edit) {?> - <td><input type="text" name="sdesc" size="40" maxlength="80" value="<?php echo $sdesc ? htmlspecialchars(stripslashes($sdesc)) : htmlspecialchars($original[sdesc])?>"></td> - <?php } else { ?> - <td><?php echo $original[sdesc]?></td> - <?php }?> - </tr> -<?php if ($edit) {?> - <tr> - <th align="right">New Comment:</th> - </tr> - <tr> - <td colspan="2"> - <textarea name="ncomment" wrap="physical" cols="60" rows="15"><?php echo htmlspecialchars(stripslashes($ncomment));?></textarea> - </td> - </tr> -<?php if ($edit == 1) { /* developer */?> - <tr> - <th align="right">CVS Username:</th> - <td> - <input type="text" name="user" size="10" maxlength="20" value="<?php echo htmlspecialchars(stripslashes($user));?>"> - </td> - </tr> -<?php }?> - <tr> - <th align="right">Password:</th> - <td> - <input type="password" name="pw" size="10" maxlength="20" value="<?php echo htmlspecialchars(stripslashes($pw));?>"> - <?php if ($edit == 2) {?> - [<a href="bug-pwd-finder.php">Lost your password?</a>] - <?php }?> - </td> - </tr> - <tr> - <th align="right">Remember me:</th> - <td> - <input type="checkbox" name="save"> - (Check here to remember your password for next time.) - </td> - </tr> - <tr> - <td colspan="2"> - - <input type="submit" value="Submit Changes"> - </td> - </tr> -<?php }?> -</table> -<?php - if ($edit) echo "</form>\n"; - - echo hdelim(); - - /* ORIGINAL REPORT */ - echo "<b><i>[$original[ts1]] $original[email]</i></b><br>\n"; - echo "<blockquote><blockquote><pre>"; - echo wordwrap(addlinks($original[ldesc]),90); - echo "</pre></blockquote></blockquote>\n"; - - /* COMMENTS */ - $query = "SELECT * FROM bugdb_comments WHERE bug=$id ORDER BY ts"; - if ($comresult = mysql_query($query)) { - while ($com = mysql_fetch_array($comresult)) { - echo "<b><i>[$com[ts]] $com[email]</i></b><br>\n"; - echo "<blockquote><blockquote><pre>"; - echo wordwrap(addlinks($com[comment]),90); - echo "</pre></blockquote></blockquote>\n"; - } - } - - commonFooter(); - exit; - -} elseif (!isset($cmd)) { -?> - -<h1>Report a Bug</h1> - -<br /> -<strong>Please</strong> read the <a href="bugs-dos-and-donts.php">Dos & -Don'ts</a> before submitting a bug report!<br /> -If you are not sure if the problem you're experiencing is a bug at all -it most likely isn't. Please ask support questions on the -<a href="support.php">mailing lists</a>. -<br /> - -<?php -} - -include 'bugform.inc'; -?> -</font> -<?php -commonFooter(); - -# FUNCTIONS - -function show_byage_options($current) -{ - $opts = array( - "0" => "the beginning", - "1" => "yesterday", - "7" => "7 days ago", - "15" => "15 days ago", - "30" => "30 days ago", - "90" => "90 days ago", - ); - while (list($k,$v) = each($opts)) { - echo "<option value=\"$k\"", ($current==$k ? " selected" : ""), - ">$v</option>\n"; - } -} - -function show_limit_options($limit=30) -{ - for($i=10;$i<100;) { - echo "<option value=\"$i\"", ($limit==$i ? " selected" : ""),">$i</option>\n"; - $i=$i+10; - } - echo '<option value="All"', ($limit=='All' ? " selected": ""),">All</option>\n"; -} - -function show_state_options($state, $user_mode=0, $default="") -{ - if (!$state && !$default) { - $state = "Open"; - } - elseif (!$state) { - $state = $default; - } - - $state_types = array ( - "Open" => 2, - "Closed" => 2, - "Duplicate" => 2, - "Critical" => 1, - "Assigned" => 1, - "Analyzed" => 1, - "Suspended" => 1, - "Feedback" => 1, - "Old Feedback" => 0, - "Stale" => 0, - "Bogus" => 1, - "All" => 0 - ); - - /* regular users can only pick states with type 2 for unclosed bugs */ - if($state != "All" && $state_types[$state] == 1 && $user_mode == 2) { - /* If state was 'Feedback', set state to 'Open' automatically. */ - if($state == "Feedback") { - echo "<option>Open</option>\n"; - } else { - echo "<option>$state</option>\n"; - } - if($state != "Bogus") echo "<option>Closed</option>\n"; - } else { - foreach($state_types as $type => $mode) { - if ($mode >= $user_mode) { - echo "<option"; - if($type == $state) echo " selected"; - echo ">$type</option>\n"; - } - } - } -} - -function show_version_options($current,$default="") -{ - $versions = array("4.0.6","4.0.5","4.0.4pl1","4.0.4","4.0CVS-".date("Y-m-d")); - while (list(,$v) = each($versions)) { - echo "<option", ($current == $v ? " selected" : ""), ">$v</option>\n"; - if ($current == $v) $use++; - } - if (!$use && $current) echo "<option selected>$current</option>\n"; - echo "<option value=\"earlier\">Earlier? Upgrade first!</option>\n"; -} - -function show_types($current,$show_any,$default="") -{ - include 'bugtypes.inc'; - - if (!$current && !$default && !$show_any) { - echo "<option value=\"Unknown/Other Function\">--Please Select--</option>\n"; - } - elseif (!$current && $show_any) { - $current = "Any"; - } - elseif (!$current) { - $current = $default; - } - - while (list($key,$value) = each($items)) { - if ($show_any || $key != "Any") { - echo "<option value=\"$key\"", - ($key == $current? " selected" : ""), - ">$value</option>\n"; - if ($key == $current) $use++; - } - } - if (!$use && $current) { - echo "<option selected>$current</option>\n"; - } -} - -function get_old_comments ($bug_id) -{ - $divider = str_repeat("-", 72); - $max_message_length = 10 * 1024; - $max_comments = 5; - $output = ""; $count = 0; - - $res = @mysql_query("SELECT ts, email, comment FROM bugdb_comments WHERE bug=$bug_id ORDER BY ts DESC"); - - if (!$res) return ""; - - # skip the most recent (this is get_old_comments, not get_all_comments!) - $row = mysql_fetch_row($res); - if (!$row) return ""; - - while (($row = mysql_fetch_row($res)) && strlen($output) < $max_message_length && $count++ < $max_comments) { - $output .= "[$row[0]] $row[1]\n\n$row[2]\n\n$divider\n\n"; - } - - if (strlen($output) < $max_message_length && $count < $max_comments) { - $res=@mysql_query("SELECT ts1,email,ldesc FROM bugdb WHERE id=$bug_id"); - if (!$res) return $output; - $row = mysql_fetch_row($res); - if (!$row) return $output; - return ("\n\nPrevious Comments:\n$divider\n\n" . $output . "[$row[0]] $row[1]\n\n$row[2]\n\n$divider\n\n"); - } - else { - return ("\n\nPrevious Comments:\n$divider\n\n" . $output . "The remainder of the comments for this report are too long. To view\nthe rest of the comments, please view the bug report online at\n http://bugs.php.net/?id=$bug_id\n"); - } - - return ""; -} - -function addlinks($text) -{ - $text = htmlspecialchars($text); - $text = preg_replace("/((mailto|http|ftp|nntp|news):.+?)(>|\\s|\\)|\\.\\s|$)/i","<a href=\"\\1\">\\1</a>\\3",$text); - # what the heck is this for? - $text = preg_replace("/[.,]?-=-\"/", '"', $text); - return $text; -} - -/* validate an incoming bug report */ -function incoming_details_are_valid($require_ldesc=0,$require_passwd=0) -{ - global $email,$bug_type,$php_version,$sdesc,$ldesc,$passwd; - - $valid = 1; - if(!preg_match("/[.\\w+-]+@[.\\w-]+\\.\\w{2,}/i",$email)) { - echo "<h2 class=\"error\">Please provide a valid email address.</h2>"; - $valid = 0; - } - - if ($bug_type=="none") { - echo "<h2 class=\"error\">Please select an appropriate bug type.</h2>"; - $valid = 0; - } - - if ($php_version=='earlier') { - echo "<h2 class=\"error\">Please select a valid PHP version. If your PHP version is too old, please upgrade first and see if the problem has not already been fixed.</h2>"; - $valid = 0; - } - - if (!$sdesc) { - echo "<h2 class=\"error\">You must supply a short description of the bug you are reporting.</h2>"; - $valid = 0; - } - - if ($require_ldesc && !$ldesc) { - echo "<h2 class=\"error\">You must supply a long description of the bug you are reporting.</h2>"; - $valid = 0; - } - - if ($require_passwd && empty($passwd)) { - echo "<h2 class=\"error\">You must supply a password for this bug report.</h2>"; - $valid = 0; - } - - return $valid; -} - -function get_bugtype_mail($bug_type) -{ - global $mail_bugs_to; - - if (eregi("documentation", $bug_type)) { - return array("$mail_bugs_to,phpdoc@lists.php.net",$mail_bugs_to); - } - elseif (eregi("website", $bug_type)) { - return array("php-mirrors@lists.php.net","php-mirrors@lists.php.net"); - } - else { - return array($mail_bugs_to,$mail_bugs_to); - } -} - -function get_row_color($row) -{ - if ($row["bug_type"]=="Feature/Change Request") { - return "#aaaaaa"; - } - switch($row["status"]) { - case "Open": - return "#ffbbaa"; - break; - case "Critical": - return "#ff0000"; - break; - case "Closed": - return "#aaffbb"; - break; - case "Suspended": - return "#ffccbb"; - break; - case "Assigned": - return "#bbaaff"; - break; - case "Feedback": - return "#bbeeff"; - break; - case "Analyzed": - return "#99bbaa"; - break; - case "Duplicate": - return "#bbbbbb"; - break; - default: - return "#aaaaaa"; - break; - } -} - -function show_prev_next($begin,$rows,$link,$limit) -{ - if($limit=='All') return; - if ($begin == 0 && $rows < $limit) return; - echo "<tr bgcolor=\"#cccccc\"><td align=\"center\" colspan=\"9\">"; - echo '<table border="0" cellspacing="0" cellpadding="0" width="100%"><tr>'; - if ($begin > 0) { - echo "<td align=\"left\"><a href=\"$link&begin=",max(0,$begin-$limit),"\">« Show Previous $limit Entries</a></td>"; - } - if ($rows >= $limit) { - echo "<td align=\"right\"><a href=\"$link&begin=",$begin+$limit,"\">Show Next $limit Entries »</a></td>"; - } - echo "</tr></table></td></tr>"; -} - -/* -# MySQL dump 4.0 -# -# Host: localhost Database: php3 -#-------------------------------------------------------- -DROP table bugdb; - -CREATE TABLE bugdb ( - id int(8) NOT NULL AUTO_INCREMENT, - bug_type char(32), - email varchar(40) NOT NULL, - sdesc varchar(80), - ldesc text, - php_version char(16), - php_os varchar(32), - status varchar(16), - ts1 datetime, # bug created date - ts2 datetime, # bug last updated date - dev_id varchar(16),# developer who last commented - assign varchar(16), - passwd varchar(20),# user password - PRIMARY KEY (id) -); - -CREATE TABLE bugdb_comments ( - id int(8) NOT NULL AUTO_INCREMENT, - bug int(8) NOT NULL, - email varchar(40) NOT NULL, - ts datetime NOT NULL, - comment text, - PRIMARY KEY (id) -); -*/ +header("Location: http://bugs.php.net/" . ($QUERY_STRING ? "?$QUERY_STRING" : "")); ?> Index: phpweb/bugstats.php diff -u phpweb/bugstats.php:1.32 phpweb/bugstats.php:1.33 --- phpweb/bugstats.php:1.32 Wed Sep 19 14:04:02 2001 +++ phpweb/bugstats.php Fri Sep 21 14:30:13 2001 @@ -1,203 +1,3 @@ <?php -require_once 'prepend.inc'; - -if(!is_primary_site()) { - if (is_backup_primary()) { - commonHeader("Service Unavailable");?> -<p>Sorry, the bug database is temporarily unavailable.</p> -<?php - commonFooter(); - exit; - } - - header("Location: http://www.php.net/bugstats.php"); - exit; -} - -function ShowTime($sec) { - if($sec<60) { - return "$sec seconds"; - } else if($sec<120) { - return (int)($sec/60)." minute ".($sec%60)." seconds"; - } else if($sec<3600) { - return (int)($sec/60)." minutes ".($sec%60)." seconds"; - } else if($sec<7200) { - return (int)($sec/3600)." hour ".(int)(($sec%3600)/60)." minutes ".(($sec%3600)%60)." seconds"; - } else if($sec<86400) { - return (int)($sec/3600)." hours ".(int)(($sec%3600)/60)." minutes ".(($sec%3600)%60)." seconds"; - } else if($sec<172800) { - return (int)($sec/86400)." day ".(int)(($sec%86400)/3600)." hours ".(int)((($sec%86400)%3600)/60)." minutes ".((($sec%86400)%3600)%60)." seconds"; - } else { - return (int)($sec/86400)." days ".(int)(($sec%86400)/3600)." hours ".(int)((($sec%86400)%3600)/60)." minutes ".((($sec%86400)%3600)%60)." seconds"; - } -} - -commonHeader("Bug Stats"); - -if ($phpver > 0) { - $other = ($phpver == 4 ? 3 : 4); - echo '<p>Currently displaying PHP'. $phpver . ' bugs only. Display <a href="bugstats.php">all bugs</a> or <a href="bugstats.php?phpver=' . $other . '">only PHP' . $other . ' bugs</a>.</p>' . "\n"; -} -else { - echo '<p>Currently displaying all bugs. Display <a href="bugstats.php?phpver=3">only PHP3 bugs</a> or <a href="bugstats.php?phpver=4">only PHP4 bugs</a>.</p>' . "\n"; - -} - -mysql_connect("localhost","nobody",""); -mysql_select_db("php3"); - -$query = "SELECT *,UNIX_TIMESTAMP(ts2)-UNIX_TIMESTAMP(ts1) AS timetoclose FROM bugdb"; - -if ($phpver > 0) { - $query .= " WHERE SUBSTRING(php_version,1,1) = '$phpver'"; -} - -$query .= " ORDER BY bug_type"; - -$result = mysql_unbuffered_query($query); - -while($row=mysql_fetch_array($result)) { - $bug_type['all'][$row[bug_type]]++; - switch (strtolower($row[status])) { - case "closed": - if ($row[timetoclose] > 0) { - $time_to_close[] = $row[timetoclose]; - } - /* falls through */ - case "bogus": - $closed_by[$row[dev_id]]++; - break; - } - $bug_type[strtolower($row[status])][$row[bug_type]]++; - $bug_type[strtolower($row[status])]['all']++; - $email[$row[email]]++; - $php_version[$row[php_version]]++; - $php_os[$row[php_os]]++; - $status[$row[status]]++; - $total++; -} - -function bugstats($status, $type) { - global $bug_type, $phpver; - if ($bug_type[$status][$type] > 0) { - return '<a href="bugs.php?cmd=display&status=' . ucfirst($status) . "&phpver=" . $phpver . '&bug_type=' . ($type == 'all' ? 'Any' : urlencode($type)) . '&by=Any">' . $bug_type[$status][$type] . "</a>\n"; - } -} - -mysql_freeresult($result); -echo "<table>\n"; - -/* prepare for sorting by bug report count */ -foreach($bug_type['all'] as $type => $value) { - if(!isset($bug_type['closed'][$type])) $bug_type['closed'][$type] = 0; - if(!isset($bug_type['bogus'][$type])) $bug_type['bogus'][$type] = 0; - if(!isset($bug_type['open'][$type])) $bug_type['open'][$type] = 0; - if(!isset($bug_type['critical'][$type])) $bug_type['critical'][$type] = 0; - if(!isset($bug_type['analyzed'][$type])) $bug_type['analyzed'][$type] = 0; - if(!isset($bug_type['suspended'][$type])) $bug_type['suspended'][$type] = 0; - if(!isset($bug_type['duplicate'][$type])) $bug_type['duplicate'][$type] = 0; - if(!isset($bug_type['assigned'][$type])) $bug_type['assigned'][$type] = 0; - if(!isset($bug_type['feedback'][$type])) $bug_type['feedback'][$type] = 0; -} - -if(!isset($sort_by)) $sort_by = 'open'; -if(!isset($rev)) $rev = 1; - -if($rev == 1) { - arsort($bug_type[$sort_by]); -} else { - asort($bug_type[$sort_by]); -} -reset($bug_type); - -function sort_url($type) { - global $sort_by,$rev,$phpver; - if($type == $sort_by) { - $reve = ($rev == 1) ? 0 : 1; - } else { - $reve = 1; - } - $ver = ($phpver != 0) ? "phpver=$phpver&" : ''; - return '<A href="./bugstats.php?'.$ver.'sort_by='.$type.'&rev='.$reve.'">'.ucfirst($type).'</a>'; -} - -echo "<tr bgcolor=#aabbcc><th align=right>Total bug entries in system:</th><td>$total</td>"; -echo "<th>".sort_url('closed')."</th>"; -echo "<th>".sort_url('open')."</th>"; -echo "<th>".sort_url('critical')."</th>"; -echo "<th>".sort_url('analyzed')."</th>"; -echo "<th>".sort_url('suspended')."</th>"; -echo "<th>".sort_url('duplicate')."</th>"; -echo "<th>".sort_url('assigned')."</th>"; -echo "<th>".sort_url('feedback')."</th>"; -echo "<th>".sort_url('bogus')."</th>"; -echo "</tr>\n"; - -echo "<tr><th align=right bgcolor=#aabbcc>All:</th>", - "<td align=center bgcolor=#ccddee>$total</td>", - "<td align=center bgcolor=#ddeeff>".bugstats('closed','all')." </td>", - "<td align=center bgcolor=#ccddee>".bugstats('open', 'all')." </td>", - "<td align=center bgcolor=#ddeeff>".bugstats('critical', 'all')." </td>", - "<td align=center bgcolor=#ccddee>".bugstats('analyzed', 'all')." </td>", - "<td align=center bgcolor=#ddeeff>".bugstats('suspended','all')." </td>", - "<td align=center bgcolor=#ccddee>".bugstats('duplicate', 'all')." </td>", - "<td align=center bgcolor=#ddeeff>".bugstats('assigned','all')." </td>", - "<td align=center bgcolor=#ccddee>".bugstats('feedback','all')." </td>", - "<td align=center bgcolor=#ddeeff>".bugstats('bogus', 'all')." </td>", - "</tr>\n"; - -foreach ($bug_type[$sort_by] as $type => $value) { - if(($bug_type['open'][$type] > 0 || - $bug_type['critical'][$type] > 0 || - $bug_type['analyzed'][$type] > 0 || - $bug_type['suspended'][$type] > 0 || - $bug_type['duplicate'][$type] > 0 || - $bug_type['assigned'][$type] > 0 || - $bug_type['feedback'][$type] > 0 ) && $type != 'all') - { - echo "<tr><th align=right bgcolor=#aabbcc>$type:</th>", - "<td align=center bgcolor=#ccddee>".$bug_type['all'][$type]."</td>", - "<td align=center bgcolor=#ddeeff>".bugstats('closed', $type)." </td>", - "<td align=center bgcolor=#ccddee>".bugstats('open', $type)." </td>", - "<td align=center bgcolor=#ddeeff>".bugstats('critical',$type)." </td>", - "<td align=center bgcolor=#ccddee>".bugstats('analyzed', $type)." </td>", - "<td align=center bgcolor=#ddeeff>".bugstats('suspended',$type)." </td>", - "<td align=center bgcolor=#ccddee>".bugstats('duplicate', $type)." </td>", - "<td align=center bgcolor=#ddeeff>".bugstats('assigned',$type)." </td>", - "<td align=center bgcolor=#ccddee>".bugstats('feedback',$type)." </td>", - "<td align=center bgcolor=#ddeeff>".bugstats('bogus', $type)." </td>", - "</tr>\n"; - } -} - -echo "</table>\n"; - -sort($time_to_close); -$c=count($time_to_close); -$sum=0; -for($i=0;$i<$c;$i++) { - $sum+=$time_to_close[$i]; -} -$median = $time_to_close[(int)($c/2)]; - -echo "<p><b>Bug Report Time to Close Stats</b>\n"; -echo "<table>\n"; -echo "<tr bgcolor=#aabbcc><th align=right>Average life of a report:</th><td bgcolor=#ccddee>".ShowTime((int)($sum/$c))."</td></tr>\n"; -echo "<tr bgcolor=#aabbcc><th align=right>Median life of a report:</th><td bgcolor=#ccddee>".ShowTime($median)."</td></tr>\n"; -echo "<tr bgcolor=#aabbcc><th align=right>Slowest report closure:</th><td bgcolor=#ccddee>".ShowTime($time_to_close[$c-1])."</td></tr>\n"; -echo "<tr bgcolor=#aabbcc><th align=right>Quickest report closure:</th><td bgcolor=#ccddee>".ShowTime($time_to_close[0])."</td></tr>\n"; -echo "</table>\n"; - -echo "<p><b>Who is closing the bug reports?</b>\n"; -echo "<table>\n"; -arsort($closed_by); -$i=0; -while($i < 20) { - list($who,$value)=each($closed_by); - echo "<tr bgcolor=#aabbcc><th>$who</th><td bgcolor=#ccddee>$value</td></tr>\n"; - $i++; -} -echo "</table>\n"; - -commonFooter(); +header("Location: http://bugs.php.net/bugstats.php"); ?>
Index: phpweb/bugs.php diff -u phpweb/bugs.php:1.176 phpweb/bugs.php:1.177 --- phpweb/bugs.php:1.176 Wed Sep 19 13:54:05 2001 +++ phpweb/bugs.php Fri Sep 21 14:30:13 2001 @@ -1,808 +1,3 @@ -<?php /* vim: set noet ts=4 sw=4: : */ -require_once 'prepend.inc'; - -require 'cvs-auth.inc'; - -if (isset($save) && isset($pw)) { # non-developers don't have $user set - setcookie("MAGIC_COOKIE",base64_encode("$user:$pw"),time()+3600*24*12,'/'); -} -if (isset($MAGIC_COOKIE) && !isset($user) && !isset($pw)) { - list($user,$pw) = explode(":", base64_decode($MAGIC_COOKIE)); -} - -/* See the end of the script for the table layout. */ - -$mail_bugs_to = "php-dev@lists.php.net"; - -if (is_primary_site() || strstr($MYSITE,"localhost")) { - $dbhost = "localhost"; - $dbuser = "nobody"; - $dbpwd = ""; -} else { - if (is_backup_primary()) { - commonHeader("Service Unavailable");?> -<p>Sorry, the bug database is temporarily unavailable.</p> <?php - commonFooter(); - exit; - } - header("Location: http://www.php.net/bugs.php" . ($QUERY_STRING ? "?$QUERY_STRING" : "")); - exit; -} - -mysql_connect($dbhost,$dbuser,$dbpwd) - or die("Unable to connect to SQL server."); -mysql_select_db("php3"); - -commonHeader("Bug Reporting"); -echo "<font size=\"-1\">\n"; - -?> -<table bgcolor="#ccccff" border="0" cellspacing="1"> - <form method="POST" action="<?php echo $PHP_SELF?>"> - <input type="hidden" name="cmd" value="display" /> - <tr> - <td><input type="submit" value="Display" /></td> - <td><select name="status"><?php show_state_options($status);?></select></td> - <td align="right">bugs of type: </td> - <td><select name="bug_type"><?php show_types($bug_type,1);?></select></td> - <td align="right">reported since:</td> - <td><select name="bug_age"><?php show_byage_options($bug_age);?></select></td> - </tr> - <tr> - <td colspan=2 align=right>OS (substr search):</td> - <td colspan="4"><input type="text" name="php_os" value="<?echo htmlspecialchars($php_os);?>"> - </tr> - <tr> - <td align="right">with text:</td> - <td colspan="3"><input type="text" name="search_for" value="<?echo htmlspecialchars($search_for);?>"> in the report or email address</td> - <td colspan="2">max. <select name="limit"><?php show_limit_options($limit);?></select> entries / page.</td> - </tr> - </form> - <tr> - <td bgcolor="#000000" colspan="6"><?echo spacer(1,1);?></td> - </tr> - <form method="GET" action="<?php echo $PHP_SELF;?>"> - <tr> - <td align="right"><input type="submit" value="Edit" /></td> - <td align="right">bug number:</td> - <td colspan="3"><input type="text" name="id" value="<?echo $id?>"></td> - <input type="hidden" name="edit" value="<?php echo isset($MAGIC_COOKIE) ? 1 : 2;?>"> - <td align="center"><a href="bugstats.php">Statistics</a></td> - </tr> - </form> -</table> - -<?php - -echo hdelim(); - -if ($cmd == "send") { - if (incoming_details_are_valid(1,1)) { - $ret = mysql_query("INSERT INTO bugdb (bug_type,email,sdesc,ldesc,php_version,php_os,status,ts1,passwd) VALUES ('$bug_type','$email','$sdesc','$ldesc','$php_version','$php_os','Open',NOW(),'$passwd')"); - - $cid = mysql_insert_id(); - - $report = ""; - - $ldesc = stripslashes($ldesc); - $sdesc = stripslashes($sdesc); - - echo "<pre>\n"; - - $report .= "From: $email\n"; - $report .= "Operating system: $php_os\n"; - $report .= "PHP version: $php_version\n"; - $report .= "PHP Bug Type: $bug_type\n"; - $report .= "Bug description: "; - - echo $report; - - echo htmlspecialchars($sdesc), "\n\n"; - - echo wordwrap(htmlspecialchars($ldesc)); - - echo "</pre>\n"; - - $ascii_report = "$report$sdesc\n\n".wordwrap($ldesc); - $ascii_report.= "\n-- \nEdit bug report at: http://bugs.php.net/?id=$cid&edit=1\n"; - - list($mailto,$mailfrom) = get_bugtype_mail($bug_type); - - if (mail($mailto, "Bug #$cid: $sdesc", $ascii_report, "From: $email\nX-PHP-Bug: $cid\nMessage-ID: <bug-$cid@bugs.php.net>")) { - @mail($email, "Bug #$cid: $sdesc", $ascii_report, "From: PHP Bug Database <$mailfrom>\nX-PHP-Bug: $cid\nMessage-ID: <bug-$cid@bugs.php.net>"); - echo "<p><h2>Mail sent to $mailto...</h2></p>\n"; - echo "<p>Thank you for your help!</p>"; - echo "<p><i>The password for this report is</i>: <b>".htmlentities($passwd)."</b><br>"; - echo "If the status of the bug report you submitted\n"; - echo "changes, you will be notified. You may return here and check on the status\n"; - echo "or update your report at any time. The URL for your bug report is: <a href=\"http://bugs.php.net/?id=$cid\">"; - echo "http://bugs.php.net/?id=$cid</a></p>\n"; - } else { - echo "<p><h2>Mail not sent!</h2>\n"; - echo "Please send this page in a mail to " . - "<a href=\"mailto:$mailto\">$mailto</a> manually.</p>\n"; - } - - commonFooter(); - exit; - } - -} -elseif ($cmd == "display") { - if (!$bug_type) $bug_type = "Any"; - - $query = "SELECT *,TO_DAYS(NOW())-TO_DAYS(ts2) AS unchanged FROM bugdb "; - - if($bug_type=="Any") { - $where_clause = "WHERE bug_type != 'Feature/Change Request'"; - } else { - $where_clause = "WHERE bug_type = '$bug_type'"; - } - - /* Treat assigned, analyzed and critical bugs as open */ - if ($status == "Open") { - $where_clause .= " AND (status='Open' OR status='Assigned' OR status='Analyzed' OR status='Critical')"; - } elseif ($status == "Old Feedback") { - $where_clause .= " AND status='Feedback' AND TO_DAYS(NOW())-TO_DAYS(ts2)>60"; - } elseif ($status == "Stale") { - $where_clause .= " AND status != 'Closed' AND status != 'Duplicate' AND status != 'Bogus' AND TO_DAYS(NOW())-TO_DAYS(ts2) > 30"; - } elseif ($status != "All") { - $where_clause .= " AND status='$status'"; - } - - if (strlen($search_for)) { - $where_clause .= " AND (email like '%$search_for%' OR sdesc LIKE '%$search_for%' OR ldesc LIKE '%$search_for%')"; - } - - if ($bug_age) { - $where_clause .= " AND ts1 >= DATE_SUB(NOW(), INTERVAL $bug_age DAY)"; - } - - if ($php_os) { - $where_clause .= " AND php_os like '%$php_os%'"; - } - - if (!isset($phpver)) $phpver = "4"; - if ($phpver) $where_clause .= " AND SUBSTRING(php_version,1,1) = '$phpver'"; - - /* not in the header, but someone can build a query manually with it. */ - if(strlen($by) and $by!='Any') - $where_clause .= " AND dev_id = '$by' "; - - $query .= "$where_clause "; - - if (!$order_by) $order_by = "id"; - if (!$direction) $direction = "ASC"; - - if ($reorder_by) { - if ($order_by == $reorder_by) { - $direction = $direction == "ASC" ? "DESC" : "ASC"; - } - else { - $direction = "ASC"; - } - $order_by = $reorder_by; - } - - $query .= " ORDER BY $order_by $direction"; - - if (!$begin) $begin = 0; - if (!isset($limit)) $limit = 30; - - if($limit!='All') $query .= " LIMIT $begin,$limit"; - - $res = @mysql_query($query); - if (!$res) die(htmlspecialchars($query)."<br>".mysql_error()); - - $rows = mysql_numrows($res); - if (!$rows) { - echo "<h2 class=\"error\">No bugs with the specified criteria were found.</h2>"; - } - else { - $link = "$PHP_SELF?cmd=display&bug_type=" . urlencode ($bug_type) . "&status=$status&search_for=".htmlspecialchars(stripslashes($search_for))."&php_os=".htmlspecialchars(stripslashes($php_os))."&bug_age=$bug_age&by=$by&order_by=$order_by&direction=$direction&phpver=$phpver&limit=$limit"; -?> -<table align="center" border="0" cellspacing="2" width="95%"> - <?php show_prev_next($begin,$rows,$link,$limit);?> - <tr bgcolor="#aaaaaa"> - <th><a href="<?php echo $link;?>&reorder_by=id">ID#</a></th> -<?php if ($bug_type == "Any") {?> - <th><a href="<?php echo $link;?>&reorder_by=bug_type">Type</a></th> -<?php }?> - <th><a href="<?php echo $link;?>&reorder_by=status">Status</a></th> - <th><a href="<?php echo $link;?>&reorder_by=php_version">Version</a></th> - <th><a href="<?php echo $link;?>&reorder_by=php_os">OS</a></th> - <th><a href="<?php echo $link;?>&reorder_by=sdesc">Description</a></th> - <th>Mod</th> - <th><a href="<?php echo $link;?>&reorder_by=assign">Assigned</a></th> - </tr> -<?php - while ($row = mysql_fetch_array($res)) { - echo '<tr bgcolor="', get_row_color($row), '">'; - echo "<td><a href=\"$PHP_SELF?id=$row[id]\">$row[id]</a></td>"; - if ($bug_type == "Any") { - echo "<td>", htmlspecialchars($row[bug_type]), "</td>"; - } - echo "<td>", htmlspecialchars($row[status]); - if ($row[status] == "Feedback" && $row[unchanged] > 0) { - printf ("<br>%d day%s", $row[unchanged], $row[unchanged] > 1 ? "s" : ""); - } - echo "</td>"; - echo "<td>", htmlspecialchars($row[php_version]), "</td>"; - echo "<td>", $row[php_os] ? htmlspecialchars($row[php_os]) : " ", "</td>"; - echo "<td>", $row[sdesc] ? htmlspecialchars($row[sdesc]) : " ", "</td>"; - echo "<td align=\"center\"><a href=\"$PHP_SELF?id=$row[id]&edit=1\"><img src=\"gifs/small_submit.gif\" border=\"0\" width=\"11\" height=\"11\" alt=\"edit\" /></a></td>"; - echo "<td>", $row[assign] ? htmlspecialchars($row[assign]) : " ", "</td>"; - echo "</tr>\n"; - } - - show_prev_next($begin,$rows,$link,$limit); -?> -</table> -<?php - } - echo "<p align=\"center\"><a href=\"$PHP_SELF\">Submit a Bug Report</a></p>"; - commonFooter(); - exit; - -} elseif (!isset($cmd) && isset($id)) { - - # fetch the original bug into $original - $res = mysql_query("SELECT * FROM bugdb WHERE id=$id"); - if ($res) $original = mysql_fetch_array($res); - if (!$res || !$original) { - echo "<h1 class=\"error\">No such bug #$id!</h1>"; - commonFooter(); - exit; - } - - # handle any updates, displaying errors if there were any - $success = 0; - - if ($modify == "user") { - if (!$original[passwd] || $original[passwd] != stripslashes($pw)) { - echo "<h2 class=\"error\">The password you supplied was incorrect.</h2>\n"; - } - elseif (incoming_details_are_valid()) { - /* update bug record */ - $success = @mysql_query("UPDATE bugdb SET status='$status', bug_type='$bug_type', php_version='$php_version', php_os='$php_os', ts2=NOW(), email='$email' WHERE id=$id"); - - /* add comment */ - if ($success && !empty($ncomment)) { - $success = @mysql_query("INSERT INTO bugdb_comments (bug, email, ts, comment) VALUES ($id,'$email',NOW(),'$ncomment')"); - } - } - $from = $email; - } - elseif ($modify == "developer") { - if (!verify_password($user,$pw)) { - echo "<h2 class=\"error\">The username or password you supplied was incorrect.</h2>\n"; - } - elseif (incoming_details_are_valid()) { - $success = @mysql_query("UPDATE bugdb SET sdesc='$sdesc',status='$status', bug_type='$bug_type', assign='$assign', dev_id='$user', php_version='$php_version', php_os='$php_os', ts2=NOW() WHERE id=$id"); - if ($success && !empty($ncomment)) { - $success = @mysql_query("INSERT INTO bugdb_comments (bug, email, ts, comment) VALUES ($id,'$user@php.net',NOW(),'$ncomment')"); - } - } - $from = "$user@php.net"; - } - - if ($modify && $success) { - # mail out the updated bug - $text = "ID: $id\n"; - if ($modify == "developer") { - $text .= "Updated by: $user\n"; - } - else { - $text .= "User updated by: $email\n"; - } - - $text.= "Reported By: $original[email]\n"; - - if (stripslashes($sdesc) != $original[sdesc]) - $text .= "Old Summary: $original[sdesc]\n"; - - if ($status!=$original[status]) - $text .= "Old Status: $original[status]\n"; - $text.= "Status: $status\n"; - - if ($bug_type != $original[bug_type]) - $text .= "Old Bug Type: $original[bug_type]\n"; - $text.= "Bug Type: $bug_type\n"; - - if ($php_os != $original[php_os]) - $text .= "Old Operating System: $original[php_os]\n"; - $text.= "Operating System: $php_os\n"; - - if ($php_version != $original[php_version]) - $text .= "Old PHP Version: $original[php_version]\n"; - $text.= "PHP Version: $php_version\n"; - - if ($assign != $original[assign]) - $text .= "Old Assigned To: $original[assign]\n"; - if ($assign || $original[assign]) - $text.= "Assigned To: $assign\n"; - - if ($ncomment) - $text .= "New Comment:\n\n".stripslashes($ncomment); - - $text.= get_old_comments($id); - - $user_text = $text . "\n\nATTENTION! Do NOT reply to this email!\n"; - $user_text.= "To reply, use the web interface found at http://bugs.php.net/?id=$id&edit=2\n"; - - $dev_text .= $text . "\n\nEdit this bug report at http://bugs.php.net/?id=$id&edit=1\n"; - - list($mailto,$mailfrom) = get_bugtype_mail($bug_type); - - /* send mail if status was changed or there is a comment */ - if ($status != $original[status] || $ncomment != "") { - @mail($original[email], "Bug #$id Updated: ".stripslashes($sdesc), $user_text, "From: Bug Database <$mailfrom>\nX-PHP-Bug: $id\nIn-Reply-To: <bug-$id@bugs.php.net>"); - @mail($mailto, "Bug #$id Updated: ".stripslashes($sdesc), $dev_text, "From: $from\nX-PHP-Bug: $id\nIn-Reply-To: <bug-$id@bugs.php.net>"); - } - - # display a happy success message - echo "<h2>Bug #$id updated successfully.</h2>\n"; - - unset($ncomment); - } - elseif ($modify && !$success) { - echo "<h2 class=\"error\">Something went wrong updating the database.</h2>"; - } - - /* DISPLAY BUG */ - if ($edit) { - echo "<form method=\"POST\" action=\"$PHP_SELF?id=$id\">\n"; - echo "<input type=\"hidden\" name=\"edit\" value=\"$edit\">\n"; - } - if ($edit==1) - echo '<input type="hidden" name="modify" value="developer">',"\n"; - if ($edit==2) - echo '<input type="hidden" name="modify" value="user">',"\n"; -?> -<br> -<h1>Bug id #<?php echo $id?></h1> -<table border="0"> - <tr> - <th align="right">Status:</th> - <?php if ($edit) {?> - <td><select name="status"><?php show_state_options($status,$edit,$original[status])?></select> - <?php if ($edit == 1) {?> - <b>Assign To:</b> <input type="text" name="assign" size="10" maxlength="16" value="<?php echo $assign ? htmlspecialchars(stripslashes($assign)) : htmlspecialchars($original[assign])?>"> <input type="submit" value="Submit Changes"></td> - <small><a href="<?php echo "$PHP_SELF?id=$id";?>&edit=2"><tt>User Modify</tt></a></small></td> - <?php } else { ?> - <small><a href="<?php echo "$PHP_SELF?id=$id";?>&edit=1"><tt>Dev Modify</tt></a></small></td> - <?php }?> - <?php } else { ?> - <td><?php echo $original[status]?></td> - <td><td><small><a href="<?php echo "$PHP_SELF?id=$id";?>&edit=2"><tt>User Modify</tt></a> <a href="<?php echo "$PHP_SELF?id=$id";?>&edit=1"><tt>Dev Modify</tt></a></small></td> - <?php }?> - </tr> - <tr> - <th align="right">From:</th> - <?php if ($edit) {?> - <td><input type="text" name="email" size="20" maxlength="40" value="<?php echo $email ? htmlspecialchars(stripslashes($email)) : htmlspecialchars($original[email])?>"></td> - <?php } else { ?> - <td><?php echo $original[email]?></td> - <?php }?> - </tr> - <tr> - <th align="right">Reported:</th> - <td><?php echo $original[ts1]?></td> - </tr> - <tr> - <th align="right">Type:</th> - <?php if ($edit) {?> - <td><select name="bug_type"><?php show_types($bug_type,0,$original[bug_type])?></select></td> - <?php } else { ?> - <td><?php echo $original[bug_type]?></td> - <?php }?> - </tr> - <tr> - <th align="right">OS:</th> - <?php if ($edit) {?> - <td><input type="text" name="php_os" size="20" maxlength="32" value="<?php echo $php_os ? htmlspecialchars(stripslashes($php_os)) : htmlspecialchars($original[php_os])?>"></td> - <?php } else { ?> - <td><?php echo $original[php_os]?></td> - <?php }?> - </tr> - <tr> - <th align="right">PHP Version:</th> - <?php if ($edit) {?> - <td><input type="text" name="php_version" size="20" maxlength="100" value="<?php echo $php_version ? htmlspecialchars(stripslashes($php_version)) : htmlspecialchars($original[php_version])?>"></td> - <?php } else { ?> - <td><?php echo $original[php_version]?></td> - <?php }?> - </tr> -<?php if ($original[assign] && !$edit) {?> - <tr> - <th align="right">Assigned To:</th> - <td><?php echo $original[assign]?></td> - </tr> -<?php }?> - <tr> - <th align="right">Summary:</th> - <?php if ($edit) {?> - <td><input type="text" name="sdesc" size="40" maxlength="80" value="<?php echo $sdesc ? htmlspecialchars(stripslashes($sdesc)) : htmlspecialchars($original[sdesc])?>"></td> - <?php } else { ?> - <td><?php echo $original[sdesc]?></td> - <?php }?> - </tr> -<?php if ($edit) {?> - <tr> - <th align="right">New Comment:</th> - </tr> - <tr> - <td colspan="2"> - <textarea name="ncomment" wrap="physical" cols="60" rows="15"><?php echo htmlspecialchars(stripslashes($ncomment));?></textarea> - </td> - </tr> -<?php if ($edit == 1) { /* developer */?> - <tr> - <th align="right">CVS Username:</th> - <td> - <input type="text" name="user" size="10" maxlength="20" value="<?php echo htmlspecialchars(stripslashes($user));?>"> - </td> - </tr> -<?php }?> - <tr> - <th align="right">Password:</th> - <td> - <input type="password" name="pw" size="10" maxlength="20" value="<?php echo htmlspecialchars(stripslashes($pw));?>"> - <?php if ($edit == 2) {?> - [<a href="bug-pwd-finder.php">Lost your password?</a>] - <?php }?> - </td> - </tr> - <tr> - <th align="right">Remember me:</th> - <td> - <input type="checkbox" name="save"> - (Check here to remember your password for next time.) - </td> - </tr> - <tr> - <td colspan="2"> - - <input type="submit" value="Submit Changes"> - </td> - </tr> -<?php }?> -</table> -<?php - if ($edit) echo "</form>\n"; - - echo hdelim(); - - /* ORIGINAL REPORT */ - echo "<b><i>[$original[ts1]] $original[email]</i></b><br>\n"; - echo "<blockquote><blockquote><pre>"; - echo wordwrap(addlinks($original[ldesc]),90); - echo "</pre></blockquote></blockquote>\n"; - - /* COMMENTS */ - $query = "SELECT * FROM bugdb_comments WHERE bug=$id ORDER BY ts"; - if ($comresult = mysql_query($query)) { - while ($com = mysql_fetch_array($comresult)) { - echo "<b><i>[$com[ts]] $com[email]</i></b><br>\n"; - echo "<blockquote><blockquote><pre>"; - echo wordwrap(addlinks($com[comment]),90); - echo "</pre></blockquote></blockquote>\n"; - } - } - - commonFooter(); - exit; - -} elseif (!isset($cmd)) { -?> - -<h1>Report a Bug</h1> - -<br /> -<strong>Please</strong> read the <a href="bugs-dos-and-donts.php">Dos & -Don'ts</a> before submitting a bug report!<br /> -If you are not sure if the problem you're experiencing is a bug at all -it most likely isn't. Please ask support questions on the -<a href="support.php">mailing lists</a>. -<br /> - -<?php -} - -include 'bugform.inc'; -?> -</font> -<?php -commonFooter(); - -# FUNCTIONS - -function show_byage_options($current) -{ - $opts = array( - "0" => "the beginning", - "1" => "yesterday", - "7" => "7 days ago", - "15" => "15 days ago", - "30" => "30 days ago", - "90" => "90 days ago", - ); - while (list($k,$v) = each($opts)) { - echo "<option value=\"$k\"", ($current==$k ? " selected" : ""), - ">$v</option>\n"; - } -} - -function show_limit_options($limit=30) -{ - for($i=10;$i<100;) { - echo "<option value=\"$i\"", ($limit==$i ? " selected" : ""),">$i</option>\n"; - $i=$i+10; - } - echo '<option value="All"', ($limit=='All' ? " selected": ""),">All</option>\n"; -} - -function show_state_options($state, $user_mode=0, $default="") -{ - if (!$state && !$default) { - $state = "Open"; - } - elseif (!$state) { - $state = $default; - } - - $state_types = array ( - "Open" => 2, - "Closed" => 2, - "Duplicate" => 2, - "Critical" => 1, - "Assigned" => 1, - "Analyzed" => 1, - "Suspended" => 1, - "Feedback" => 1, - "Old Feedback" => 0, - "Stale" => 0, - "Bogus" => 1, - "All" => 0 - ); - - /* regular users can only pick states with type 2 for unclosed bugs */ - if($state != "All" && $state_types[$state] == 1 && $user_mode == 2) { - /* If state was 'Feedback', set state to 'Open' automatically. */ - if($state == "Feedback") { - echo "<option>Open</option>\n"; - } else { - echo "<option>$state</option>\n"; - } - if($state != "Bogus") echo "<option>Closed</option>\n"; - } else { - foreach($state_types as $type => $mode) { - if ($mode >= $user_mode) { - echo "<option"; - if($type == $state) echo " selected"; - echo ">$type</option>\n"; - } - } - } -} - -function show_version_options($current,$default="") -{ - $versions = array("4.0.6","4.0.5","4.0.4pl1","4.0.4","4.0CVS-".date("Y-m-d")); - while (list(,$v) = each($versions)) { - echo "<option", ($current == $v ? " selected" : ""), ">$v</option>\n"; - if ($current == $v) $use++; - } - if (!$use && $current) echo "<option selected>$current</option>\n"; - echo "<option value=\"earlier\">Earlier? Upgrade first!</option>\n"; -} - -function show_types($current,$show_any,$default="") -{ - include 'bugtypes.inc'; - - if (!$current && !$default && !$show_any) { - echo "<option value=\"Unknown/Other Function\">--Please Select--</option>\n"; - } - elseif (!$current && $show_any) { - $current = "Any"; - } - elseif (!$current) { - $current = $default; - } - - while (list($key,$value) = each($items)) { - if ($show_any || $key != "Any") { - echo "<option value=\"$key\"", - ($key == $current? " selected" : ""), - ">$value</option>\n"; - if ($key == $current) $use++; - } - } - if (!$use && $current) { - echo "<option selected>$current</option>\n"; - } -} - -function get_old_comments ($bug_id) -{ - $divider = str_repeat("-", 72); - $max_message_length = 10 * 1024; - $max_comments = 5; - $output = ""; $count = 0; - - $res = @mysql_query("SELECT ts, email, comment FROM bugdb_comments WHERE bug=$bug_id ORDER BY ts DESC"); - - if (!$res) return ""; - - # skip the most recent (this is get_old_comments, not get_all_comments!) - $row = mysql_fetch_row($res); - if (!$row) return ""; - - while (($row = mysql_fetch_row($res)) && strlen($output) < $max_message_length && $count++ < $max_comments) { - $output .= "[$row[0]] $row[1]\n\n$row[2]\n\n$divider\n\n"; - } - - if (strlen($output) < $max_message_length && $count < $max_comments) { - $res=@mysql_query("SELECT ts1,email,ldesc FROM bugdb WHERE id=$bug_id"); - if (!$res) return $output; - $row = mysql_fetch_row($res); - if (!$row) return $output; - return ("\n\nPrevious Comments:\n$divider\n\n" . $output . "[$row[0]] $row[1]\n\n$row[2]\n\n$divider\n\n"); - } - else { - return ("\n\nPrevious Comments:\n$divider\n\n" . $output . "The remainder of the comments for this report are too long. To view\nthe rest of the comments, please view the bug report online at\n http://bugs.php.net/?id=$bug_id\n"); - } - - return ""; -} - -function addlinks($text) -{ - $text = htmlspecialchars($text); - $text = preg_replace("/((mailto|http|ftp|nntp|news):.+?)(>|\\s|\\)|\\.\\s|$)/i","<a href=\"\\1\">\\1</a>\\3",$text); - # what the heck is this for? - $text = preg_replace("/[.,]?-=-\"/", '"', $text); - return $text; -} - -/* validate an incoming bug report */ -function incoming_details_are_valid($require_ldesc=0,$require_passwd=0) -{ - global $email,$bug_type,$php_version,$sdesc,$ldesc,$passwd; - - $valid = 1; - if(!preg_match("/[.\\w+-]+@[.\\w-]+\\.\\w{2,}/i",$email)) { - echo "<h2 class=\"error\">Please provide a valid email address.</h2>"; - $valid = 0; - } - - if ($bug_type=="none") { - echo "<h2 class=\"error\">Please select an appropriate bug type.</h2>"; - $valid = 0; - } - - if ($php_version=='earlier') { - echo "<h2 class=\"error\">Please select a valid PHP version. If your PHP version is too old, please upgrade first and see if the problem has not already been fixed.</h2>"; - $valid = 0; - } - - if (!$sdesc) { - echo "<h2 class=\"error\">You must supply a short description of the bug you are reporting.</h2>"; - $valid = 0; - } - - if ($require_ldesc && !$ldesc) { - echo "<h2 class=\"error\">You must supply a long description of the bug you are reporting.</h2>"; - $valid = 0; - } - - if ($require_passwd && empty($passwd)) { - echo "<h2 class=\"error\">You must supply a password for this bug report.</h2>"; - $valid = 0; - } - - return $valid; -} - -function get_bugtype_mail($bug_type) -{ - global $mail_bugs_to; - - if (eregi("documentation", $bug_type)) { - return array("$mail_bugs_to,phpdoc@lists.php.net",$mail_bugs_to); - } - elseif (eregi("website", $bug_type)) { - return array("php-mirrors@lists.php.net","php-mirrors@lists.php.net"); - } - else { - return array($mail_bugs_to,$mail_bugs_to); - } -} - -function get_row_color($row) -{ - if ($row["bug_type"]=="Feature/Change Request") { - return "#aaaaaa"; - } - switch($row["status"]) { - case "Open": - return "#ffbbaa"; - break; - case "Critical": - return "#ff0000"; - break; - case "Closed": - return "#aaffbb"; - break; - case "Suspended": - return "#ffccbb"; - break; - case "Assigned": - return "#bbaaff"; - break; - case "Feedback": - return "#bbeeff"; - break; - case "Analyzed": - return "#99bbaa"; - break; - case "Duplicate": - return "#bbbbbb"; - break; - default: - return "#aaaaaa"; - break; - } -} - -function show_prev_next($begin,$rows,$link,$limit) -{ - if($limit=='All') return; - if ($begin == 0 && $rows < $limit) return; - echo "<tr bgcolor=\"#cccccc\"><td align=\"center\" colspan=\"9\">"; - echo '<table border="0" cellspacing="0" cellpadding="0" width="100%"><tr>'; - if ($begin > 0) { - echo "<td align=\"left\"><a href=\"$link&begin=",max(0,$begin-$limit),"\">« Show Previous $limit Entries</a></td>"; - } - if ($rows >= $limit) { - echo "<td align=\"right\"><a href=\"$link&begin=",$begin+$limit,"\">Show Next $limit Entries »</a></td>"; - } - echo "</tr></table></td></tr>"; -} - -/* -# MySQL dump 4.0 -# -# Host: localhost Database: php3 -#-------------------------------------------------------- -DROP table bugdb; - -CREATE TABLE bugdb ( - id int(8) NOT NULL AUTO_INCREMENT, - bug_type char(32), - email varchar(40) NOT NULL, - sdesc varchar(80), - ldesc text, - php_version char(16), - php_os varchar(32), - status varchar(16), - ts1 datetime, # bug created date - ts2 datetime, # bug last updated date - dev_id varchar(16),# developer who last commented - assign varchar(16), - passwd varchar(20),# user password - PRIMARY KEY (id) -); - -CREATE TABLE bugdb_comments ( - id int(8) NOT NULL AUTO_INCREMENT, - bug int(8) NOT NULL, - email varchar(40) NOT NULL, - ts datetime NOT NULL, - comment text, - PRIMARY KEY (id) -); -*/ +header("Location: http://bugs.php.net/" . ($QUERY_STRING ? "?$QUERY_STRING" : "")); ?> Index: phpweb/bugstats.php diff -u phpweb/bugstats.php:1.32 phpweb/bugstats.php:1.33 --- phpweb/bugstats.php:1.32 Wed Sep 19 14:04:02 2001 +++ phpweb/bugstats.php Fri Sep 21 14:30:13 2001 @@ -1,203 +1,3 @@ <?php -require_once 'prepend.inc'; - -if(!is_primary_site()) { - if (is_backup_primary()) { - commonHeader("Service Unavailable");?> -<p>Sorry, the bug database is temporarily unavailable.</p> -<?php - commonFooter(); - exit; - } - - header("Location: http://www.php.net/bugstats.php"); - exit; -} - -function ShowTime($sec) { - if($sec<60) { - return "$sec seconds"; - } else if($sec<120) { - return (int)($sec/60)." minute ".($sec%60)." seconds"; - } else if($sec<3600) { - return (int)($sec/60)." minutes ".($sec%60)." seconds"; - } else if($sec<7200) { - return (int)($sec/3600)." hour ".(int)(($sec%3600)/60)." minutes ".(($sec%3600)%60)." seconds"; - } else if($sec<86400) { - return (int)($sec/3600)." hours ".(int)(($sec%3600)/60)." minutes ".(($sec%3600)%60)." seconds"; - } else if($sec<172800) { - return (int)($sec/86400)." day ".(int)(($sec%86400)/3600)." hours ".(int)((($sec%86400)%3600)/60)." minutes ".((($sec%86400)%3600)%60)." seconds"; - } else { - return (int)($sec/86400)." days ".(int)(($sec%86400)/3600)." hours ".(int)((($sec%86400)%3600)/60)." minutes ".((($sec%86400)%3600)%60)." seconds"; - } -} - -commonHeader("Bug Stats"); - -if ($phpver > 0) { - $other = ($phpver == 4 ? 3 : 4); - echo '<p>Currently displaying PHP'. $phpver . ' bugs only. Display <a href="bugstats.php">all bugs</a> or <a href="bugstats.php?phpver=' . $other . '">only PHP' . $other . ' bugs</a>.</p>' . "\n"; -} -else { - echo '<p>Currently displaying all bugs. Display <a href="bugstats.php?phpver=3">only PHP3 bugs</a> or <a href="bugstats.php?phpver=4">only PHP4 bugs</a>.</p>' . "\n"; - -} - -mysql_connect("localhost","nobody",""); -mysql_select_db("php3"); - -$query = "SELECT *,UNIX_TIMESTAMP(ts2)-UNIX_TIMESTAMP(ts1) AS timetoclose FROM bugdb"; - -if ($phpver > 0) { - $query .= " WHERE SUBSTRING(php_version,1,1) = '$phpver'"; -} - -$query .= " ORDER BY bug_type"; - -$result = mysql_unbuffered_query($query); - -while($row=mysql_fetch_array($result)) { - $bug_type['all'][$row[bug_type]]++; - switch (strtolower($row[status])) { - case "closed": - if ($row[timetoclose] > 0) { - $time_to_close[] = $row[timetoclose]; - } - /* falls through */ - case "bogus": - $closed_by[$row[dev_id]]++; - break; - } - $bug_type[strtolower($row[status])][$row[bug_type]]++; - $bug_type[strtolower($row[status])]['all']++; - $email[$row[email]]++; - $php_version[$row[php_version]]++; - $php_os[$row[php_os]]++; - $status[$row[status]]++; - $total++; -} - -function bugstats($status, $type) { - global $bug_type, $phpver; - if ($bug_type[$status][$type] > 0) { - return '<a href="bugs.php?cmd=display&status=' . ucfirst($status) . "&phpver=" . $phpver . '&bug_type=' . ($type == 'all' ? 'Any' : urlencode($type)) . '&by=Any">' . $bug_type[$status][$type] . "</a>\n"; - } -} - -mysql_freeresult($result); -echo "<table>\n"; - -/* prepare for sorting by bug report count */ -foreach($bug_type['all'] as $type => $value) { - if(!isset($bug_type['closed'][$type])) $bug_type['closed'][$type] = 0; - if(!isset($bug_type['bogus'][$type])) $bug_type['bogus'][$type] = 0; - if(!isset($bug_type['open'][$type])) $bug_type['open'][$type] = 0; - if(!isset($bug_type['critical'][$type])) $bug_type['critical'][$type] = 0; - if(!isset($bug_type['analyzed'][$type])) $bug_type['analyzed'][$type] = 0; - if(!isset($bug_type['suspended'][$type])) $bug_type['suspended'][$type] = 0; - if(!isset($bug_type['duplicate'][$type])) $bug_type['duplicate'][$type] = 0; - if(!isset($bug_type['assigned'][$type])) $bug_type['assigned'][$type] = 0; - if(!isset($bug_type['feedback'][$type])) $bug_type['feedback'][$type] = 0; -} - -if(!isset($sort_by)) $sort_by = 'open'; -if(!isset($rev)) $rev = 1; - -if($rev == 1) { - arsort($bug_type[$sort_by]); -} else { - asort($bug_type[$sort_by]); -} -reset($bug_type); - -function sort_url($type) { - global $sort_by,$rev,$phpver; - if($type == $sort_by) { - $reve = ($rev == 1) ? 0 : 1; - } else { - $reve = 1; - } - $ver = ($phpver != 0) ? "phpver=$phpver&" : ''; - return '<A href="./bugstats.php?'.$ver.'sort_by='.$type.'&rev='.$reve.'">'.ucfirst($type).'</a>'; -} - -echo "<tr bgcolor=#aabbcc><th align=right>Total bug entries in system:</th><td>$total</td>"; -echo "<th>".sort_url('closed')."</th>"; -echo "<th>".sort_url('open')."</th>"; -echo "<th>".sort_url('critical')."</th>"; -echo "<th>".sort_url('analyzed')."</th>"; -echo "<th>".sort_url('suspended')."</th>"; -echo "<th>".sort_url('duplicate')."</th>"; -echo "<th>".sort_url('assigned')."</th>"; -echo "<th>".sort_url('feedback')."</th>"; -echo "<th>".sort_url('bogus')."</th>"; -echo "</tr>\n"; - -echo "<tr><th align=right bgcolor=#aabbcc>All:</th>", - "<td align=center bgcolor=#ccddee>$total</td>", - "<td align=center bgcolor=#ddeeff>".bugstats('closed','all')." </td>", - "<td align=center bgcolor=#ccddee>".bugstats('open', 'all')." </td>", - "<td align=center bgcolor=#ddeeff>".bugstats('critical', 'all')." </td>", - "<td align=center bgcolor=#ccddee>".bugstats('analyzed', 'all')." </td>", - "<td align=center bgcolor=#ddeeff>".bugstats('suspended','all')." </td>", - "<td align=center bgcolor=#ccddee>".bugstats('duplicate', 'all')." </td>", - "<td align=center bgcolor=#ddeeff>".bugstats('assigned','all')." </td>", - "<td align=center bgcolor=#ccddee>".bugstats('feedback','all')." </td>", - "<td align=center bgcolor=#ddeeff>".bugstats('bogus', 'all')." </td>", - "</tr>\n"; - -foreach ($bug_type[$sort_by] as $type => $value) { - if(($bug_type['open'][$type] > 0 || - $bug_type['critical'][$type] > 0 || - $bug_type['analyzed'][$type] > 0 || - $bug_type['suspended'][$type] > 0 || - $bug_type['duplicate'][$type] > 0 || - $bug_type['assigned'][$type] > 0 || - $bug_type['feedback'][$type] > 0 ) && $type != 'all') - { - echo "<tr><th align=right bgcolor=#aabbcc>$type:</th>", - "<td align=center bgcolor=#ccddee>".$bug_type['all'][$type]."</td>", - "<td align=center bgcolor=#ddeeff>".bugstats('closed', $type)." </td>", - "<td align=center bgcolor=#ccddee>".bugstats('open', $type)." </td>", - "<td align=center bgcolor=#ddeeff>".bugstats('critical',$type)." </td>", - "<td align=center bgcolor=#ccddee>".bugstats('analyzed', $type)." </td>", - "<td align=center bgcolor=#ddeeff>".bugstats('suspended',$type)." </td>", - "<td align=center bgcolor=#ccddee>".bugstats('duplicate', $type)." </td>", - "<td align=center bgcolor=#ddeeff>".bugstats('assigned',$type)." </td>", - "<td align=center bgcolor=#ccddee>".bugstats('feedback',$type)." </td>", - "<td align=center bgcolor=#ddeeff>".bugstats('bogus', $type)." </td>", - "</tr>\n"; - } -} - -echo "</table>\n"; - -sort($time_to_close); -$c=count($time_to_close); -$sum=0; -for($i=0;$i<$c;$i++) { - $sum+=$time_to_close[$i]; -} -$median = $time_to_close[(int)($c/2)]; - -echo "<p><b>Bug Report Time to Close Stats</b>\n"; -echo "<table>\n"; -echo "<tr bgcolor=#aabbcc><th align=right>Average life of a report:</th><td bgcolor=#ccddee>".ShowTime((int)($sum/$c))."</td></tr>\n"; -echo "<tr bgcolor=#aabbcc><th align=right>Median life of a report:</th><td bgcolor=#ccddee>".ShowTime($median)."</td></tr>\n"; -echo "<tr bgcolor=#aabbcc><th align=right>Slowest report closure:</th><td bgcolor=#ccddee>".ShowTime($time_to_close[$c-1])."</td></tr>\n"; -echo "<tr bgcolor=#aabbcc><th align=right>Quickest report closure:</th><td bgcolor=#ccddee>".ShowTime($time_to_close[0])."</td></tr>\n"; -echo "</table>\n"; - -echo "<p><b>Who is closing the bug reports?</b>\n"; -echo "<table>\n"; -arsort($closed_by); -$i=0; -while($i < 20) { - list($who,$value)=each($closed_by); - echo "<tr bgcolor=#aabbcc><th>$who</th><td bgcolor=#ccddee>$value</td></tr>\n"; - $i++; -} -echo "</table>\n"; - -commonFooter(); +header("Location: http://bugs.php.net/bugstats.php"); ?>