"Fixed in Subversion repository.", "Old STR" => "This STR has not been updated by the submitter for two or more weeks " ."and has been closed as required by the Mini-XML Configuration Management " ."Plan. If the issue still requires resolution, please re-submit a new " ."STR.", "Unresolvable" => "We are unable to resolve this problem with the information provided. " ."If you discover new information, please file a new STR referencing " ."this one." ); $subsystems = array( "Build Files", "Config Files", "Core API", "Documentation", "Multiple", "mxmldoc", "Sample Programs", "Web Site" ); $versions = array( "Trunk", "+2.6", "+2.5.1", "2.5", "2.4", "2.3", "2.2.2", "2.2.1", "2.2", "2.1", "2.0", "2.0rc1", "1.3", "1.2", "1.1.2", "1.1.1", "1.1", "1.0", "Web Site" ); // // Get the list of valid developers from the users table... // $managers = array(); $result = db_query("SELECT * FROM users WHERE is_published = 1 AND " ."level >= " . AUTH_DEVEL); while ($row = db_next($result)) $managers[$row["name"]] = $row["email"]; db_free($result); // // 'notify_users()' - Notify users of STR changes... // function notify_users($id, // I - STR # $what = "updated", // I - Reason for notification $contents = "") // I - Notification message { global $priority_long; global $scope_long; global $status_long; global $PHP_URL, $PROJECT_EMAIL, $PROJECT_NAME; $result = db_query("SELECT * FROM str WHERE id = $id"); if ($result) { $contents = wordwrap($contents); $row = db_next($result); $prtext = $priority_long[$row['priority']]; $sttext = $status_long[$row['status']]; $sctext = $scope_long[$row['scope']]; if ($row['subsystem'] != "") $subsystem = $row['subsystem']; else $subsystem = "Unassigned"; if ($row['fix_version'] != "") $fix_version = $row['fix_version']; else $fix_version = "Unassigned"; if (eregi("[a-z0-9_.]+", $row['create_user'])) $email = auth_user_email($row['create_user']); else $email = $row['create_user']; if ($row['create_user'] != $row['modify_user'] && $row['create_user'] != $manager && $email != "") mail($email, "$PROJECT_NAME STR #$id $what", "Your software trouble report #$id has been $what. You can check\n" ."the status of the report and add additional comments and/or files\n" ."at the following URL:\n" ."\n" ." $PHP_URL?L$id\n" ."\n" ." Summary: $row[summary]\n" ." Version: $row[str_version]\n" ." Status: $sttext\n" ." Priority: $prtext\n" ." Scope: $sctext\n" ." Subsystem: $subsystem\n" ."Fix Version: $fix_version\n" ."\n$contents" ."________________________________________________________________\n" ."Thank you for using the $PROJECT_NAME Software Trouble Report page!", "From: $PROJECT_EMAIL\r\n"); $ccresult = db_query("SELECT email FROM carboncopy WHERE url = 'str.php_L$id'"); if ($ccresult) { while ($ccrow = db_next($ccresult)) { mail($ccrow['email'], "$PROJECT_NAME STR #$id $what", "Software trouble report #$id has been $what. You can check\n" ."the status of the report and add additional comments and/or files\n" ."at the following URL:\n" ."\n" ." $PHP_URL?L$id\n" ."\n" ." Summary: $row[summary]\n" ." Version: $row[str_version]\n" ." Status: $sttext\n" ." Priority: $prtext\n" ." Scope: $sctext\n" ." Subsystem: $subsystem\n" ."Fix Version: $fix_version\n" ."\n$contents" ."________________________________________________________________\n" ."Thank you for using the $PROJECT_NAME Software Trouble Report page!", "From: $PROJECT_EMAIL\r\n"); } db_free($ccresult); } if ($row['manager_email'] != "") $manager = $row['manager_email']; else $manager = $PROJECT_EMAIL; if ($row['modify_user'] != $manager) mail($manager, "$PROJECT_NAME STR #$id $what", "The software trouble report #$id assigned to you has been $what.\n" ."You can manage the report and add additional comments and/or files\n" ."at the following URL:\n" ."\n" ." $PHP_URL?L$id\n" ."\n" ." Summary: $row[summary]\n" ." Version: $row[str_version]\n" ." Status: $sttext\n" ." Priority: $prtext\n" ." Scope: $sctext\n" ." Subsystem: $subsystem\n" ."Fix Version: $fix_version\n" ."\n$contents", "From: $PROJECT_EMAIL\r\n"); db_free($result); } } // Get command-line options... // // Usage: str.php [operation] [options] // // Operations: // // B = Batch update selected STRs // L = List all STRs // L# = List STR # // M# = Modify STR # // T# = Post text for STR # // F# = Post file for STR # // N = Post new STR // U# = Update notification for STR # // // Options: // // I# = Set first STR // P# = Set priority filter // S# = Set status filter // C# = Set scope filter // E# = Set email filter // Qtext = Set search text $priority = 0; $status = -2; $scope = 0; $search = ""; $index = 0; $femail = 0; if ($argc) { $op = $argv[0][0]; $id = (int)substr($argv[0], 1); if ($op != 'L' && $op != 'M' && $op != 'T' && $op != 'F' && $op != 'N' && $op != 'U' && $op != 'B') { html_header("Bugs & Features Error"); print("

