зеркало из https://github.com/mozilla/pjs.git
Bug 277454: Bugs in inactivated groups don't show padlocks on the buglist - Patch by Marc Schumann <wurblzap@gmail.com> r=LpSolit a=justdave
This commit is contained in:
Родитель
3f4d9dc4e2
Коммит
992ad7bca2
|
@ -894,16 +894,16 @@ if (@bugidlist) {
|
|||
$dbh->sql_group_by('bugs.bug_id'));
|
||||
$sth->execute();
|
||||
while (my ($bug_id, $min_membercontrol) = $sth->fetchrow_array()) {
|
||||
$min_membercontrol{$bug_id} = $min_membercontrol;
|
||||
$min_membercontrol{$bug_id} = $min_membercontrol || CONTROLMAPNA;
|
||||
}
|
||||
foreach my $bug (@bugs) {
|
||||
next unless defined($min_membercontrol{$bug->{'bug_id'}});
|
||||
if ($min_membercontrol{$bug->{'bug_id'}} == CONTROLMAPSHOWN
|
||||
|| $min_membercontrol{$bug->{'bug_id'}} == CONTROLMAPDEFAULT) {
|
||||
$bug->{'secure_mode'} = 'manual';
|
||||
} elsif ($min_membercontrol{$bug->{'bug_id'}} == CONTROLMAPMANDATORY) {
|
||||
if ($min_membercontrol{$bug->{'bug_id'}} == CONTROLMAPMANDATORY) {
|
||||
$bug->{'secure_mode'} = 'implied';
|
||||
}
|
||||
else {
|
||||
$bug->{'secure_mode'} = 'manual';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3314,7 +3314,7 @@ if ($mapcnt == 0) {
|
|||
# First, get all the existing products and their groups.
|
||||
$sth = $dbh->prepare("SELECT groups.id, products.id, groups.name, " .
|
||||
"products.name FROM groups, products " .
|
||||
"WHERE isbuggroup != 0 AND isactive != 0");
|
||||
"WHERE isbuggroup != 0");
|
||||
$sth->execute();
|
||||
while (my ($groupid, $productid, $groupname, $productname)
|
||||
= $sth->fetchrow_array()) {
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
# Contributor(s): Terry Weissman <terry@mozilla.org>
|
||||
# Matthew Tuck <matty@chariot.net.au>
|
||||
# Max Kanat-Alexander <mkanat@bugzilla.org>
|
||||
# Marc Schumann <wurblzap@gmail.com>
|
||||
|
||||
use strict;
|
||||
|
||||
|
@ -175,6 +176,75 @@ if (defined $cgi->param('cleangroupsnow')) {
|
|||
"- reduced from $before records to $after records");
|
||||
}
|
||||
|
||||
###########################################################################
|
||||
# Create missing group_control_map entries
|
||||
###########################################################################
|
||||
|
||||
if (defined $cgi->param('createmissinggroupcontrolmapentries')) {
|
||||
Status(qq{OK, now creating <code>SHOWN</code> member control entries
|
||||
for product/group combinations lacking one.});
|
||||
|
||||
my $na = CONTROLMAPNA;
|
||||
my $shown = CONTROLMAPSHOWN;
|
||||
my $insertsth = $dbh->prepare(
|
||||
qq{INSERT INTO group_control_map (
|
||||
group_id, product_id, entry,
|
||||
membercontrol, othercontrol, canedit
|
||||
)
|
||||
VALUES (
|
||||
?, ?, 0,
|
||||
$shown, $na, 0
|
||||
)});
|
||||
my $updatesth = $dbh->prepare(qq{UPDATE group_control_map
|
||||
SET membercontrol = $shown
|
||||
WHERE group_id = ?
|
||||
AND product_id = ?});
|
||||
my $counter = 0;
|
||||
|
||||
# Find all group/product combinations used for bugs but not set up
|
||||
# correctly in group_control_map
|
||||
my $invalid_combinations = $dbh->selectall_arrayref(
|
||||
qq{ SELECT bugs.product_id,
|
||||
bgm.group_id,
|
||||
gcm.membercontrol,
|
||||
groups.name,
|
||||
products.name
|
||||
FROM bugs
|
||||
INNER JOIN bug_group_map AS bgm
|
||||
ON bugs.bug_id = bgm.bug_id
|
||||
INNER JOIN groups
|
||||
ON bgm.group_id = groups.id
|
||||
INNER JOIN products
|
||||
ON bugs.product_id = products.id
|
||||
LEFT JOIN group_control_map AS gcm
|
||||
ON bugs.product_id = gcm.product_id
|
||||
AND bgm.group_id = gcm.group_id
|
||||
WHERE COALESCE(gcm.membercontrol, $na) = $na
|
||||
} . $dbh->sql_group_by('bugs.product_id, bgm.group_id'));
|
||||
|
||||
foreach (@$invalid_combinations) {
|
||||
my ($product_id, $group_id, $currentmembercontrol,
|
||||
$group_name, $product_name) = @$_;
|
||||
|
||||
$counter++;
|
||||
if (defined($currentmembercontrol)) {
|
||||
Status(qq{Updating <code>NA/<em>xxx</em></code> group control
|
||||
setting for group <em>$group_name</em> to
|
||||
<code>SHOWN/<em>xxx</em></code> in product
|
||||
<em>$product_name</em>.});
|
||||
$updatesth->execute($group_id, $product_id);
|
||||
}
|
||||
else {
|
||||
Status(qq{Generating <code>SHOWN/NA</code> group control setting
|
||||
for group <em>$group_name</em> in product
|
||||
<em>$product_name</em>.});
|
||||
$insertsth->execute($group_id, $product_id);
|
||||
}
|
||||
}
|
||||
|
||||
Status("Repaired $counter defective group control settings.");
|
||||
}
|
||||
|
||||
###########################################################################
|
||||
# Send unsent mail
|
||||
###########################################################################
|
||||
|
@ -656,8 +726,8 @@ if (defined $cgi->param('rebuildkeywordcache')) {
|
|||
# General bug checks
|
||||
###########################################################################
|
||||
|
||||
sub BugCheck ($$) {
|
||||
my ($middlesql, $errortext) = @_;
|
||||
sub BugCheck ($$;$$) {
|
||||
my ($middlesql, $errortext, $repairparam, $repairtext) = @_;
|
||||
|
||||
SendSQL("SELECT DISTINCT bugs.bug_id " .
|
||||
"FROM $middlesql " .
|
||||
|
@ -672,6 +742,11 @@ sub BugCheck ($$) {
|
|||
|
||||
if (@badbugs) {
|
||||
Alert("$errortext: " . BugListLinks(@badbugs));
|
||||
if ($repairparam) {
|
||||
$repairtext ||= 'Repair these bugs';
|
||||
print qq{<a href="sanitycheck.cgi?$repairparam=1">$repairtext</a>.},
|
||||
'<p>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -763,10 +838,12 @@ BugCheck("bugs
|
|||
LEFT JOIN group_control_map
|
||||
ON bugs.product_id = group_control_map.product_id
|
||||
AND bug_group_map.group_id = group_control_map.group_id
|
||||
WHERE groups.isactive != 0
|
||||
AND ((group_control_map.membercontrol = " . CONTROLMAPNA . ")
|
||||
WHERE ((group_control_map.membercontrol = " . CONTROLMAPNA . ")
|
||||
OR (group_control_map.membercontrol IS NULL))",
|
||||
"Have groups not permitted for their products");
|
||||
'Have groups not permitted for their products',
|
||||
'createmissinggroupcontrolmapentries',
|
||||
'Permit the missing groups for the affected products
|
||||
(set member control to <code>SHOWN</code>)');
|
||||
|
||||
BugCheck("bugs
|
||||
INNER JOIN bug_group_map
|
||||
|
@ -776,8 +853,7 @@ BugCheck("bugs
|
|||
LEFT JOIN group_control_map
|
||||
ON bugs.product_id = group_control_map.product_id
|
||||
AND bug_group_map.group_id = group_control_map.group_id
|
||||
WHERE groups.isactive != 0
|
||||
AND group_control_map.membercontrol = " . CONTROLMAPMANDATORY . "
|
||||
WHERE group_control_map.membercontrol = " . CONTROLMAPMANDATORY . "
|
||||
AND bug_group_map.group_id IS NULL",
|
||||
"Are missing groups required for their products");
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче