From: Kohei Yoshino Date: Fri, 2 Aug 2019 16:35:46 +0000 (-0400) Subject: Bug 1565403 - Log how a bug was filed (via standard, guided, custom bug form or API) X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0837a10c11642a4bb71665fb4456442a9be620d4;p=thirdparty%2Fbugzilla.git Bug 1565403 - Log how a bug was filed (via standard, guided, custom bug form or API) --- diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index bc5416fc4..5a224451f 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -91,6 +91,7 @@ sub DB_COLUMNS { delta_ts estimated_time everconfirmed + filed_via lastdiffed op_sys priority @@ -130,6 +131,7 @@ sub VALIDATORS { dup_id => \&_check_dup_id, estimated_time => \&_check_time_field, everconfirmed => \&Bugzilla::Object::check_boolean, + filed_via => \&_check_filed_via, groups => \&_check_groups, keywords => \&_check_keywords, op_sys => \&_check_select_field, @@ -311,6 +313,15 @@ use constant REQUIRED_FIELD_MAP => use constant EXTRA_REQUIRED_FIELDS => qw(creation_ts target_milestone cc qa_contact groups); +sub BUG_FILE_METHODS { + my @methods = qw(standard_form custom_form api); + + # Allow extensions to add other methods, e.g. `guided_form` + Bugzilla::Hook::process('bug_file_methods', {methods => \@methods}); + + return @methods; +} + with 'Bugzilla::Elastic::Role::Object'; sub ES_TYPE {'bug'} @@ -873,6 +884,7 @@ sub possible_duplicates { # C - A string. # C - The initial status of the bug, a string. # C - The URL field. +# C - How this bug is being filed. # # C - The full login name of the user who the bug is # initially assigned to. @@ -1948,6 +1960,13 @@ sub _check_component { return $object; } +sub _check_filed_via { + my ($invocant, $method) = @_; + + return $method if defined $method && grep(/^$method$/, BUG_FILE_METHODS()); + return 'unknown'; +} + sub _check_creation_ts { return Bugzilla->dbh->selectrow_array('SELECT LOCALTIMESTAMP(0)'); } @@ -2633,7 +2652,7 @@ sub fields { # Standard Fields # Keep this ordering in sync with bugzilla.dtd. - qw(bug_id alias creation_ts short_desc delta_ts + qw(bug_id alias filed_via creation_ts short_desc delta_ts reporter_accessible cclist_accessible classification_id classification product component version rep_platform op_sys @@ -3675,6 +3694,7 @@ sub deadline { return $_[0]->{deadline} } sub delta_ts { return $_[0]->{delta_ts} } sub error { return $_[0]->{error} } sub everconfirmed { return $_[0]->{everconfirmed} } +sub filed_via { return $_[0]->{filed_via} } sub lastdiffed { return $_[0]->{lastdiffed} } sub op_sys { return $_[0]->{op_sys} } sub priority { return $_[0]->{priority} } diff --git a/Bugzilla/DB/Schema.pm b/Bugzilla/DB/Schema.pm index dce61c08b..2ea176c50 100644 --- a/Bugzilla/DB/Schema.pm +++ b/Bugzilla/DB/Schema.pm @@ -247,6 +247,7 @@ use constant ABSTRACT_SCHEMA => { bug_severity => {TYPE => 'varchar(64)', NOTNULL => 1}, bug_status => {TYPE => 'varchar(64)', NOTNULL => 1}, bug_type => {TYPE => 'varchar(20)', NOTNULL => 1}, + filed_via => {TYPE => 'varchar(40)', NOTNULL => 1, DEFAULT => "'unknown'"}, creation_ts => {TYPE => 'DATETIME'}, delta_ts => {TYPE => 'DATETIME', NOTNULL => 1}, short_desc => {TYPE => 'varchar(255)', NOTNULL => 1}, diff --git a/Bugzilla/Field.pm b/Bugzilla/Field.pm index 503befdb9..e19f85435 100644 --- a/Bugzilla/Field.pm +++ b/Bugzilla/Field.pm @@ -423,6 +423,7 @@ use constant DEFAULT_FIELDS => ( }, {name => 'target_milestone', desc => 'Target Milestone', buglist => 1}, + {name => 'filed_via', desc => 'Filed via', buglist => 1,}, { name => 'creation_ts', desc => 'Opened', diff --git a/Bugzilla/Hook.pm b/Bugzilla/Hook.pm index 22b15c876..ad6c8ebab 100644 --- a/Bugzilla/Hook.pm +++ b/Bugzilla/Hook.pm @@ -400,6 +400,20 @@ User is not a sufficiently empowered user, so B. =back +=head2 bug_file_methods + +This happens in L, and allows you to add one or +more valid file methods stored with bugs. + +Params: + +=over + +=item C - A arrayref containing an array of method names. Push your +method name(s) onto the array. + +=back + =head2 bug_fields Allows the addition of database fields from the bugs table to the standard diff --git a/Bugzilla/Install/DB.pm b/Bugzilla/Install/DB.pm index 6cee28e10..6ff2d4d51 100644 --- a/Bugzilla/Install/DB.pm +++ b/Bugzilla/Install/DB.pm @@ -798,6 +798,10 @@ sub update_table_definitions { _add_oauth2_jwt_support(); + # Bug 1565403 - kohei.yoshino@gmail.com + $dbh->bz_add_column('bugs', 'filed_via', + {TYPE => 'varchar(40)', NOTNULL => 1, DEFAULT => "'unknown'"}); + ################################################################ # New --TABLE-- changes should go *** A B O V E *** this point # ################################################################ diff --git a/Bugzilla/WebService/Bug.pm b/Bugzilla/WebService/Bug.pm index 5b1dca146..1ac75a585 100644 --- a/Bugzilla/WebService/Bug.pm +++ b/Bugzilla/WebService/Bug.pm @@ -878,6 +878,9 @@ sub create { $params = Bugzilla::Bug::map_fields($params); + # Define the bug file method if missing + $params->{filed_via} //= 'api'; + my $flags = delete $params->{flags}; # We start a nested transaction in case flag setting fails @@ -1526,6 +1529,9 @@ sub _bug_to_hash { if (filter_wants $params, 'duplicates') { $item{'duplicates'} = [map { $self->type('int', $_->id) } @{$bug->duplicates}]; } + if (filter_wants $params, 'filed_via', ['extra']) { + $item{'filed_via'} = $self->type('string', $bug->filed_via); + } if (filter_wants $params, 'groups') { my @groups = map { $self->type('string', $_->name) } @{$bug->groups_in}; $item{'groups'} = \@groups; @@ -2868,6 +2874,13 @@ take. If you are not in the time-tracking group, this field will not be included in the return value. +=item C + +How the bug was filed, e.g. C. + +This is an B field returned only by specifying C or +C<_extra> in C. + =item C An array of hashes containing the information about flags currently set @@ -3218,8 +3231,9 @@ and all custom fields. in Bugzilla B<4.4>. =item The C, C, C, C, -C, C, C, C, C, -C and C fields were added in Bugzilla B<6.0>. +C, C, C, C, C, +C, C and C fields were added in Bugzilla +B<6.0>. =back @@ -3497,6 +3511,10 @@ backwards compatibility with older Bugzillas. C The description (initial comment) of the bug. +=item C + +C Searches for bugs that were created with this method. + =item C C The numeric id of the bug. @@ -3726,6 +3744,9 @@ the version the bug was found in. =item C (string) B - The description (initial comment) of the bug. Some Bugzilla installations require this to not be blank. +=item C (string) B - How the bug is being filed. +It will be C by default when filing through the API. + =item C (string) B - The operating system the bug was discovered on. diff --git a/bugzilla.dtd b/bugzilla.dtd index 88ebab14d..a9eb46935 100644 --- a/bugzilla.dtd +++ b/bugzilla.dtd @@ -5,7 +5,7 @@ maintainer CDATA #REQUIRED exporter CDATA #IMPLIED > - + diff --git a/extensions/BMO/template/en/default/bug/create/create-blocklist.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-blocklist.html.tmpl index f3c95fa15..63d95e0d9 100644 --- a/extensions/BMO/template/en/default/bug/create/create-blocklist.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-blocklist.html.tmpl @@ -131,6 +131,7 @@ window.addEventListener("DOMContentLoaded", function() { [% cgi = Bugzilla.cgi %]
+ diff --git a/extensions/BMO/template/en/default/bug/create/create-client-bounty.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-client-bounty.html.tmpl index 79d18b8a2..35c0ae02c 100644 --- a/extensions/BMO/template/en/default/bug/create/create-client-bounty.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-client-bounty.html.tmpl @@ -112,6 +112,7 @@ function validateAndSubmit() { + diff --git a/extensions/BMO/template/en/default/bug/create/create-comm-newsletter.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-comm-newsletter.html.tmpl index 5166ec49a..c0858d29f 100644 --- a/extensions/BMO/template/en/default/bug/create/create-comm-newsletter.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-comm-newsletter.html.tmpl @@ -81,6 +81,7 @@ function toggleAreaOther() { + diff --git a/extensions/BMO/template/en/default/bug/create/create-costume.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-costume.html.tmpl index 8e21feeea..7f6329614 100644 --- a/extensions/BMO/template/en/default/bug/create/create-costume.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-costume.html.tmpl @@ -143,6 +143,7 @@ YAHOO.util.Event.onDOMReady(function() { + diff --git a/extensions/BMO/template/en/default/bug/create/create-creative.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-creative.html.tmpl index 15b196c8c..b8e352afc 100644 --- a/extensions/BMO/template/en/default/bug/create/create-creative.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-creative.html.tmpl @@ -115,6 +115,7 @@ function toggleTypeOther(element) { + diff --git a/extensions/BMO/template/en/default/bug/create/create-crm.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-crm.html.tmpl index 79b325592..c0e4bc944 100644 --- a/extensions/BMO/template/en/default/bug/create/create-crm.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-crm.html.tmpl @@ -85,6 +85,7 @@ $(document).ready(function() { the invite details once you submit the [% terms.bug %]):

+ diff --git a/extensions/BMO/template/en/default/bug/create/create-data-compliance.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-data-compliance.html.tmpl index ceb13b3b8..812786ebb 100644 --- a/extensions/BMO/template/en/default/bug/create/create-data-compliance.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-data-compliance.html.tmpl @@ -75,6 +75,7 @@ + diff --git a/extensions/BMO/template/en/default/bug/create/create-finance.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-finance.html.tmpl index a6fe44678..271df6314 100644 --- a/extensions/BMO/template/en/default/bug/create/create-finance.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-finance.html.tmpl @@ -77,6 +77,7 @@ + diff --git a/extensions/BMO/template/en/default/bug/create/create-fsa-budget.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-fsa-budget.html.tmpl index 47d705a7f..c1a1862a9 100644 --- a/extensions/BMO/template/en/default/bug/create/create-fsa-budget.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-fsa-budget.html.tmpl @@ -84,6 +84,7 @@ function validateAndSubmit() { + diff --git a/extensions/BMO/template/en/default/bug/create/create-intern.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-intern.html.tmpl index d0e88ccc6..af0f2920c 100644 --- a/extensions/BMO/template/en/default/bug/create/create-intern.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-intern.html.tmpl @@ -107,6 +107,7 @@ $(document).ready(function() {

+ diff --git a/extensions/BMO/template/en/default/bug/create/create-ipp.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-ipp.html.tmpl index 6689c7a3f..d0742d540 100644 --- a/extensions/BMO/template/en/default/bug/create/create-ipp.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-ipp.html.tmpl @@ -65,6 +65,7 @@ function validateAndSubmit() { + diff --git a/extensions/BMO/template/en/default/bug/create/create-itrequest.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-itrequest.html.tmpl index b25059c80..a40940856 100644 --- a/extensions/BMO/template/en/default/bug/create/create-itrequest.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-itrequest.html.tmpl @@ -93,6 +93,7 @@ + diff --git a/extensions/BMO/template/en/default/bug/create/create-legal.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-legal.html.tmpl index d3b894c5f..d650089a6 100644 --- a/extensions/BMO/template/en/default/bug/create/create-legal.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-legal.html.tmpl @@ -76,6 +76,7 @@ label.required:before {

[ * Required Field ]

+ diff --git a/extensions/BMO/template/en/default/bug/create/create-mdn.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-mdn.html.tmpl index 986847afe..4e7e1dcef 100644 --- a/extensions/BMO/template/en/default/bug/create/create-mdn.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-mdn.html.tmpl @@ -178,6 +178,7 @@ strong.required:before { + diff --git a/extensions/BMO/template/en/default/bug/create/create-mobile-compat.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-mobile-compat.html.tmpl index ae0059f7d..e28579e5f 100644 --- a/extensions/BMO/template/en/default/bug/create/create-mobile-compat.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-mobile-compat.html.tmpl @@ -77,6 +77,7 @@ function validateAndSubmit() { + diff --git a/extensions/BMO/template/en/default/bug/create/create-mozlist.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-mozlist.html.tmpl index af11e11ce..131bcf3ce 100644 --- a/extensions/BMO/template/en/default/bug/create/create-mozlist.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-mozlist.html.tmpl @@ -62,6 +62,7 @@ + diff --git a/extensions/BMO/template/en/default/bug/create/create-mozpr.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-mozpr.html.tmpl index 39241e78c..5cce04272 100644 --- a/extensions/BMO/template/en/default/bug/create/create-mozpr.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-mozpr.html.tmpl @@ -284,6 +284,7 @@ function validate_form() { + diff --git a/extensions/BMO/template/en/default/bug/create/create-name-clearance.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-name-clearance.html.tmpl index e2488c827..0c9431abf 100644 --- a/extensions/BMO/template/en/default/bug/create/create-name-clearance.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-name-clearance.html.tmpl @@ -72,6 +72,7 @@ $(function() {

[ * Required Field ]

+ diff --git a/extensions/BMO/template/en/default/bug/create/create-nda.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-nda.html.tmpl index f36c8807d..5234473ec 100644 --- a/extensions/BMO/template/en/default/bug/create/create-nda.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-nda.html.tmpl @@ -63,6 +63,7 @@ $(function() { of the ticket.

+ diff --git a/extensions/BMO/template/en/default/bug/create/create-recoverykey.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-recoverykey.html.tmpl index f6c99d633..440310209 100644 --- a/extensions/BMO/template/en/default/bug/create/create-recoverykey.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-recoverykey.html.tmpl @@ -34,6 +34,7 @@ + diff --git a/extensions/BMO/template/en/default/bug/create/create-recruiting.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-recruiting.html.tmpl index 57377e1bb..ea7877039 100644 --- a/extensions/BMO/template/en/default/bug/create/create-recruiting.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-recruiting.html.tmpl @@ -72,6 +72,7 @@ function jobDescToggle(what) {

+ diff --git a/extensions/BMO/template/en/default/bug/create/create-screen-share-whitelist.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-screen-share-whitelist.html.tmpl index a5e406f2a..4d6105820 100644 --- a/extensions/BMO/template/en/default/bug/create/create-screen-share-whitelist.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-screen-share-whitelist.html.tmpl @@ -90,6 +90,7 @@ function fieldValue(elem_id) { + diff --git a/extensions/BMO/template/en/default/bug/create/create-shield-studies.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-shield-studies.html.tmpl index b55a1245e..c284ff735 100644 --- a/extensions/BMO/template/en/default/bug/create/create-shield-studies.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-shield-studies.html.tmpl @@ -43,6 +43,7 @@

+ diff --git a/extensions/BMO/template/en/default/bug/create/create-swag.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-swag.html.tmpl index e6625ac64..fb948c120 100644 --- a/extensions/BMO/template/en/default/bug/create/create-swag.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-swag.html.tmpl @@ -535,6 +535,7 @@ function showGear() { + diff --git a/extensions/BMO/template/en/default/bug/create/create-trademark.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-trademark.html.tmpl index c1835c113..4ad8dc20b 100644 --- a/extensions/BMO/template/en/default/bug/create/create-trademark.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-trademark.html.tmpl @@ -40,6 +40,7 @@ + diff --git a/extensions/BMO/template/en/default/bug/create/create-user-engagement.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-user-engagement.html.tmpl index 3e64fa939..343ec20e1 100644 --- a/extensions/BMO/template/en/default/bug/create/create-user-engagement.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-user-engagement.html.tmpl @@ -81,6 +81,7 @@ function toggleGoalOther() { + diff --git a/extensions/BMO/template/en/default/bug/create/create-web-bounty.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-web-bounty.html.tmpl index b49916cc0..7f5a9c87c 100644 --- a/extensions/BMO/template/en/default/bug/create/create-web-bounty.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-web-bounty.html.tmpl @@ -68,6 +68,7 @@ function validateAndSubmit() { + diff --git a/extensions/GuidedBugEntry/Extension.pm b/extensions/GuidedBugEntry/Extension.pm index bed190c02..ec6dcc5d8 100644 --- a/extensions/GuidedBugEntry/Extension.pm +++ b/extensions/GuidedBugEntry/Extension.pm @@ -22,6 +22,12 @@ use Bugzilla::Extension::BMO::Data; our $VERSION = '1'; +sub bug_file_methods { + my ($self, $args) = @_; + + push(@{$args->{methods}}, 'guided_form'); +} + sub enter_bug_start { my ($self, $args) = @_; my $vars = $args->{vars}; diff --git a/extensions/GuidedBugEntry/template/en/default/guided/guided.html.tmpl b/extensions/GuidedBugEntry/template/en/default/guided/guided.html.tmpl index c70da8b14..d425e6094 100644 --- a/extensions/GuidedBugEntry/template/en/default/guided/guided.html.tmpl +++ b/extensions/GuidedBugEntry/template/en/default/guided/guided.html.tmpl @@ -26,7 +26,7 @@