Bad command '$op'!

\n"); html_footer(); exit(); } if (($op == 'M' || $op == 'B') && $LOGIN_LEVEL < AUTH_DEVEL) { html_header("Bugs & Features Error"); print("

The '$op' command is not available to you!

\n"); html_footer(); exit(); } if (($op == 'M' || $op == 'T' || $op == 'F') && !$id) { html_header("Bugs & Features Error"); print("

Command '$op' requires an STR number!

\n"); html_footer(); exit(); } if ($op == 'N' && $id) { html_header("Bugs & Features Error"); print("

Command '$op' cannot have an STR number!

\n"); html_footer(); exit(); } for ($i = 1; $i < $argc; $i ++) { $option = substr($argv[$i], 1); switch ($argv[$i][0]) { case 'P' : // Set priority filter $priority = (int)$option; break; case 'S' : // Set status filter $status = (int)$option; break; case 'C' : // Set scope filter $scope = (int)$option; break; case 'Q' : // Set search text $search = urldecode($option); $i ++; while ($i < $argc) { $search .= urldecode(" $argv[$i]"); $i ++; } break; case 'I' : // Set first STR $index = (int)$option; if ($index < 0) $index = 0; break; case 'E' : // Show only problem reports matching the current email $femail = (int)$option; break; default : html_header("Bugs & Features Error"); print("

Bad option '$argv[$i]'!

\n"); html_footer(); exit(); break; } } } else { $op = 'L'; $id = 0; } if ($REQUEST_METHOD == "POST") { if (array_key_exists("FPRIORITY", $_POST)) $priority = (int)$_POST["FPRIORITY"]; if (array_key_exists("FSTATUS", $_POST)) $status = (int)$_POST["FSTATUS"]; if (array_key_exists("FSCOPE", $_POST)) $scope = (int)$_POST["FSCOPE"]; if (array_key_exists("FEMAIL", $_POST)) $femail = (int)$_POST["FEMAIL"]; if (array_key_exists("SEARCH", $_POST)) $search = $_POST["SEARCH"]; } $options = "+P$priority+S$status+C$scope+I$index+E$femail+Q" . urlencode($search); // B = Batch update selected STRs // L = List all STRs // L# = List STR # // M# = Modify STR # // T# = Post text for STR # // F# = Post file for STR # // N = Post new STR // U# = Update notification for STR # switch ($op) { case 'B' : // Batch update selected STRs if ($REQUEST_METHOD != "POST") { header("Location: $PHP_SELF?L$options"); break; } if (array_key_exists("STATUS", $_POST) && ($_POST["STATUS"] != "" || $_POST["PRIORITY"] != "" || $_POST["MANAGER_EMAIL"] != "" || $_POST["MESSAGE"] != "")) { $time = time(); $manager_email = db_escape($_POST["MANAGER_EMAIL"]); $modify_user = db_escape($_COOKIE["FROM"]); $message = $_POST["MESSAGE"]; if ($message != "") { $contents = db_escape($messages[$message]); $mailmsg = $messages[$message] . "\n\n"; } else { $contents = ""; $mailmsg = ""; } $query = "modify_date = $time, modify_user = '$modify_user'"; if ($_POST["STATUS"] != "") $query .= ", status = $_POST[STATUS]"; if ($_POST["PRIORITY"] != "") $query .= ", priority = $_POST[PRIORITY]"; if ($manager_email != "") $query .= ", manager_email = '$manager_email'"; db_query("BEGIN TRANSACTION"); reset($_POST); while (list($key, $val) = each($_POST)) if (substr($key, 0, 3) == "ID_") { $id = (int)substr($key, 3); db_query("UPDATE str SET $query WHERE id = $id"); if ($contents != "") { db_query("INSERT INTO strtext VALUES(NULL,$id,1,'$contents'," ."$time,'$modify_user')"); notify_users($id, "updated", $mailmsg); } } db_query("COMMIT TRANSACTION"); } header("Location: $PHP_SELF?L$options"); break; case 'L' : // List (all) STR(s) if ($id) { html_header("STR #$id"); $result = db_query("SELECT * FROM str WHERE id = $id"); if (db_count($result) != 1) { print("

