]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 545683: New Hook: bugmail_recipients
authorMax Kanat-Alexander <mkanat@bugzilla.org>
Thu, 11 Feb 2010 18:56:08 +0000 (10:56 -0800)
committerMax Kanat-Alexander <mkanat@bugzilla.org>
Thu, 11 Feb 2010 18:56:08 +0000 (10:56 -0800)
r=mkanat, a=mkanat (module owner)

Bugzilla/BugMail.pm
Bugzilla/Hook.pm
extensions/Example/Extension.pm

index 7412838f79a02d6793e696fa8854d51436f63526..7a92b13a540a37c9b0b7fccf6357ea0e4aaa7f38 100644 (file)
@@ -42,6 +42,7 @@ use Bugzilla::Product;
 use Bugzilla::Component;
 use Bugzilla::Status;
 use Bugzilla::Mailer;
+use Bugzilla::Hook;
 
 use Date::Parse;
 use Date::Format;
@@ -425,6 +426,9 @@ sub Send {
             }
         }
     }
+
+    Bugzilla::Hook::process('bugmail_recipients',
+                            { recipients => \%recipients });
     
     # Find all those user-watching anyone on the current list, who is not
     # on it already themselves.
index 1f92f332de3d4eb4608ab43309142c7f3983a391..36f08397565a6f806fe030eff3bdd2a007dc08e6 100644 (file)
@@ -356,6 +356,44 @@ The definition is structured as:
 
 =back
 
+=head2 bugmail_recipients
+
+This allows you to modify the list of users who are going to be receiving
+a particular bugmail. It also allows you to specify why they are receiving
+the bugmail.
+
+Users' bugmail preferences will be applied to any users that you add
+to the list. (So, for example, if you add somebody as though they were
+a CC on the bug, and their preferences state that they don't get email
+when they are a CC, they won't get email.)
+
+This hook is called before watchers or globalwatchers are added to the
+recipient list.
+
+Params:
+
+=over
+
+=item C<recipients>
+
+This is a hashref. The keys are numeric user ids from the C<profiles>
+table in the database, for each user who should be receiving this bugmail.
+The values are hashrefs. The keys in I<these> hashrefs correspond to
+the "relationship" that the user has to the bug they're being emailed
+about, and the value should always be C<1>. The "relationships"
+are described by the various C<REL_> constants in L<Bugzilla::Constants>.
+
+Here's an example of adding userid C<123> to the recipient list
+as though he were on the CC list:
+
+ $recipients->{123}->{+REL_CC} = 1
+
+(We use C<+> in front of C<REL_CC> so that Perl interprets it as a constant
+instead of as a string.)
+
+=back
+
+
 =head2 colchange_columns
 
 This happens in F<colchange.cgi> right after the list of possible display
index e06bd9f2bb5713c77fab4514a142492017c443a8..77489692cfbfa89ff1785b0d8bb6ea67ff125400 100644 (file)
@@ -189,6 +189,14 @@ sub buglist_columns {
     $columns->{'example'} = { 'name' => 'bugs.delta_ts' , 'title' => 'Example' };
 }
 
+sub bugmail_recipients {
+    my ($self, $args) = @_;
+    my $recipients = $args->{'recipients'};
+    # Uncomment the below line to add the first user in the Bugzilla database
+    # to every bugmail as though he/she were a CC.
+    #$recipients->{1}->{+REL_CC} = 1;
+}
+
 sub colchange_columns {
     my ($self, $args) = @_;