]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 278010 : checksetup.pl should fix empty group names
authortravis%sedsystems.ca <>
Fri, 28 Jan 2005 03:56:34 +0000 (03:56 +0000)
committertravis%sedsystems.ca <>
Fri, 28 Jan 2005 03:56:34 +0000 (03:56 +0000)
Patch by Nick.Barnes@pobox.com   r=wurblzap  a=myk

checksetup.pl

index a01d0962a0ca86191b902a243c56795ce49341b8..6bbedaaeac3ce24fea90a6e82f13b731459877db 100755 (executable)
@@ -4660,6 +4660,35 @@ if (($fielddef = GetFieldDef("logincookies", "lastused")) &&
     ChangeFieldType ('logincookies', 'lastused', 'DATETIME NOT NULL');
 }
 
+# 2005-01-12 Nick Barnes <nb@ravenbrook.com> bug 278010
+# Rename any group which has an empty name.
+# Note that there can be at most one such group (because of
+# the SQL index on the name column).
+$sth = $dbh->prepare("SELECT id FROM groups where name = ''");
+$sth->execute();
+my ($emptygroupid) = $sth->fetchrow_array();
+if ($emptygroupid) {
+    # There is a group with an empty name; find a name to rename it
+    # as.  Must avoid collisions with existing names.  Start with
+    # group_$gid and add _<n> if necessary.
+    my $trycount = 0;
+    my $trygroupname;
+    my $trygroupsth = $dbh->prepare("SELECT id FROM groups where name = ?");
+    do {
+        $trygroupname = "group_$emptygroupid";
+        if ($trycount > 0) {
+            $trygroupname .= "_$trycount";
+        }
+        $trygroupsth->execute($trygroupname);
+        if ($trygroupsth->rows > 0) {
+            $trycount ++;
+        }
+    } while ($trygroupsth->rows > 0);
+    $sth = $dbh->prepare("UPDATE groups SET name = ? WHERE id = $emptygroupid");
+    $sth->execute($trygroupname);
+    print "Group $emptygroupid had an empty name; renamed as '$trygroupname'.\n";
+}
+
 #
 # Final checks...