summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Bug.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Bugzilla/Bug.pm')
-rwxr-xr-xBugzilla/Bug.pm26
1 files changed, 22 insertions, 4 deletions
diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm
index 5ca806092..c3be53e96 100755
--- a/Bugzilla/Bug.pm
+++ b/Bugzilla/Bug.pm
@@ -378,6 +378,11 @@ sub run_create_validators {
($params->{bug_status}, $params->{everconfirmed})
= $class->_check_bug_status($params->{bug_status}, $product);
+ # Check whether a comment is required on bug creation.
+ my $vars = {};
+ $vars->{comment_exists} = ($params->{comment} =~ /\S+/) ? 1 : 0;
+ Bugzilla::Bug->check_status_change_triggers($params->{bug_status}, [], $vars);
+
$params->{target_milestone} = $class->_check_target_milestone($product,
$params->{target_milestone});
@@ -653,10 +658,6 @@ sub _check_comment {
# Creation-only checks
if (!ref $invocant) {
- if (Bugzilla->params->{"commentoncreate"} && !$comment) {
- ThrowUserError("description_required");
- }
-
# On creation only, there must be a single-space comment, or
# email will be supressed.
$comment = ' ' if $comment eq '';
@@ -1588,6 +1589,19 @@ sub check_status_change_triggers {
# 'commentonnone' doesn't exist, so this is safe.
ThrowUserError('comment_required') if Bugzilla->params->{"commenton$action"};
}
+ elsif (!scalar(@$bug_ids)) {
+ # The bug is being created; that's why $bug_ids is undefined.
+ my $comment_required =
+ $dbh->selectrow_array('SELECT require_comment
+ FROM status_workflow
+ INNER JOIN bug_status
+ ON id = new_status
+ WHERE old_status IS NULL
+ AND value = ?',
+ undef, $action);
+
+ ThrowUserError('description_required') if $comment_required;
+ }
else {
my $required_for_transitions =
$dbh->selectcol_arrayref('SELECT DISTINCT bug_status.value
@@ -1614,6 +1628,10 @@ sub check_status_change_triggers {
# There is no checks for these actions.
return if ($action eq 'none' || $action eq 'clearresolution');
+ # Also leave now if we are creating a new bug (we only want to check
+ # if a comment is required on bug creation).
+ return unless scalar(@$bug_ids);
+
if ($action eq 'duplicate') {
# You cannot mark bugs as duplicates when changing
# several bugs at once.