diff options
-rwxr-xr-x | Bugzilla/Bug.pm | 48 | ||||
-rw-r--r-- | CGI.pl | 37 | ||||
-rwxr-xr-x | editmilestones.cgi | 1 |
3 files changed, 49 insertions, 37 deletions
diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index a82df3b69..c7e763748 100755 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -52,10 +52,22 @@ use base qw(Exporter); AppendComment ValidateComment bug_alias_to_id ValidateBugAlias ValidateBugID RemoveVotes CheckIfVotedConfirmed + LogActivityEntry ); +##################################################################### +# Constants +##################################################################### + +# Used in LogActivityEntry(). Gives the max length of lines in the +# activity table. +use constant MAX_LINE_LENGTH => 254; + +# Used in ValidateComment(). Gives the max length allowed for a comment. use constant MAX_COMMENT_LENGTH => 65535; +##################################################################### + sub fields { # Keep this ordering in sync with bugzilla.dtd my @fields = qw(bug_id alias creation_ts short_desc delta_ts @@ -918,6 +930,42 @@ sub GetBugActivity { return(\@operations, $incomplete_data); } +# Update the bugs_activity table to reflect changes made in bugs. +sub LogActivityEntry { + my ($i, $col, $removed, $added, $whoid, $timestamp) = @_; + my $dbh = Bugzilla->dbh; + # in the case of CCs, deps, and keywords, there's a possibility that someone + # might try to add or remove a lot of them at once, which might take more + # space than the activity table allows. We'll solve this by splitting it + # into multiple entries if it's too long. + while ($removed || $added) { + my ($removestr, $addstr) = ($removed, $added); + if (length($removestr) > MAX_LINE_LENGTH) { + my $commaposition = find_wrap_point($removed, MAX_LINE_LENGTH); + $removestr = substr($removed, 0, $commaposition); + $removed = substr($removed, $commaposition); + $removed =~ s/^[,\s]+//; # remove any comma or space + } else { + $removed = ""; # no more entries + } + if (length($addstr) > MAX_LINE_LENGTH) { + my $commaposition = find_wrap_point($added, MAX_LINE_LENGTH); + $addstr = substr($added, 0, $commaposition); + $added = substr($added, $commaposition); + $added =~ s/^[,\s]+//; # remove any comma or space + } else { + $added = ""; # no more entries + } + trick_taint($addstr); + trick_taint($removestr); + my $fieldid = &::GetFieldID($col); + $dbh->do("INSERT INTO bugs_activity + (bug_id, who, bug_when, fieldid, removed, added) + VALUES (?, ?, ?, ?, ?, ?)", + undef, ($i, $whoid, $timestamp, $fieldid, $removestr, $addstr)); + } +} + # CountOpenDependencies counts the number of open dependent bugs for a # list of bugs and returns a list of bug_id's and their dependency count # It takes one parameter: @@ -40,10 +40,6 @@ use Bugzilla::BugMail; use Bugzilla::Bug; use Bugzilla::User; -# Used in LogActivityEntry(). Gives the max length of lines in the -# activity table. -use constant MAX_LINE_LENGTH => 254; - # Shut up misguided -w warnings about "used only once". For some reason, # "use vars" chokes on me when I try it here. @@ -128,39 +124,6 @@ sub PutFooter { || ThrowTemplateError($::template->error()); } -sub LogActivityEntry { - my ($i,$col,$removed,$added,$whoid,$timestamp) = @_; - # in the case of CCs, deps, and keywords, there's a possibility that someone - # might try to add or remove a lot of them at once, which might take more - # space than the activity table allows. We'll solve this by splitting it - # into multiple entries if it's too long. - while ($removed || $added) { - my ($removestr, $addstr) = ($removed, $added); - if (length($removestr) > MAX_LINE_LENGTH) { - my $commaposition = find_wrap_point($removed, MAX_LINE_LENGTH); - $removestr = substr($removed,0,$commaposition); - $removed = substr($removed,$commaposition); - $removed =~ s/^[,\s]+//; # remove any comma or space - } else { - $removed = ""; # no more entries - } - if (length($addstr) > MAX_LINE_LENGTH) { - my $commaposition = find_wrap_point($added, MAX_LINE_LENGTH); - $addstr = substr($added,0,$commaposition); - $added = substr($added,$commaposition); - $added =~ s/^[,\s]+//; # remove any comma or space - } else { - $added = ""; # no more entries - } - $addstr = SqlQuote($addstr); - $removestr = SqlQuote($removestr); - my $fieldid = GetFieldID($col); - SendSQL("INSERT INTO bugs_activity " . - "(bug_id,who,bug_when,fieldid,removed,added) VALUES " . - "($i,$whoid," . SqlQuote($timestamp) . ",$fieldid,$removestr,$addstr)"); - } -} - ############# Live code below here (that is, not subroutine defs) ############# use Bugzilla; diff --git a/editmilestones.cgi b/editmilestones.cgi index 32e6790c2..a2d4d4f5d 100755 --- a/editmilestones.cgi +++ b/editmilestones.cgi @@ -25,6 +25,7 @@ require "globals.pl"; use Bugzilla::Constants; use Bugzilla::Config qw(:DEFAULT $datadir); use Bugzilla::User; +use Bugzilla::Bug; use vars qw($template $vars); |