mirror of
https://github.com/php/web-php.git
synced 2026-03-23 23:02:13 +01:00
748 lines
24 KiB
PHP
748 lines
24 KiB
PHP
<?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 {
|
|
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,1);?></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">last comment by:</td>
|
|
<td><select name="by"><?php show_id_options($by);?></select></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="3" align="right">Search for:</td>
|
|
<td colspan="3"><input type="text" name="search_for" value="<?echo htmlspecialchars($search_for);?>"> in the bug database</td>
|
|
</tr>
|
|
</form>
|
|
<form method="GET" action="<?php echo $PHP_SELF;?>">
|
|
<tr>
|
|
<td colspan="3" align="right"><input type="submit" value="Edit" /> bug number:</td>
|
|
<td colspan="2"><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>
|
|
<hr />
|
|
<?php
|
|
|
|
if ($cmd == "send") {
|
|
if (incoming_details_are_valid(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 == "OldFeedback") {
|
|
$where_clause .= " AND status='Feedback' AND TO_DAYS(NOW())-TO_DAYS(ts2)>60";
|
|
} 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%' OR comments LIKE '%$search_for%')";
|
|
}
|
|
|
|
// not supported by the HTML form yet : use the URL :)
|
|
if($bug_age && $bug_age !="All") {
|
|
$where_clause .= " AND ts1 >= DATE_SUB(NOW(), INTERVAL $bug_age DAY)";
|
|
}
|
|
|
|
$where_clause .= " AND php_version LIKE '4%'";
|
|
|
|
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;
|
|
$query .= " LIMIT $begin,30";
|
|
|
|
$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=$bug_type&status=$status&search_for=".htmlspecialchars(stripslashes($search_for))."&bug_age=$bug_age&by=$by&order_by=$order_by&direction=$direction";
|
|
?>
|
|
<table align="center" border="0" cellspacing="2" width="95%">
|
|
<?php show_prev_next($begin,$rows,$link);?>
|
|
<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>",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);
|
|
?>
|
|
</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 (!$row[passwd] || $row[passwd] != $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='$estatus', 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,'$eemail',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 ($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);
|
|
|
|
$text.= "\n\nATTENTION! Do NOT reply to this email!\n";
|
|
$text.= "To reply, use the web interface found 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), $text, "From: Bug Database <$mailfrom>\nX-PHP-Bug: $id\nIn-Reply-To: <bug-$id@bugs.php.net>");
|
|
@mail($mailto, "Bug #$id Updated: ".stripslashes($sdesc), $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>
|
|
<tr>
|
|
<th align="right">Status:</th>
|
|
<?php if ($edit) {?>
|
|
<td><select name="status"><?php show_state_options($status,0,$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>
|
|
<?php } else { ?>
|
|
<font size="-1"><a href="<?php echo "$PHP_SELF?id=$id";?>&edit=1"><tt>Dev Modify</tt></a></font></td>
|
|
<?php }?>
|
|
<?php } else { ?>
|
|
<td><?php echo $original[status]?></td>
|
|
<td><td><font size="-1"><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></font></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="<?php echo ($edit == 1) ? "password" : "text";?>" 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 "<hr />\n";
|
|
|
|
/* 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";
|
|
|
|
/* OLD-STYLE DEVELOPER COMMENT */
|
|
if(strlen($original[comments])) {
|
|
echo "<b><i>[$original[ts2] $original[dev_id]@php.net</i></b><br>\n";
|
|
$text=addlinks($row[8]);
|
|
echo "<blockquote><blockquote><pre>";
|
|
echo wordwrap(addlinks($original[comments]),90);
|
|
echo "</pre></blockquote></blockquote>\n";
|
|
}
|
|
|
|
/* NEW-STYLE COMMENTS */
|
|
$query = "SELECT *,UNIX_TIMESTAMP(ts) AS my_when 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)) {
|
|
?>
|
|
<h2>Report a Bug</h2>
|
|
|
|
<p><strong>Please</strong> read the <a href="bugs-dos-and-donts.php">Dos & Don'ts</a> before submitting a bug report!</p>
|
|
<p>To report bugs in <strong>PHP 3.0</strong>, please go <a href="/bugs-php3.php">here</a>.</p>
|
|
|
|
<?php
|
|
}
|
|
|
|
include 'bugform.inc';
|
|
?>
|
|
</font>
|
|
<?php
|
|
commonFooter();
|
|
|
|
# FUNCTIONS
|
|
|
|
function show_id_options($current) {
|
|
$result = mysql_query("SELECT DISTINCT dev_id FROM bugdb WHERE dev_id NOT LIKE '%@%' AND dev_id NOT LIKE '%.%' AND php_version LIKE '4%' ORDER BY dev_id");
|
|
echo "<option>Any</option>\n";
|
|
while ($row = mysql_fetch_row($result)) {
|
|
if (!$row[0]) continue; # don't show blank option
|
|
echo "<option",($row[0] == $current ? " selected" : ""),
|
|
">$row[0]</option>\n";
|
|
}
|
|
}
|
|
|
|
function show_state_options($state, $show_all, $user_mode=0, $default="") {
|
|
if (!$state && !$default) {
|
|
$state = "Open";
|
|
}
|
|
elseif (!$state) {
|
|
$state = $default;
|
|
}
|
|
|
|
$state_types = array (
|
|
"Open" => 2,
|
|
"Closed" => 2,
|
|
"Critical" => 1,
|
|
"Duplicate" => 2,
|
|
"Assigned" => 1,
|
|
"Analyzed" => 1,
|
|
"Suspended" => 1,
|
|
"Feedback" => 3,
|
|
"OldFeedback" => 3,
|
|
"Bogus" => 1
|
|
);
|
|
|
|
/* regular users can only pick states with type = 1 for unclosed bugs */
|
|
if($state != "All" && $state_types[$state] == 1 && $user_mode == 2) {
|
|
echo "<option>$state</option>\n";
|
|
if($state != "Bogus") echo "<option>Closed</option>\n";
|
|
} else {
|
|
foreach($state_types as $type => $mode) {
|
|
if($mode == $user_mode || $user_mode < 2) {
|
|
echo "<option";
|
|
if($type == $state) echo " selected";
|
|
echo ">$type</option>\n";
|
|
}
|
|
}
|
|
if($show_all) {
|
|
$sel = ($state == "All") ? " selected" : "";
|
|
echo "<option$sel>All</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\">--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) {
|
|
global $email,$bug_type,$php_version,$sdesc,$ldesc;
|
|
|
|
$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;
|
|
}
|
|
|
|
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) {
|
|
if ($begin == 0 && $rows < 30) 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-30),"\">« Show Previous 30 Entries</a></td>";
|
|
}
|
|
if ($rows >= 30) {
|
|
echo "<td align=\"right\"><a href=\"$link&begin=",$begin+30,"\">Show Next 30 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),
|
|
comments text,# developer comment (deprecated)
|
|
ts1 datetime, # bug created date
|
|
ts2 datetime, # developer comment date (deprecated)
|
|
dev_id varchar(16),# developer who commented (deprecated)
|
|
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)
|
|
);
|
|
*/
|
|
?>
|