summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xBugzilla/Bug.pm48
-rw-r--r--CGI.pl37
-rwxr-xr-xeditmilestones.cgi1
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:
diff --git a/CGI.pl b/CGI.pl
index 539ef589b..5fbbe48f4 100644
--- a/CGI.pl
+++ b/CGI.pl
@@ -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);