From 992a6d443e3ce89b48b218b99301c346d46728ac Mon Sep 17 00:00:00 2001 From: Robert Sesek Date: Mon, 6 Apr 2020 01:56:55 -0400 Subject: [PATCH] Integrate bug history directly into showreport.php. This makes showhistory.php just redirect to the report. --- showhistory.php | 144 +------------------------------------- showreport.php | 136 +++++++++++++++++++++++++++++++++++ templates/history.tpl | 25 ------- templates/history_bit.tpl | 10 +-- templates/showreport.tpl | 3 +- 5 files changed, 141 insertions(+), 177 deletions(-) delete mode 100644 templates/history.tpl diff --git a/showhistory.php b/showhistory.php index d46bc87..85fd3cc 100644 --- a/showhistory.php +++ b/showhistory.php @@ -30,146 +30,4 @@ $focus['showreport'] = 'focus'; require_once('./global.php'); require_once('./includes/api_user.php'); -$bug = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "bug WHERE bugid = " . $bugsys->input_clean('bugid', TYPE_UINT)); -if (!$bug) -{ - $message->error(L_INVALID_ID); -} - -if (!check_bug_permissions($bug)) -{ - $message->errorPermission(); -} - -$lookupfields = array( - 'status' => 'status', - 'priority' => 'priority', - 'severity' => 'severity', - 'resolution' => 'resolution', - 'version' => 'version', - 'product' => 'title', - 'component' => 'title' -); - -// ################################################################### - -$customfields = $db->query(" - SELECT bugfield.*, MAX(permission.mask) AS mask - FROM " . TABLE_PREFIX . "bugfield AS bugfield - LEFT JOIN " . TABLE_PREFIX . "bugfieldpermission AS permission - ON (bugfield.fieldid = permission.fieldid) - WHERE mask <> 0 - AND permission.usergroupid IN ({$bugsys->userinfo['usergroupid']}" . (sizeof($bugsys->userinfo['groupids']) != 0 ? ',' . implode(',', $bugsys->userinfo['groupids']) : '') . ") - GROUP BY (bugfield.fieldid)" -); - -while ($field = $db->fetch_array($customfields)) -{ - $fieldlist["$field[fieldid]"] = sprintf(T('Custom Field %1$s (%2$s)'), $field['fieldid'], $field['name']); -} - -// ################################################################### - -$logs = array(); -$logs_fetch = $db->query(" - SELECT history.*, user.userid, user.email, user.displayname, user.showemail - FROM " . TABLE_PREFIX . "history AS history - LEFT JOIN " . TABLE_PREFIX . "user AS user - ON (user.userid = history.userid) - WHERE bugid = $bug[bugid]" -); -while ($log = $db->fetch_array($logs_fetch)) -{ - $log['date'] = $datef->format($bugsys->options['dateformat'], $log['dateline']); - $log['user'] = construct_user_display($log); - - $logs["$log[dateline]"]["$log[historyid]"] = $log; - ksort($logs["$log[dateline]"]); -} - -ksort($logs); - -$toKill = array(); - -foreach ($logs AS $dateline => $logitems) -{ - $show['group'] = true; - - foreach ($logitems AS $log) - { - if ($log['field'] == '.' OR ($log['original'] == '' AND $log['changed'] == '')) - { - $toKill[] = $log['historyid']; - continue; - } - - if (preg_match('#^(comment|attachment)\.(.*)#', $log['field'], $matches)) - { - if ($matches[1] == 'comment') - { - $log['field'] = sprintf(T('Comment #%1$s %2$s'), $log['commentid'], ucwords($matches[2])); - } - else if ($matches[1] == 'attachment') - { - $log['field'] = sprintf(T('Attachment #2%1$s %2$s'), $log['attachmentid'], ucwords($matches[2])); - } - } - else if (preg_match('#^.?custom(.field)?([0-9]+?)#', $log['field'], $matches)) - { - if ($fieldlist["$matches[2]"]) - { - $log['field'] = $fieldlist["$matches[2]"]; - } - else - { - continue; - } - } - else if (preg_match('#^\.(.*)#', $log['field'], $matches)) - { - $log['field'] = ucwords($matches[1]); - - if (isset($lookupfields["$matches[1]"])) - { - $lookup = $matches[1]; - $log['original'] = bugdar::$datastore["$lookup"]["$log[original]"][ $lookupfields["$lookup"] ]; - $log['changed'] = bugdar::$datastore["$lookup"]["$log[changed]"][ $lookupfields["$lookup"] ]; - } - else if ($matches[1] == 'assignto' OR $matches[1] == 'assignedto') - { - if ($log['original']) - { - $user = new UserAPI($bugsys); - $user->set('userid', $log['original']); - $user->set_condition(); - $user->fetch(); - $log['original'] = construct_user_display($user->objdata); - } - - if ($log['changed']) - { - $user = new UserAPI($bugsys); - $user->set('userid', $log['changed']); - $user->set_condition(); - $user->fetch(); - $log['changed'] = construct_user_display($user->objdata); - } - } - } - - $funct->exec_swap_bg('', 'altcolor'); - $bgcolor = $funct->bgcolour; - - eval('$history .= "' . $template->fetch('history_bit') . '";'); - $show['group'] = false; - } -} - -// we can now remove all useless logs -if (sizeof($toKill) > 0) -{ - $db->query("DELETE FROM " . TABLE_PREFIX . "history WHERE historyid IN (" . implode(',', $toKill) . ")"); -} - -eval('$template->flush("' . $template->fetch('history') . '");'); - +header('Location: showreport.php?bugid=' . $bugsys->input_clean('bugid', TYPE_UINT)); diff --git a/showreport.php b/showreport.php index 49f9491..989dd26 100644 --- a/showreport.php +++ b/showreport.php @@ -23,6 +23,7 @@ $fetchtemplates = array( 'showreport', 'showreport_attachment', 'showreport_comment', + 'history_bit', 'quicksearch', 'bugfield_static_text' ); @@ -292,6 +293,137 @@ else $show['vote'] = ((can_perform('canvote', $bug['productid']) AND !$vote['uservote']) ? true : false); +$BUGITEMS = array(); + +// ------------------------------------------------------------------- +// history + +$lookupfields = array( + 'status' => 'status', + 'priority' => 'priority', + 'severity' => 'severity', + 'resolution' => 'resolution', + 'version' => 'version', + 'product' => 'title', + 'component' => 'title' +); + +$customfield_logs = $db->query(" + SELECT bugfield.*, MAX(permission.mask) AS mask + FROM " . TABLE_PREFIX . "bugfield AS bugfield + LEFT JOIN " . TABLE_PREFIX . "bugfieldpermission AS permission + ON (bugfield.fieldid = permission.fieldid) + WHERE mask <> 0 + AND permission.usergroupid IN ({$bugsys->userinfo['usergroupid']}" . (sizeof($bugsys->userinfo['groupids']) != 0 ? ',' . implode(',', $bugsys->userinfo['groupids']) : '') . ") + GROUP BY (bugfield.fieldid)" +); + +while ($field = $db->fetch_array($customfield_logs)) +{ + $fieldlist["$field[fieldid]"] = sprintf(T('Custom Field %1$s (%2$s)'), $field['fieldid'], $field['name']); +} + +$logs = array(); +$logs_fetch = $db->query(" + SELECT history.*, user.userid, user.email, user.displayname, user.showemail + FROM " . TABLE_PREFIX . "history AS history + LEFT JOIN " . TABLE_PREFIX . "user AS user + ON (user.userid = history.userid) + WHERE bugid = $bug[bugid]" +); +while ($log = $db->fetch_array($logs_fetch)) +{ + $log['date'] = $datef->format($bugsys->options['dateformat'], $log['dateline']); + $log['user'] = construct_user_display($log); + + $logs["$log[dateline]"]["$log[historyid]"] = $log; + ksort($logs["$log[dateline]"]); +} + +ksort($logs); + +$toKill = array(); + +foreach ($logs AS $dateline => $logitems) +{ + $show['group'] = true; + + foreach ($logitems AS $log) + { + if ($log['field'] == '.' OR ($log['original'] == '' AND $log['changed'] == '')) + { + $toKill[] = $log['historyid']; + continue; + } + + if (preg_match('#^(comment|attachment)\.(.*)#', $log['field'], $matches)) + { + if ($matches[1] == 'comment') + { + $log['field'] = sprintf(T('Comment #%1$s %2$s'), $log['commentid'], ucwords($matches[2])); + } + else if ($matches[1] == 'attachment') + { + $log['field'] = sprintf(T('Attachment #2%1$s %2$s'), $log['attachmentid'], ucwords($matches[2])); + } + } + else if (preg_match('#^.?custom(.field)?([0-9]+?)#', $log['field'], $matches)) + { + if ($fieldlist["$matches[2]"]) + { + $log['field'] = $fieldlist["$matches[2]"]; + } + else + { + continue; + } + } + else if (preg_match('#^\.(.*)#', $log['field'], $matches)) + { + $log['field'] = ucwords($matches[1]); + + if (isset($lookupfields["$matches[1]"])) + { + $lookup = $matches[1]; + $log['original'] = bugdar::$datastore["$lookup"]["$log[original]"][ $lookupfields["$lookup"] ]; + $log['changed'] = bugdar::$datastore["$lookup"]["$log[changed]"][ $lookupfields["$lookup"] ]; + } + else if ($matches[1] == 'assignto' OR $matches[1] == 'assignedto') + { + if ($log['original']) + { + $user = new UserAPI($bugsys); + $user->set('userid', $log['original']); + $user->set_condition(); + $user->fetch(); + $log['original'] = construct_user_display($user->objdata); + } + + if ($log['changed']) + { + $user = new UserAPI($bugsys); + $user->set('userid', $log['changed']); + $user->set_condition(); + $user->fetch(); + $log['changed'] = construct_user_display($user->objdata); + } + } + } + + $funct->exec_swap_bg('', 'altcolor'); + $bgcolor = $funct->bgcolour; + + eval('$BUGITEMS[$dateline] .= "' . $template->fetch('history_bit') . '";'); + $show['group'] = false; + } +} + +// we can now remove all useless logs +if (sizeof($toKill) > 0) +{ + $db->query("DELETE FROM " . TABLE_PREFIX . "history WHERE historyid IN (" . implode(',', $toKill) . ")"); +} + // ------------------------------------------------------------------- // get comments $comments_fetch = $db->query(" @@ -332,6 +464,7 @@ while ($comment = $db->fetch_array($comments_fetch)) else { $comments .= $temp; + $BUGITEMS[$comment['dateline']] = $temp . $BUGITEMS[$comment['dateline']]; } } @@ -348,5 +481,8 @@ if (is_array($hilight) AND !$show['edit']) } } +ksort($BUGITEMS); +$BUGITEMS = implode("\n", $BUGITEMS); + eval('$template->flush("' . $template->fetch('showreport') . '");'); diff --git a/templates/history.tpl b/templates/history.tpl deleted file mode 100644 index 88add76..0000000 --- a/templates/history.tpl +++ /dev/null @@ -1,25 +0,0 @@ -$doctype - - -$headinclude - {@"Bug History"} - $bug[summary] - - - - -$header - -

{@"History for %1$s (bugid: %2$s)"}

- - - - - - - - - -$history -
{@"User"}{@"Date"}{@"Field"}{@"Old Value"}{@"New Value"}
- -$footer \ No newline at end of file diff --git a/templates/history_bit.tpl b/templates/history_bit.tpl index 599b25c..e87be81 100644 --- a/templates/history_bit.tpl +++ b/templates/history_bit.tpl @@ -1,7 +1,3 @@ - class="$bgcolor"> - $log[user]  - $log[date]  - $log[field] - $log[original] - $log[changed] - +
+ $log[user] changed $log[field] from "$log[original]" to "$log[changed]". +
diff --git a/templates/showreport.tpl b/templates/showreport.tpl index 392675b..0ec46ea 100644 --- a/templates/showreport.tpl +++ b/templates/showreport.tpl @@ -34,7 +34,6 @@ $header / {@"Hidden Bug"} - / [{@"Show Bug History"}] / [$favoritetext] / [{@"Delete"}] @@ -268,6 +267,6 @@ $header $description -$comments +$BUGITEMS $footer -- 2.43.5