зеркало из https://github.com/mozilla/pjs.git
Bug 301440: Move LogActivityEntry out of CGI.pl - Patch by Fr�d�ric Buclin <LpSolit@gmail.com> r=mkanat a=justdave
This commit is contained in:
Родитель
b20eafa4b5
Коммит
03bfc9888e
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче