summaryrefslogtreecommitdiffstats
path: root/extensions/Review/Extension.pm
diff options
context:
space:
mode:
author <Dylan>2014-03-06 08:13:11 +0100
committerByron Jones <bjones@mozilla.com>2014-03-06 08:13:11 +0100
commit8738a27c2ff267266e3f4db17e71305c6840fa42 (patch)
tree41d6ad668f1a04df29e22132d58d0199f55fc2d1 /extensions/Review/Extension.pm
parent51539e843226f3a85776159d2cb68ce2cc192d24 (diff)
downloadbugzilla-8738a27c2ff267266e3f4db17e71305c6840fa42.tar.gz
bugzilla-8738a27c2ff267266e3f4db17e71305c6840fa42.tar.xz
Bug 956229: develop a system to track the lifetime of review/feedback/needinfo requests
Diffstat (limited to 'extensions/Review/Extension.pm')
-rw-r--r--extensions/Review/Extension.pm35
1 files changed, 34 insertions, 1 deletions
diff --git a/extensions/Review/Extension.pm b/extensions/Review/Extension.pm
index b495c9ecd..8d069e8e6 100644
--- a/extensions/Review/Extension.pm
+++ b/extensions/Review/Extension.pm
@@ -15,6 +15,7 @@ our $VERSION = '1';
use Bugzilla;
use Bugzilla::Constants;
use Bugzilla::Error;
+use Bugzilla::Extension::Review::FlagStateActivity;
use Bugzilla::Extension::Review::Util;
use Bugzilla::Install::Filesystem;
use Bugzilla::User;
@@ -196,6 +197,9 @@ sub object_end_of_create {
elsif (_is_countable_flag($object) && $object->requestee_id && $object->status eq '?') {
_adjust_request_count($object, +1);
}
+ if (_is_countable_flag($object)) {
+ $self->_log_flag_state_activity($object, $object->status);
+ }
}
sub object_end_of_update {
@@ -238,6 +242,17 @@ sub object_end_of_update {
}
}
+sub flag_updated {
+ my ( $self, $args ) = @_;
+ my $flag = $args->{flag};
+ my $changes = $args->{changes};
+
+ return unless scalar(keys %$changes);
+ if ( _is_countable_flag($flag) ) {
+ $self->_log_flag_state_activity( $flag, $flag->status );
+ }
+}
+
sub object_before_delete {
my ($self, $args) = @_;
my $object = $args->{object};
@@ -245,6 +260,10 @@ sub object_before_delete {
if (_is_countable_flag($object) && $object->requestee_id && $object->status eq '?') {
_adjust_request_count($object, -1);
}
+
+ if (_is_countable_flag($object)) {
+ $self->_log_flag_state_activity($object, 'X');
+ }
}
sub _is_countable_flag {
@@ -254,6 +273,21 @@ sub _is_countable_flag {
return $type_name eq 'review' || $type_name eq 'feedback' || $type_name eq 'needinfo';
}
+sub _log_flag_state_activity {
+ my ($self, $flag, $status) = @_;
+
+ Bugzilla::Extension::Review::FlagStateActivity->create({
+ flag_when => $flag->modification_date,
+ type_id => $flag->type_id,
+ flag_id => $flag->id,
+ setter_id => $flag->setter_id,
+ requestee_id => $flag->requestee_id,
+ bug_id => $flag->bug_id,
+ attachment_id => $flag->attach_id,
+ status => $status,
+ });
+}
+
sub _adjust_request_count {
my ($flag, $add) = @_;
return unless my $requestee_id = $flag->requestee_id;
@@ -626,7 +660,6 @@ sub db_schema_abstract_schema {
},
],
};
-
}
sub install_update_db {