Error: STR #$id was not found!

\n"); html_footer(); exit(); } $row = db_next($result); html_start_links(1); html_link("Return to Bugs & Features", "$PHP_SELF?L$options"); if ($row['status'] >= $STR_STATUS_ACTIVE) { html_link("Post Text", "$PHP_SELF?T$id$options"); html_link("Post File", "$PHP_SELF?F$id$options"); } if ($LOGIN_LEVEL >= AUTH_DEVEL) html_link("Modify STR", "$PHP_SELF?M$id$options"); html_end_links(); $create_user = sanitize_email($row['create_user']); $manager_email = sanitize_email($row['manager_email']); $subsystem = $row['subsystem']; $summary = htmlspecialchars($row['summary'], ENT_QUOTES); $prtext = $priority_long[$row['priority']]; $sttext = $status_long[$row['status']]; $sctext = $scope_long[$row['scope']]; $str_version = $row['str_version']; $fix_version = $row['fix_version']; if ($manager_email == "") $manager_email = "Unassigned"; if ($subsystem == "") $subsystem = "Unassigned"; if ($fix_version == "") $fix_version = "Unassigned"; print("\n"); print("\n"); if ($row['master_id'] > 0) print("" ."\n"); if (!$row['is_published']) print("\n"); print("\n"); print("\n"); print("\n"); print("\n"); print("\n"); print("\n"); print("\n"); print("\n"); print("\n"); if (array_key_exists("FROM", $_COOKIE)) $email = htmlspecialchars($_COOKIE["FROM"]); else $email = ""; print("\n"); print("
ID:$id
Duplicate Of:STR " ."#$row[master_id]
This STR is " ."currently hidden from public view.
Status:$sttext
Priority:$prtext
Scope:$sctext
Subsystem:$subsystem
Summary:$summary
Version:$str_version
Created By:$create_user
Assigned To:$manager_email
Fix Version:$fix_version
Update Notification:" ."
" ."" ."" ."
Receive EMails " ."Don't Receive EMails" ."
" ."
\n"); db_free($result); print("

Trouble Report Files:

\n"); if ($row['status'] >= $STR_STATUS_ACTIVE) { html_start_links(); html_link("Post File", "$PHP_SELF?F$id$options"); html_end_links(); } $result = db_query("SELECT * FROM strfile WHERE " ."str_id = $id AND is_published = 1"); if (db_count($result) == 0) print("

No files

\n"); else { html_start_table(array("Name/Time/Date", "Filename")); while ($row = db_next($result)) { $date = date("M d, Y", $row['create_date']); $time = date("H:i", $row['create_date']); $email = sanitize_email($row['create_user']); $filename = htmlspecialchars($row['filename']); html_start_row(); print("$email
$time $date" ."" ."$filename"); html_end_row(); } html_end_table(); } db_free($result); print("

Trouble Report Dialog:

\n"); if ($row['status'] >= $STR_STATUS_ACTIVE) { html_start_links(); html_link("Post Text", "$PHP_SELF?T$id$options"); html_end_links(); } $result = db_query("SELECT * FROM strtext WHERE " ."str_id = $id AND is_published = 1"); if (db_count($result) == 0) print("

No text

\n"); else { html_start_table(array("Name/Time/Date", "Text")); while ($row = db_next($result)) { $date = date("M d, Y", $row['create_date']); $time = date("H:i", $row['create_date']); $email = sanitize_email($row['create_user']); $contents = quote_text($row['contents']); html_start_row(); print("$email
$time $date" ."$contents"); html_end_row(); } html_end_table(); } db_free($result); } else { html_header("Bugs & Features"); html_start_links(1); html_link("Submit Bug or Feature Request", "$PHP_SELF?N$options'"); html_end_links(); $htmlsearch = htmlspecialchars($search, ENT_QUOTES); print("

" ."Search Words:  " ."

\n"); print("

Priority: \n"); print("Status: \n"); print("Scope: \n"); if (array_key_exists("FROM", $_COOKIE)) { print("Show: \n"); } print("

