Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bestpractical/rt.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJason Crome <jcrome@bestpractical.com>2022-09-14 18:12:18 +0300
committersunnavy <sunnavy@bestpractical.com>2022-09-15 23:20:01 +0300
commit02b9e1efc127e28a13a76d6544d7e21f99e9dd10 (patch)
tree60be17a8ee883dec03ed7af6d8dbeb9d267fa3ac /lib
parenta5ed0c8f812186decc761152c8d804695cbfd4bd (diff)
Support to specify dashboards for rt-email-dashboards
Diffstat (limited to 'lib')
-rw-r--r--lib/RT/Dashboard/Mailer.pm27
1 files changed, 24 insertions, 3 deletions
diff --git a/lib/RT/Dashboard/Mailer.pm b/lib/RT/Dashboard/Mailer.pm
index 5eca55a391..84275ecfa3 100644
--- a/lib/RT/Dashboard/Mailer.pm
+++ b/lib/RT/Dashboard/Mailer.pm
@@ -61,7 +61,7 @@ use RT::Interface::Web;
use File::Temp 'tempdir';
use HTML::Scrubber;
use URI::QueryParam;
-use List::MoreUtils 'uniq';
+use List::MoreUtils qw( any none uniq );
sub MailDashboards {
my $self = shift;
@@ -70,6 +70,7 @@ sub MailDashboards {
DryRun => 0,
Time => time,
User => undef,
+ Dashboards => 0,
@_,
);
@@ -78,6 +79,17 @@ sub MailDashboards {
my $from = $self->GetFrom();
$RT::Logger->debug("Sending email from $from");
+ my @dashboards;
+ if( $args{ Dashboards } ) {
+ @dashboards = split(/,/, $args{ Dashboards });
+ $RT::Logger->warning( "Non-numeric dashboard IDs are not permitted" ) if any{ /\D/ } @dashboards;
+ @dashboards = grep { /^\d+$/ } @dashboards;
+ if( @dashboards == 0 ) {
+ $RT::Logger->warning( "--dashboards option given but no valid dashboard IDs provided; exiting" );
+ return;
+ }
+ }
+
# look through each user for her subscriptions
my $Users = RT::Users->new(RT->SystemUser);
$Users->LimitToPrivileged;
@@ -106,6 +118,7 @@ sub MailDashboards {
Subscription => $subscription,
User => $user,
LocalTime => [$hour, $dow, $dom],
+ Dashboards => \@dashboards,
);
my $recipients = $subscription->SubValue('Recipients');
@@ -227,12 +240,20 @@ sub IsSubscriptionReady {
Subscription => undef,
User => undef,
LocalTime => [0, 0, 0],
+ Dashboards => undef,
@_,
);
- return 1 if $args{All};
+ my $subscription = $args{Subscription};
+ my $DashboardId = $subscription->SubValue('DashboardId');
+ my @dashboards = @{ $args{ Dashboards } };
+ if( @dashboards and none { $_ == $DashboardId } @dashboards) {
+ $RT::Logger->info("Dashboard $DashboardId not in list of requested dashboards; skipping");
+ return;
+ }
- my $subscription = $args{Subscription};
+ # Check subscription frequency only once we're sure of the dashboard
+ return 1 if $args{All};
my $counter = $subscription->SubValue('Counter') || 0;