#!/usr/bin/perl -wT # -*- Mode: perl; indent-tabs-mode: nil -*- # # The contents of this file are subject to the Mozilla Public # License Version 1.1 (the "License"); you may not use this file # except in compliance with the License. You may obtain a copy of # the License at http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or # implied. See the License for the specific language governing # rights and limitations under the License. # # The Original Code is the Bugzilla Bug Tracking System. # # The Initial Developer of the Original Code is Netscape Communications # Corporation. Portions created by Netscape are # Copyright (C) 1998 Netscape Communications Corporation. All # Rights Reserved. # # Contributor(s): Terry Weissman # Myk Melez # Gervase Markham use strict; use lib qw(. lib); use Bugzilla; use Bugzilla::Error; use Bugzilla::Bug; use Bugzilla::Diff; use Bugzilla::Constants; my $cgi = Bugzilla->cgi; my $template = Bugzilla->template; my $vars = {}; ############################################################################### # Begin Data/Security Validation ############################################################################### # Check whether or not the user is currently logged in. Bugzilla->login(); # Make sure the bug ID is a positive integer representing an existing # bug that the user is authorized to access. my $id = $cgi->param('id'); my $bug = Bugzilla::Bug->check($id); ############################################################################### # End Data/Security Validation ############################################################################### # Run queries against the shadow DB. In the worst case, new changes are not # visible immediately due to replication lag. Bugzilla->switch_to_shadow_db; my $operations; ($operations, $vars->{'incomplete_data'}) = Bugzilla::Bug::GetBugActivity($bug->id); for (my $i = 0; $i < scalar @$operations; $i++) { my $lines = 0; for (my $j = 0; $j < scalar @{$operations->[$i]->{changes}}; $j++) { my $change = $operations->[$i]->{changes}->[$j]; my $field = Bugzilla->get_field($change->{fieldname}); if ($change->{fieldname} eq 'longdesc' || $field->{type} eq FIELD_TYPE_TEXTAREA) { my $diff = new Bugzilla::Diff($change->{removed}, $change->{added})->get_table; if (!@$diff) { splice @{$operations->[$i]->{changes}}, $j, 1; $j--; } else { $operations->[$i]->{changes}->[$j]->{lines} = $diff; $lines += scalar @$diff; } } else { $lines++; } } $operations->[$i]->{total_lines} = $lines; } $vars->{'operations'} = $operations; $vars->{'bug'} = $bug; $template->process("bug/activity/show.html.tmpl", $vars) || ThrowTemplateError($template->error()); exit;