\n"); $query = ""; $prefix = "WHERE "; if ($priority > 0) { $query .= "${prefix}priority = $priority"; $prefix = " AND "; } if ($status > 0) { $query .= "${prefix}status = $status"; $prefix = " AND "; } else if ($status == -1) // Show closed { $query .= "${prefix}status <= $STR_STATUS_UNRESOLVED"; $prefix = " AND "; } else if ($status == -2) // Show open { $query .= "${prefix}status >= $STR_STATUS_ACTIVE"; $prefix = " AND "; } if ($scope > 0) { $query .= "${prefix}scope = $scope"; $prefix = " AND "; } if ($LOGIN_LEVEL < AUTH_DEVEL) { $query .= "${prefix}(is_published = 1 OR create_user = '" . db_escape($LOGIN_USER) . "')"; $prefix = " AND "; } if ($femail) { if (array_key_exists("FROM", $_COOKIE)) $email = db_escape($_COOKIE["FROM"]); else $email = ""; if ($LOGIN_LEVEL >= AUTH_DEVEL) { $query .= "${prefix}(manager_email = '' OR manager_email = '$email')"; $prefix = " AND "; } else if ($email != "") { $query .= "${prefix}create_user = '$email'"; $prefix = " AND "; } } if ($search) { // Convert the search string to an array of words... $words = html_search_words($search); // Loop through the array of words, adding them to the query... $query .= "${prefix}("; $prefix = ""; $next = " OR"; $logic = ""; reset($words); foreach ($words as $word) { if ($word == "or") { $next = ' OR'; if ($prefix != '') $prefix = ' OR'; } else if ($word == "and") { $next = ' AND'; if ($prefix != '') $prefix = ' AND'; } else if ($word == "not") $logic = ' NOT'; else { $query .= "$prefix$logic ("; $subpre = ""; $word = db_escape($word); if (ereg("[0-9]+", $word)) { $query .= "${subpre}id = $word"; $subpre = " OR "; } $query .= "${subpre}summary LIKE \"%$word%\""; $subpre = " OR "; $query .= "${subpre}subsystem LIKE \"%$word%\""; $query .= "${subpre}str_version LIKE \"%$word%\""; $query .= "${subpre}fix_version LIKE \"%$word%\""; $query .= "${subpre}manager_email LIKE \"%$word%\""; $query .= "${subpre}create_user LIKE \"%$word%\""; $query .= ")"; $prefix = $next; $logic = ''; } } $query .= ")"; } $result = db_query("SELECT * FROM str $query " ."ORDER BY status DESC, priority DESC, scope DESC, " ."modify_date"); $count = db_count($result); if ($count == 0) { print("

No STRs found.

\n"); if (($priority || $status || $scope) && $search != "") print("

Search for \"$htmlsearch\" in all STRs

\n"); html_footer(); exit(); } if ($index >= $count) $index = $count - ($count % $PAGE_MAX); if ($index < 0) $index = 0; $start = $index + 1; $end = $index + $PAGE_MAX; if ($end > $count) $end = $count; $prev = $index - $PAGE_MAX; if ($prev < 0) $prev = 0; $next = $index + $PAGE_MAX; print("

$count STR(s) found, showing $start to $end:\n"); if ($LOGIN_LEVEL >= AUTH_DEVEL) print("

\n"); if ($count > $PAGE_MAX) { print("\n"); print("\n"); print("
"); if ($index > 0) print("Previous $PAGE_MAX"); print(""); if ($end < $count) { $next_count = min($PAGE_MAX, $count - $end); print("Next $next_count"); } print("
\n"); } html_start_table(array("Id", "Priority", "Status", "Scope", "Summary", "Version", "Last Updated", "Assigned To")); db_seek($result, $index); for ($i = 0; $i < $PAGE_MAX && $row = db_next($result); $i ++) { $date = date("M d, Y", $row['modify_date']); $summary = htmlspecialchars($row['summary'], ENT_QUOTES); $summabbr = htmlspecialchars(abbreviate($row['summary'], 80), ENT_QUOTES); $prtext = $priority_text[$row['priority']]; $sttext = $status_text[$row['status']]; $sctext = $scope_text[$row['scope']]; $link = ""; html_start_row(); if ($row['is_published'] == 0) $summabbr .= " Private"; print(""); if ($LOGIN_LEVEL >= AUTH_DEVEL) print(""); print("$link$row[id]" ."$link$prtext" ."$link$sttext" ."$link$sctext" ."$link$summabbr" ."$link$row[str_version]" ."$link$date"); if ($row['manager_email'] != "") $email = sanitize_email($row['manager_email']); else $email = "Unassigned"; print("$link$email"); html_end_row(); if ($row['status'] >= $STR_STATUS_PENDING) { $textresult = db_query("SELECT * FROM strtext " ."WHERE str_id = $row[id] " ."ORDER BY id DESC LIMIT 1"); if ($textresult && db_count($textresult) > 0) { $textrow = db_next($textresult); html_start_row(); $email = sanitize_email($textrow['create_user']); $contents = abbreviate(quote_text($textrow['contents']), 128); print("$email" ."" ."$contents"); html_end_row(); db_free($textresult); } } } db_free($result); html_end_table(); if ($LOGIN_LEVEL >= AUTH_DEVEL) { print("

\n"); print("\n"); print("\n"); print("\n"); print(""); print("

\n"); } if ($count > $PAGE_MAX) { print("\n"); print("\n"); print("
"); if ($index > 0) print("Previous $PAGE_MAX"); print(""); if ($end < $count) { $next_count = min($PAGE_MAX, $count - $end); print("Next $next_count"); } print("
\n"); } if ($LOGIN_LEVEL >= AUTH_DEVEL) print("
"); print("

" ."MACH = Machine, " ."OS = Operating System, " ."STR = Software Trouble Report, " ."private = hidden from public view

\n"); } html_footer(); break; case 'M' : // Modify STR if ($LOGIN_USER == "") { header("Location: login.php?PAGE=$PHP_SELF?M$id$options"); return; } if ($REQUEST_METHOD == "POST") { if (array_key_exists("STATUS", $_POST)) { $time = time(); $master_id = (int)$_POST["MASTER_ID"]; $summary = db_escape($_POST["SUMMARY"]); $subsystem = db_escape($_POST["SUBSYSTEM"]); $create_user = db_escape($_POST["CREATE_EMAIL"]); $manager_email = db_escape($_POST["MANAGER_EMAIL"]); $modify_user = db_escape($_COOKIE["FROM"]); $contents = db_escape(trim($_POST["CONTENTS"])); $message = $_POST["MESSAGE"]; db_query("UPDATE str SET " ."master_id = $master_id, " ."is_published = $_POST[IS_PUBLISHED], " ."status = $_POST[STATUS], " ."priority = $_POST[PRIORITY], " ."scope = $_POST[SCOPE], " ."summary = '$summary', " ."subsystem = '$subsystem', " ."str_version = '$_POST[STR_VERSION]', " ."fix_version = '$_POST[FIX_VERSION]', " ."create_user = '$create_user', " ."manager_email = '$manager_email', " ."modify_date = $time, " ."modify_user = '$modify_user' " ."WHERE id = $id"); if ($contents != "") { db_query("INSERT INTO strtext VALUES(NULL,$id,1,'$contents'," ."$time,'$modify_user')"); $contents = trim($_POST["CONTENTS"]) . "\n\n"; } if ($message != "") { $contents = db_escape($messages[$message]); db_query("INSERT INTO strtext VALUES(NULL,$id,1,'$contents'," ."$time,'$modify_user')"); $contents = $messages[$message] . "\n\n"; } header("Location: $PHP_SELF?L$id$options"); notify_users($id, "updated", $contents); } else if (array_key_exists("FILE_ID", $_POST)) { db_query("UPDATE strfile SET " ."is_published = $_POST[IS_PUBLISHED] " ."WHERE id = $_POST[FILE_ID]"); header("Location: $PHP_SELF?M$id$options"); } else if (array_key_exists("TEXT_ID", $_POST)) { db_query("UPDATE strtext SET " ."is_published = $_POST[IS_PUBLISHED] " ."WHERE id = $_POST[TEXT_ID]"); header("Location: $PHP_SELF?M$id$options"); } else header("Location: $PHP_SELF?M$id$options"); } else { html_header("Modify STR #$id"); html_start_links(1); html_link("Return to Bugs & Features", "$PHP_SELF?L$options"); html_link("Return to STR #$id", "$PHP_SELF?L$id$options"); html_link("Post Text", "$PHP_SELF?T$id$options"); html_link("Post File", "$PHP_SELF?F$id$options"); html_end_links(); $result = db_query("SELECT * FROM str WHERE id = $id"); if (db_count($result) != 1) { print("

Error: STR #$id was not found!

\n"); html_footer(); exit(); } $row = db_next($result); $create_user = htmlspecialchars($row['create_user']); $manager_email = htmlspecialchars($row['manager_email']); $summary = htmlspecialchars($row['summary'], ENT_QUOTES); print("
" ."\n"); print("\n"); print("" ."\n"); print("\n"); print("\n"); print("\n"); print("\n"); print("" ."\n"); print("" ."\n"); print("" ."\n"); print("" ."\n"); print("" ."\n"); print("" ."\n"); print("\n"); print("\n"); print("
ID:$id
Duplicate Of:
Published:"); print("
Status:"); print("\n"); print("
Priority:"); print("
Scope:"); print("
Subsystem:
Summary:
Version:
Created By:
Assigned To:
Fix Version:
Text:"); print("
\n"); print("
" ."
\n"); print("

Trouble Report Files: " ."Post File" ."

\n"); $result = db_query("SELECT * FROM strfile WHERE str_id = $id"); if (db_count($result) == 0) print("

No files

\n"); else { print("\n" ."" ."\n"); $line = 0; while ($row = db_next($result)) { $date = date("M d, Y", $row['create_date']); $time = date("H:i", $row['create_date']); $email = sanitize_email($row['create_user']); $filename = htmlspecialchars($row['filename']); print("" ."" ."" ."\n"); $line = 1 - $line; } print("
Name/Time/DateFilename
$email
$time $date
" ."
" .""); if ($row['is_published']) print("" .""); else print("" .""); print("
" ."$filename
\n"); } db_free($result); print("

Trouble Report Dialog: " ."Post Text" ."

\n"); $result = db_query("SELECT * FROM strtext WHERE " ."str_id = $id"); if (db_count($result) == 0) print("

No text

\n"); else { print("\n" ."" ."\n"); $line = 0; while ($row = db_next($result)) { $date = date("M d, Y", $row['create_date']); $time = date("H:i", $row['create_date']); $email = sanitize_email($row['create_user']); $contents = quote_text($row['contents']); print("" ."" ."" ."\n"); $line = 1 - $line; } print("
Name/Time/DateText
$email
$time $date
" ."
" .""); if ($row['is_published']) print("" .""); else print("" .""); print("
$contents
\n"); } db_free($result); html_footer(); } break; case 'T' : // Post text for STR # if ($LOGIN_USER == "") { header("Location: login.php?PAGE=$PHP_SELF?T$id$options"); return; } if ($REQUEST_METHOD == "POST") { $contents = $_POST["CONTENTS"]; if ($LOGIN_USER != "" && $LOGIN_LEVEL < AUTH_DEVEL) $email = $LOGIN_USER; else if (array_key_exists("EMAIL", $_POST) && validate_email($_POST["EMAIL"])) { $email = $_POST["EMAIL"]; setcookie("FROM", "$email", time() + 90 * 86400, "/"); } else if (array_key_exists("FROM", $_COOKIE)) $email = $_COOKIE["FROM"]; else $email = ""; if (ereg("Anonymous.*", $email)) $email = ""; if ($email != "" && $contents != "") $havedata = 1; } else { if ($LOGIN_USER != "") $email = $LOGIN_USER; else if (array_key_exists("FROM", $_COOKIE)) $email = $_COOKIE["FROM"]; else $email = ""; $contents = ""; if (ereg("Anonymous.*", $email)) $email = ""; } if ($REQUEST_METHOD == "POST" && $havedata) { $time = time(); $temail = db_escape($email); $tcontents = db_escape($contents); db_query("INSERT INTO strtext VALUES(NULL,$id,1,'$tcontents'," ."$time,'$temail')"); db_query("UPDATE str SET modify_date=$time, modify_user='$temail' " ."WHERE id = $id"); db_query("UPDATE str SET status=$STR_STATUS_PENDING WHERE " ."id = $id AND status >= $STR_STATUS_ACTIVE AND " ."status < $STR_STATUS_NEW"); header("Location: $PHP_SELF?L$id$options"); notify_users($id, "updated", "$contents\n\n"); } else { html_header("Post Text For STR #$id"); html_start_links(1); html_link("Return to STR #$id", "$PHP_SELF?L$id$options"); html_end_links(); if ($REQUEST_METHOD == "POST") { print("

Error: Please fill in the fields marked in " ."bold red below and resubmit " ."your trouble report.

\n"); $hstart = ""; $hend = ""; } else { $hstart = ""; $hend = ""; } print("
" ."\n"); print("\n"); print("\n"); print("\n"); print("
"); if ($email != "") print("EMail:"); else print("${hstart}EMail:$hend"); $temp = htmlspecialchars($email); print("
"); if ($contents != "") print("Text:"); else print("${hstart}Text:$hend"); $temp = htmlspecialchars($contents); print("
" ."
\n"); html_footer(); } break; case 'F' : // Post file for STR # if ($LOGIN_USER == "") { header("Location: login.php?PAGE=$PHP_SELF?F$id$options"); return; } if ($REQUEST_METHOD == "POST") { if ($LOGIN_USER != "" && $LOGIN_LEVEL < AUTH_DEVEL) $email = $LOGIN_USER; else if (array_key_exists("EMAIL", $_POST) && validate_email($_POST["EMAIL"])) { $email = $_POST["EMAIL"]; setcookie("FROM", "$email", time() + 90 * 86400, "/"); } else if (array_key_exists("FROM", $_COOKIE)) $email = $_COOKIE["FROM"]; else $email = ""; if (ereg("Anonymous.*", $email)) $email = ""; if (array_key_exists("STRFILE", $_FILES)) { $filename = $_FILES['STRFILE']['name']; if ($filename[0] == '.' || $filename[0] == '/') $filename = ""; } else $filename = ""; if ($email != "" && $filename != "") $havedata = 1; } else { if ($LOGIN_USER != "") $email = $LOGIN_USER; else if (array_key_exists("FROM", $_COOKIE)) $email = $_COOKIE["FROM"]; else $email = ""; $filename = ""; if (ereg("Anonymous.*", $email)) $email = ""; } if ($REQUEST_METHOD == "POST" && $havedata) { $time = time(); $temail = db_escape($email); $tmp_name = $_FILES['STRFILE']['tmp_name']; $name = $_FILES['STRFILE']['name']; $tname = db_escape($name); $infile = fopen($tmp_name, "rb"); if (!$infile) { html_header("Error"); print("

Error! Unable to open file attachment!

\n"); html_footer(); exit(); } mkdir("strfiles/$id"); $outfile = fopen("strfiles/$id/$name", "wb"); if (!$outfile) { html_header("Error"); print("

Error! Unable to save file attachment!

\n"); html_footer(); exit(); } while ($data = fread($infile, 8192)) fwrite($outfile, $data); fclose($infile); fclose($outfile); db_query("INSERT INTO strfile VALUES(NULL,$id,1,'$tname'," ."$time,'$temail')"); db_query("UPDATE str SET modify_date=$time, modify_user='$temail' " ."WHERE id = $id"); db_query("UPDATE str SET status=$STR_STATUS_PENDING WHERE " ."id = $id AND status >= $STR_STATUS_ACTIVE AND " ."status < $STR_STATUS_NEW"); header("Location: $PHP_SELF?L$id$options"); notify_users($id, "updated", "Added file $name\n\n"); } else { html_header("Post File For STR #$id"); html_start_links(1); html_link("Return to STR #$id", "$PHP_SELF?L$id$options"); html_end_links(); if ($REQUEST_METHOD == "POST") { print("

Error: Please fill in the fields marked in " ."bold red below and resubmit " ."your trouble report.

\n"); $hstart = ""; $hend = ""; } else { $hstart = ""; $hend = ""; } print("
" .""); print("\n"); print("\n"); print("\n"); print("\n"); print("
"); if ($email != "") print("EMail:"); else print("${hstart}EMail:$hend"); $temp = htmlspecialchars($email); print("
"); if (array_key_exists("STRFILE", $_FILES)) print("File:"); else print("${hstart}File:$hend"); print("
" ."
\n"); html_footer(); } break; case 'N' : // Post new STR if ($LOGIN_USER == "") { header("Location: login.php?PAGE=$PHP_SELF?N$options"); return; } $havedata = 0; if ($REQUEST_METHOD == "POST") { $npriority = $_POST["PRIORITY"]; $nscope = $_POST["SCOPE"]; $summary = $_POST["SUMMARY"]; $version = $_POST["VERSION"]; $contents = $_POST["CONTENTS"]; if ($LOGIN_USER != "" && $LOGIN_LEVEL < AUTH_DEVEL) $email = $LOGIN_USER; else if (array_key_exists("EMAIL", $_POST) && validate_email($_POST["EMAIL"])) { $email = $_POST["EMAIL"]; setcookie("FROM", "$email", time() + 90 * 86400, "/"); } else if (array_key_exists("FROM", $_COOKIE)) $email = $_COOKIE["FROM"]; else $email = ""; if (array_key_exists("STRFILE", $_FILES)) { $filename = $_FILES['STRFILE']['name']; if ($filename[0] == '.' || $filename[0] == '/') $filename = ""; } else $filename = ""; if ($npriority && $nscope && $summary != "" && $email != "" && $version != "" && $contents != "") $havedata = 1; } else { if ($LOGIN_USER != "") $email = $LOGIN_USER; else if (array_key_exists("FROM", $_COOKIE)) $email = $_COOKIE["FROM"]; else $email = ""; $npriority = 0; $nscope = 0; $summary = ""; $version = ""; $contents = ""; $filename = ""; } if (ereg("Anonymous.*", $email)) $email = ""; if ($REQUEST_METHOD == "POST" && $havedata) { $time = time(); $temail = db_escape($email); $tsummary = db_escape($summary); $tcontents = db_escape($contents); db_query("INSERT INTO str VALUES(NULL,0," ."$_POST[IS_PUBLISHED],$STR_STATUS_NEW," ."$npriority,$nscope,'$tsummary','','$version','',''," ."$time,'$temail',$time,'$temail')"); $id = db_insert_id(); db_query("INSERT INTO strtext VALUES(NULL,$id,1,'$tcontents'," ."$time,'$temail')"); if ($filename != "") { $tmp_name = $_FILES['STRFILE']['tmp_name']; $name = $_FILES['STRFILE']['name']; $tname = db_escape($name); $infile = fopen($tmp_name, "rb"); if (!$infile) { html_header("Error"); print("

Error! Unable to open file attachment!

\n"); html_footer(); exit(); } mkdir("strfiles/$id"); $outfile = fopen("strfiles/$id/$name", "wb"); if (!$outfile) { html_header("Error"); print("

Error! Unable to save file attachment!

\n"); html_footer(); exit(); } while ($data = fread($infile, 8192)) fwrite($outfile, $data); fclose($infile); fclose($outfile); db_query("INSERT INTO strfile VALUES(NULL,$id,1,'$tname'," ."$time,'$temail')"); } header("Location: $PHP_SELF?L$id$options"); notify_users($id, "created", "$contents\n\n"); } else { html_header("Submit Bug or Feature Request"); html_start_links(1); html_link("Return to Bugs & Features", "$PHP_SELF?L$options"); html_end_links(); if ($REQUEST_METHOD == "POST") { print("

Error: Please fill in the fields marked in " ."bold red below and resubmit " ."your trouble report.

\n"); $hstart = ""; $hend = ""; } else { print("

Please use this form to report all bugs and request " ."features in the $PROJECT_NAME software. Be sure to include " ."the operating system, compiler, sample programs and/or " ."files, and any other information you can about your " ."problem. Thank you for helping us to improve " ."$PROJECT_NAME!

\n"); $hstart = ""; $hend = ""; } print("
" .""); print("\n"); print("\n"); print("\n"); print("\n"); print("\n"); print("\n"); print("\n"); print("\n"); print("\n"); print("\n"); print("\n"); print("\n"); print("\n"); print("\n"); print("
Security Advisory:" ."
Status:5 - New
"); if ($npriority > 0) print("Priority:"); else print("${hstart}Priority:$hend"); for ($i = 1; $i <= 5; $i ++) { print("$priority_long[$i]
"); } print("
"); if ($nscope > 0) print("Scope:"); else print("${hstart}Scope:$hend"); for ($i = 1; $i <= 3; $i ++) { print("$scope_long[$i]
"); } print("
Subsystem:Unassigned
"); if ($summary != "") print("Summary:"); else print("${hstart}Summary:$hend"); $temp = htmlspecialchars($summary, ENT_QUOTES); print("
"); if ($version != "") print("Version:"); else print("${hstart}Version:$hend"); print("
"); if ($email != "") print("EMail:"); else print("${hstart}EMail:$hend"); $temp = htmlspecialchars($email); print("
Assigned To:Unassigned
Fix Version:Unassigned
"); if ($contents != "") print("Detailed Description of Problem:"); else print("${hstart}Detailed Description of Problem:$hend"); $temp = htmlspecialchars($contents); print("
File:"); print("
" ."
\n"); html_footer(); } break; case 'U' : // Update notification status // EMAIL and NOTIFICATION variables hold status; add/delete from strcc... $havedata = 0; if ($REQUEST_METHOD != "POST") { html_header("Bugs & Features Error"); print("

The '$op' command requires a POST request!\n"); html_footer(); exit(); } $notification = $_POST["NOTIFICATION"]; $email = $_POST["EMAIL"]; if (($notification != "ON" && $notification != "OFF") || $email == "" || !validate_email($email)) { html_header("Bugs & Features Error"); print("

Please press your browsers back button and enter a valid " ."EMail address and choose whether to receive notification " ."messages.

\n"); html_footer(); exit(); } setcookie("FROM", "$email", time() + 90 * 86400, "/"); $result = db_query("SELECT * FROM carboncopy WHERE " ."url = 'str.php_L$id' AND email = '$email'"); html_header("STR #$id Notifications"); html_start_links(); html_link("Return to STR #$id", "$PHP_SELF?L$id$options"); html_end_links(); if ($notification == "ON") { if ($result && db_count($result) > 0) print("

Your email address has already been added to the " ."notification list for STR #$id!

\n"); else { db_query("INSERT INTO carboncopy VALUES(NULL,'str.php?L$id','$email')"); print("

Your email address has been added to the notification list " ."for STR #$id.

\n"); } } else if ($result && db_count($result) > 0) { db_query("DELETE FROM carboncopy WHERE " ."url = 'str.php?L$id' AND email = '$email'"); print("

Your email address has been removed from the notification list " ."for STR #$id.

\n"); } else { print("

Your email address is not on the notification list for " ."STR #$id!

\n"); } if ($result) db_free($result); html_footer(); break; } // // End of "$Id$". // ?>