summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Status.pm
diff options
context:
space:
mode:
authorlpsolit%gmail.com <>2007-07-28 07:54:36 +0200
committerlpsolit%gmail.com <>2007-07-28 07:54:36 +0200
commit737535fcbcfd91d7c15eab2f43386333af113797 (patch)
tree11f720ceb06a1774840735eb9dc602b47252b97a /Bugzilla/Status.pm
parent0885b2b60ea61f2b3ca8d1f61049412f340b6c6d (diff)
downloadbugzilla-737535fcbcfd91d7c15eab2f43386333af113797.tar.gz
bugzilla-737535fcbcfd91d7c15eab2f43386333af113797.tar.xz
Bug 389835: Various issues when changing several bugs at once - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=mkanat
Diffstat (limited to 'Bugzilla/Status.pm')
-rw-r--r--Bugzilla/Status.pm37
1 files changed, 36 insertions, 1 deletions
diff --git a/Bugzilla/Status.pm b/Bugzilla/Status.pm
index cf8f98efa..9af0f043c 100644
--- a/Bugzilla/Status.pm
+++ b/Bugzilla/Status.pm
@@ -93,6 +93,28 @@ sub can_change_to {
return $self->{'can_change_to'};
}
+sub can_change_from {
+ my $self = shift;
+ my $dbh = Bugzilla->dbh;
+
+ if (!defined $self->{'can_change_from'}) {
+ my $old_status_ids = $dbh->selectcol_arrayref('SELECT old_status
+ FROM status_workflow
+ INNER JOIN bug_status
+ ON id = old_status
+ WHERE isactive = 1
+ AND new_status = ?
+ AND old_status IS NOT NULL',
+ undef, $self->id);
+
+ # Allow the bug status to remain unchanged.
+ push(@$old_status_ids, $self->id);
+ $self->{'can_change_from'} = Bugzilla::Status->new_from_list($old_status_ids);
+ }
+
+ return $self->{'can_change_from'};
+}
+
sub add_missing_bug_status_transitions {
my $bug_status = shift || Bugzilla->params->{'duplicate_or_move_bug_status'};
my $dbh = Bugzilla->dbh;
@@ -161,7 +183,20 @@ below.
=item C<can_change_to>
Description: Returns the list of active statuses a bug can be changed to
- given the current bug status.
+ given the current bug status. If this method is called as a
+ class method, then it returns all bug statuses available on
+ bug creation.
+
+ Params: none.
+
+ Returns: A list of Bugzilla::Status objects.
+
+=item C<can_change_from>
+
+ Description: Returns the list of active statuses a bug can be changed from
+ given the new bug status. If the bug status is available on
+ bug creation, this method doesn't return this information.
+ You have to call C<can_change_to> instead.
Params: none.