use Debbugs::User;
use HTML::Entities qw(encode_entities);
-use Debbugs::Config qw(:globals);
+use Debbugs::Config qw(:globals :config);
use Debbugs::CGI qw(html_escape);
$lib_path = $gLibPath;
require "$lib_path/errorlib";
$user =~ s/[(].*[)]//;
$user =~ s/^\s*(\S+)\s+.*$/$1/;
$user = "" unless (Debbugs::User::is_valid_user($user));
+my $indicated_user = 0;
my $quickabort = 0;
-my $fuckheads = "(" . join("|", @gFuckheads) . ")";
-if (@gFuckheads and $replyto =~ m/$fuckheads/) {
- &transcript("This service is unavailable.\n\n");
+my $fuckheads = "(" . join("|", @gExcludeFromControl) . ")";
+if (@gExcludeFromControl and $replyto =~ m/$fuckheads/) {
+ &transcript("You have been specifically excluded from using the\ncontrol interface.\n\n");
+ &transcript("Have a nice day\n\n.");
$quickabort = 1;
}
my $olduser = ($user ne "" ? " (was $user)" : "");
&transcript("Setting user to $newuser$olduser.\n");
$user = $newuser;
+ $indicated_user = 1;
} else {
&transcript("Selected user id ($newuser) invalid, sorry\n");
$errors++;
$user = "";
+ $indicated_user = 1;
}
} elsif (m/^usercategory\s+(\S+)(\s+\[hidden\])?\s*$/i) {
$ok++;
my @cats;
my $bad = 0;
my $catsec = 0;
- while (++$procline <= $#bodylines) {
+ if ($user eq "") {
+ &transcript("No valid user selected\n");
+ $errors++;
+ next;
+ }
+ if (not $indicated_user and defined $user) {
+ &transcript("User is $user");
+ $indicated_user = 1;
+ }
+ while (++$procline <= $#bodylines) {
unless ($bodylines[$procline] =~ m/^\s*([*+])\s*(\S.*)$/) {
$procline--;
last;
if (@cats) {
&transcript("Added usercategory $catname.\n\n");
$u->{"categories"}->{$catname} = [ @cats ];
+ if (not $hidden) {
+ push @{$u->{visible_cats}},$catname;
+ }
} else {
&transcript("Removed usercategory $catname.\n\n");
delete $u->{"categories"}->{$catname};
+ @{$u->{visible_cats}} = grep {$_ ne $catname} @{$u->{visible_cats}};
}
$u->write();
} elsif (m/^usertags?\s+\#?(-?\d+)\s+(([=+-])\s*)?(\S.*)?$/i) {
if ($user eq "") {
&transcript("No valid user selected\n");
$errors++;
+ $indicated_user = 1;
} elsif (&setbug) {
+ if (not $indicated_user and defined $user) {
+ &transcript("User is $user");
+ $indicated_user = 1;
+ }
&nochangebug;
my %ut;
Debbugs::User::read_usertags(\%ut, $user);
} while (&getnextbug);
}
}
- } elsif (m/^found\s+\#?(-?\d+)(?:\s+(\d.*))?$/i) {
+ } elsif (m{^found\s+\#?(-?\d+)
+ (?:\s+(?:$config{package_name_re}\/)?
+ ($config{package_version_re}))?$}ix) {
$ok++;
$ref= $1;
$version= $2;
&addmaintainers($data);
removefoundversions($data, $data->{package}, $version, 'binary');
} while (&getnextbug);
- }
- } elsif (m/^submitter\s+\#?(-?\d+)\s+\!$/i ? ($newsubmitter=$replyto, 1) :
+ }
+ }
+ elsif (m[^fixed\s+\#?(-?\d+)\s+
+ ((?:$config{package_name_re}\/)?
+ $config{package_version_re})\s*$]ix) {
+ $ok++;
+ $ref= $1;
+ $version= $2;
+ if (&setbug) {
+ $action=
+ defined($version) ?
+ "$gBug marked as fixed in version $version." :
+ "$gBug reopened.";
+ do {
+ &addmaintainers($data);
+ addfixedversions($data, $data->{package}, $version, 'binary');
+ } while (&getnextbug);
+ }
+ }
+ elsif (m[^notfixed\s+\#?(-?\d+)\s+
+ ((?:$config{package_name_re}\/)?
+ $config{package_version_re})\s*$]ix) {
+ $ok++;
+ $ref= $1;
+ $version= $2;
+ if (&setbug) {
+ $action=
+ defined($version) ?
+ "$gBug marked as not fixed in version $version." :
+ "$gBug reopened.";
+ do {
+ &addmaintainers($data);
+ removefixedversions($data, $data->{package}, $version, 'binary');
+ } while (&getnextbug);
+ }
+ }
+ elsif (m/^submitter\s+\#?(-?\d+)\s+\!$/i ? ($newsubmitter=$replyto, 1) :
m/^submitter\s+\#?(-?\d+)\s+(\S.*\S)$/i ? ($newsubmitter=$2, 1) : 0) {
$ok++;
$ref= $1;
&addmaintainers($data);
my $oldtitle = $data->{subject};
$data->{subject}= $newtitle;
- $action= "Changed $gBug title to $newtitle from $oldtitle.";
+ $action= "Changed $gBug title to `$newtitle' from `$oldtitle'.";
&savebug;
&transcript("$action\n");
if (length($data->{done})) {
}
}
}
- } elsif (m/^package\s+(\S.*\S)?\s*$/i) {
+ } elsif (m/^package\:?\s+(\S.*\S)?\s*$/i) {
$ok++;
my @pkgs = split /\s+/, $1;
if (scalar(@pkgs) > 0) {