return $self->{'user'} if exists $self->{'user'};
return {} if $self->{'error'};
- my @movers = map { trim $_ } split(",", Param("movers"));
- my $canmove = Param("move-enabled") && Bugzilla->user->id &&
- (lsearch(\@movers, Bugzilla->user->login) != -1);
+ my $user = Bugzilla->user;
+ my $canmove = Param('move-enabled') && $user->is_mover;
# In the below, if the person hasn't logged in, then we treat them
# as if they can do anything. That's because we don't know why they
# Display everything as if they have all the permissions in the
# world; their permissions will get checked when they log in and
# actually try to make the change.
- my $unknown_privileges = !Bugzilla->user->id
- || Bugzilla->user->in_group("editbugs");
+ my $unknown_privileges = !$user->id
+ || $user->in_group("editbugs");
my $canedit = $unknown_privileges
- || Bugzilla->user->id == $self->{assigned_to_id}
+ || $user->id == $self->{assigned_to_id}
|| (Param('useqacontact')
&& $self->{'qa_contact_id'}
- && Bugzilla->user->id == $self->{qa_contact_id});
+ && $user->id == $self->{qa_contact_id});
my $canconfirm = $unknown_privileges
- || Bugzilla->user->in_group("canconfirm");
- my $isreporter = Bugzilla->user->id
- && Bugzilla->user->id == $self->{reporter_id};
+ || $user->in_group("canconfirm");
+ my $isreporter = $user->id
+ && $user->id == $self->{reporter_id};
$self->{'user'} = {canmove => $canmove,
canconfirm => $canconfirm,
return defined($wants_mail) ? 1 : 0;
}
-
+
+sub is_mover {
+ my $self = shift;
+
+ if (!defined $self->{'is_mover'}) {
+ my @movers = map { trim($_) } split(',', Param('movers'));
+ $self->{'is_mover'} = ($self->id
+ && lsearch(\@movers, $self->login) != -1);
+ }
+ return $self->{'is_mover'};
+}
+
sub get_userlist {
my $self = shift;
more general than C<wants_bug_mail>, allowing you to check e.g. permissions
for flag mail.
+=item C<is_mover>
+
+Returns true if the user is in the list of users allowed to move bugs
+to another database. Note that this method doesn't check whether bug
+moving is enabled.
+
=back
=head1 CLASS FUNCTIONS
'cmdtype',
'query_based_on');
$vars->{'order'} = $order;
-
-# The user's login account name (i.e. email address).
-my $login = Bugzilla->user->login;
-
$vars->{'caneditbugs'} = UserInGroup('editbugs');
-# Whether or not this user is authorized to move bugs to another installation.
-$vars->{'ismover'} = 1
- if Param('move-enabled')
- && defined($login)
- && Param('movers') =~ /^(\Q$login\E[,\s])|([,\s]\Q$login\E[,\s]+)/;
-
my @bugowners = keys %$bugowners;
if (scalar(@bugowners) > 1 && UserInGroup('editbugs')) {
my $suffix = Param('emailsuffix');
if ($action eq Param('move-button-text')) {
Param('move-enabled') || ThrowUserError("move_bugs_disabled");
- my $exporter = $user->login;
- my $movers = Param('movers');
- $movers =~ s/\s?,\s?/|/g;
- $movers =~ s/@/\@/g;
- if ($exporter !~ /($movers)/) {
- ThrowUserError("auth_failure", {action => 'move',
- object => 'bugs'});
- }
+ $user->is_mover || ThrowUserError("auth_failure", {action => 'move',
+ object => 'bugs'});
# Moved bugs are marked as RESOLVED MOVED.
my $sth = $dbh->prepare("UPDATE bugs
$comment = $cgi->param('comment') . "\n\n";
}
$comment .= "Bug moved to " . Param('move-to-url') . ".\n\n";
- $comment .= "If the move succeeded, $exporter will receive a mail\n";
+ $comment .= "If the move succeeded, " . $user->login . " will receive a mail\n";
$comment .= "containing the number of the new bug in the other database.\n";
$comment .= "If all went well, please mark this bug verified, and paste\n";
$comment .= "in a link to the new bug. Otherwise, reopen this bug.\n";
# Now send emails.
foreach my $id (@idlist) {
- $vars->{'mailrecipients'} = { 'changer' => $exporter };
+ $vars->{'mailrecipients'} = { 'changer' => $user->login };
$vars->{'id'} = $id;
$vars->{'type'} = "move";
<input type="submit" value="Commit">
-[% IF ismover %]
+[% IF Param('move-enabled') && user.is_mover %]
<input type="submit" name="action" value="[% Param('move-button-text') %]">
[% END %]