]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 301440: Move LogActivityEntry out of CGI.pl - Patch by Frédéric Buclin <LpSolit...
authorlpsolit%gmail.com <>
Wed, 20 Jul 2005 22:58:44 +0000 (22:58 +0000)
committerlpsolit%gmail.com <>
Wed, 20 Jul 2005 22:58:44 +0000 (22:58 +0000)
Bugzilla/Bug.pm
CGI.pl
editmilestones.cgi

index a82df3b69b7abf534bdaba07fd485557460e7175..c7e7637485442955e062be65650840e303b7d9c9 100755 (executable)
@@ -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 539ef589b206063b4f47ce344f0cab355a61cc1a..5fbbe48f44854d7ba37cbd4e9e2a5a0695cbc709 100644 (file)
--- 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;
index 32e6790c26710f6c0018786d6cdee07a1ea29fa4..a2d4d4f5df572e29857e718cddeb49642e7594de 100755 (executable)
@@ -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);