]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Patch for bug 277622: Move DiffStrings() out of globals.pl into Bugzilla/Util.pm...
authorjocuri%softhome.net <>
Sun, 16 Jan 2005 21:02:34 +0000 (21:02 +0000)
committerjocuri%softhome.net <>
Sun, 16 Jan 2005 21:02:34 +0000 (21:02 +0000)
Bugzilla/Flag.pm
Bugzilla/Util.pm
globals.pl
process_bug.cgi

index 57ea5598281082d9e5d7a8b5f16f1d734bc24fa8..ffed79bdef706b98ac1f88a87235a5b44208f13e 100644 (file)
@@ -307,7 +307,7 @@ sub process {
 
     my $old_summaries = join(", ", @old_summaries);
     my $new_summaries = join(", ", @new_summaries);
-    my ($removed, $added) = &::DiffStrings($old_summaries, $new_summaries);
+    my ($removed, $added) = diff_strings($old_summaries, $new_summaries);
     if ($removed ne $added) {
         my $sql_removed = &::SqlQuote($removed);
         my $sql_added = &::SqlQuote($added);
index 0328c4f8686800b8ef85999df4cf7dfd76161094..125d911640e66e2f494fd7b4f45efc8fafd59406 100644 (file)
@@ -32,7 +32,7 @@ use base qw(Exporter);
                              html_quote url_quote value_quote xml_quote
                              css_class_quote
                              lsearch max min
-                             trim format_time);
+                             trim diff_strings format_time);
 
 use Bugzilla::Config;
 
@@ -146,6 +146,33 @@ sub trim {
     return $str;
 }
 
+sub diff_strings {
+    my ($oldstr, $newstr) = @_;
+
+    # Split the old and new strings into arrays containing their values.
+    $oldstr =~ s/[\s,]+/ /g;
+    $newstr =~ s/[\s,]+/ /g;
+    my @old = split(" ", $oldstr);
+    my @new = split(" ", $newstr);
+
+    # For each pair of (old, new) entries:
+    # If they're equal, set them to empty. When done, @old contains entries
+    # that were removed; @new contains ones that got added.
+
+    foreach my $oldv (@old) {
+        foreach my $newv (@new) {
+            next if ($newv eq '');
+            if ($oldv eq $newv) {
+                $newv = $oldv = '';
+            }
+        }
+    }
+    my $removed = join (", ", grep { $_ ne '' } @old);
+    my $added = join (", ", grep { $_ ne '' } @new);
+
+    return ($removed, $added);
+}
+
 sub format_time {
     my ($time) = @_;
 
@@ -208,8 +235,9 @@ Bugzilla::Util - Generic utility functions for bugzilla
   $val = max($a, $b, $c);
   $val = min($a, $b, $c);
 
-  # Functions for trimming variables
+  # Functions for manipulating strings
   $val = trim(" abc ");
+  ($removed, $added) = diff_strings($old, $new);
 
   # Functions for formatting time
   format_time($time);
@@ -315,7 +343,7 @@ Returns the minimum from a set of values.
 
 =back
 
-=head2 Trimming
+=head2 String Manipulation
 
 =over 4
 
@@ -324,6 +352,14 @@ Returns the minimum from a set of values.
 Removes any leading or trailing whitespace from a string. This routine does not
 modify the existing string.
 
+=item C<diff_strings($oldstr, $newstr)>
+
+Takes two strings containing a list of comma- or space-separated items
+and returns what items were removed from or added to the new one, 
+compared to the old one. Returns a list, where the first entry is a scalar
+containing removed items, and the second entry is a scalar containing added
+items.
+
 =back
 
 =head2 Formatting Time
index 5f599146f32223c1039bc33c7dda4a0429aeb5c6..81b99c8ac65598a73aa664a75ae3c6ec1dedceaf 100644 (file)
@@ -1442,35 +1442,6 @@ sub RemoveVotes {
     }
 }
 
-# Take two comma or space separated strings and return what
-# values were removed from or added to the new one.
-sub DiffStrings {
-    my ($oldstr, $newstr) = @_;
-
-    # Split the old and new strings into arrays containing their values.
-    $oldstr =~ s/[\s,]+/ /g;
-    $newstr =~ s/[\s,]+/ /g;
-    my @old = split(" ", $oldstr);
-    my @new = split(" ", $newstr);
-
-    # For each pair of (old, new) entries: 
-    # If they're equal, set them to empty. When done, @old contains entries
-    # that were removed; @new contains ones that got added.
-
-    foreach my $oldv (@old) {
-        foreach my $newv (@new) {
-            next if ($newv eq '');
-            if ($oldv eq $newv) {
-                $newv = $oldv = '';
-            }
-        }
-    }
-    my $removed = join (", ", grep { $_ ne '' } @old);
-    my $added = join (", ", grep { $_ ne '' } @new);
-
-    return ($removed, $added);
-}
-
 sub PerformSubsts {
     my ($str, $substs) = (@_);
     $str =~ s/%([a-z]*)%/(defined $substs->{$1} ? $substs->{$1} : Param($1))/eg;
index e389d45513fc62030042e580895cc0e7c5d6f1d9..d8ad4cafa26c1ad554caeb6c4dad2e29f6e77c55 100755 (executable)
@@ -37,6 +37,7 @@ require "CGI.pl";
 
 use Bugzilla::Bug;
 use Bugzilla::User;
+use Bugzilla::Util;
 use Bugzilla::RelationSet;
 
 # Use the Flag module to modify flag data if the user set flags.
@@ -1082,7 +1083,7 @@ sub LogDependencyActivity {
     my $newstr = SnapShotDeps($i, $target, $me);
     if ($oldstr ne $newstr) {
         # Figure out what's really different...
-        my ($removed, $added) = DiffStrings($oldstr, $newstr);
+        my ($removed, $added) = diff_strings($oldstr, $newstr);
         LogActivityEntry($i,$target,$removed,$added,$whoid,$timestamp);
         # update timestamp on target bug so midairs will be triggered
         SendSQL("UPDATE bugs SET delta_ts=NOW() WHERE bug_id=$i");
@@ -1687,7 +1688,7 @@ foreach my $id (@idlist) {
 
             # If this is the keyword field, only record the changes, not everything.
             if ($col eq 'keywords') {
-                ($old, $new) = DiffStrings($old, $new);
+                ($old, $new) = diff_strings($old, $new);
             }
 
             if ($col eq 'product') {