Commit fcd44591 authored by Frédéric Buclin's avatar Frédéric Buclin

Bug 1143867: Optimize set_comment_is_private() and isopened()

r=dkl a=sgreen
parent 467bef6d
...@@ -2498,29 +2498,34 @@ sub reset_assigned_to { ...@@ -2498,29 +2498,34 @@ sub reset_assigned_to {
} }
sub set_bug_ignored { $_[0]->set('bug_ignored', $_[1]); } sub set_bug_ignored { $_[0]->set('bug_ignored', $_[1]); }
sub set_cclist_accessible { $_[0]->set('cclist_accessible', $_[1]); } sub set_cclist_accessible { $_[0]->set('cclist_accessible', $_[1]); }
sub set_comment_is_private { sub set_comment_is_private {
my ($self, $comment_id, $isprivate) = @_; my ($self, $comments, $isprivate) = @_;
$self->{comment_isprivate} ||= [];
my $is_insider = Bugzilla->user->is_insider;
$comments = { $comments => $isprivate } unless ref $comments;
# We also allow people to pass in a hash of comment ids to update. foreach my $comment (@{$self->comments}) {
if (ref $comment_id) { # Skip unmodified comment privacy.
while (my ($id, $is) = each %$comment_id) { next unless exists $comments->{$comment->id};
$self->set_comment_is_private($id, $is);
my $isprivate = delete $comments->{$comment->id} ? 1 : 0;
if ($isprivate != $comment->is_private) {
ThrowUserError('user_not_insider') unless $is_insider;
$comment->set_is_private($isprivate);
push @{$self->{comment_isprivate}}, $comment;
} }
return;
} }
my ($comment) = grep($comment_id == $_->id, @{ $self->comments }); # If there are still entries in $comments, then they are illegal.
ThrowUserError('comment_invalid_isprivate', { id => $comment_id }) ThrowUserError('comment_invalid_isprivate', { id => join(', ', keys %$comments) })
if !$comment; if scalar keys %$comments;
$isprivate = $isprivate ? 1 : 0; # If no comment privacy has been modified, remove this key.
if ($isprivate != $comment->is_private) { delete $self->{comment_isprivate} unless scalar @{$self->{comment_isprivate}};
ThrowUserError('user_not_insider') if !Bugzilla->user->is_insider;
$self->{comment_isprivate} ||= [];
$comment->set_is_private($isprivate);
push @{$self->{comment_isprivate}}, $comment;
}
} }
sub set_component { sub set_component {
my ($self, $name) = @_; my ($self, $name) = @_;
my $old_comp = $self->component_obj; my $old_comp = $self->component_obj;
...@@ -3579,7 +3584,10 @@ sub flags { ...@@ -3579,7 +3584,10 @@ sub flags {
sub isopened { sub isopened {
my $self = shift; my $self = shift;
return is_open_state($self->{bug_status}) ? 1 : 0; unless (exists $self->{isopened}) {
$self->{isopened} = is_open_state($self->{bug_status}) ? 1 : 0;
}
return $self->{isopened};
} }
sub keywords { sub keywords {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment