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:
authorsunnavy <sunnavy@bestpractical.com>2022-09-15 23:21:36 +0300
committersunnavy <sunnavy@bestpractical.com>2022-09-15 23:21:36 +0300
commit7310a291852d3fdb4f351d05e762c4bb5de58907 (patch)
tree21d843e03bffe05f21d21cc83d8d2301a838a948 /lib
parente271ef77f806735317dfc6b12726be6970604ae8 (diff)
parent02b9e1efc127e28a13a76d6544d7e21f99e9dd10 (diff)
Merge branch '5.0/add-dashboard-list-to-email-cli' into 5.0-trunk
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;