Bug 1143867: Optimize set_comment_is_private() and isopened()
r=dkl a=sgreen git-svn-id: svn://10.0.0.236/trunk@265904 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
c2b747240b
commit
a82ef31aec
@ -1 +1 @@
|
|||||||
9358
|
9359
|
||||||
@ -1 +1 @@
|
|||||||
cb8ec961ded401de227b023a7ff813330d0f3a08
|
c785e6092b5061e7aee51ab2ec3607de444cb4c9
|
||||||
@ -2505,29 +2505,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;
|
||||||
|
|
||||||
# We also allow people to pass in a hash of comment ids to update.
|
$comments = { $comments => $isprivate } unless ref $comments;
|
||||||
if (ref $comment_id) {
|
|
||||||
while (my ($id, $is) = each %$comment_id) {
|
foreach my $comment (@{$self->comments}) {
|
||||||
$self->set_comment_is_private($id, $is);
|
# Skip unmodified comment privacy.
|
||||||
|
next unless exists $comments->{$comment->id};
|
||||||
|
|
||||||
|
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;
|
||||||
@ -3586,7 +3591,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 {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user