From 4252e76a77bd4def206cfaa7466ba39bb1f027b6 Mon Sep 17 00:00:00 2001 From: Jonathan Prykop Date: Wed, 23 Dec 2015 21:46:53 -0600 Subject: [PATCH] RT#38217 Send email when logging conditions are met [default template & dump-email_to upgrade] --- FS/FS/msg_template.pm | 23 +++++++++++++++++++++++ FS/FS/msg_template/InitialData.pm | 14 ++++++++++++++ httemplate/edit/log_email.html | 11 +++++++++++ 3 files changed, 48 insertions(+) diff --git a/FS/FS/msg_template.pm b/FS/FS/msg_template.pm index 2388aba69..0018a4586 100644 --- a/FS/FS/msg_template.pm +++ b/FS/FS/msg_template.pm @@ -879,6 +879,25 @@ sub _upgrade_data { ### $self->_populate_initial_data; + ### Fix dump-email_to (needs to happen after _populate_initial_data) + if ($conf->config('dump-email_to')) { + # anyone who still uses dump-email_to should have just had this created + my ($msg_template) = qsearch('msg_template',{ msgname => 'System log' }); + if ($msg_template) { + eval "use FS::log_email;"; + die $@ if $@; + my $log_email = new FS::log_email { + 'context' => 'Cron::backup', + 'min_level' => 1, + 'msgnum' => $msg_template->msgnum, + 'to_addr' => $conf->config('dump-email_to'), + }; + my $error = $log_email->insert; + die $error if $error; + $conf->delete('dump-email_to'); + } + } + } sub _populate_initial_data { #class method @@ -887,18 +906,22 @@ sub _populate_initial_data { #class method eval "use FS::msg_template::InitialData;"; die $@ if $@; + eval "use FS::upgrade_journal;"; + die $@ if $@; my $initial_data = FS::msg_template::InitialData->_initial_data; foreach my $hash ( @$initial_data ) { next if $hash->{_conf} && $conf->config( $hash->{_conf} ); + next if $hash->{_upgrade_journal} && FS::upgrade_journal->is_done( $hash->{_upgrade_journal} ); my $msg_template = new FS::msg_template($hash); my $error = $msg_template->insert( @{ $hash->{_insert_args} || [] } ); die $error if $error; $conf->set( $hash->{_conf}, $msg_template->msgnum ) if $hash->{_conf}; + FS::upgrade_journal->set_done( $hash->{_upgrade_journal} ); } diff --git a/FS/FS/msg_template/InitialData.pm b/FS/FS/msg_template/InitialData.pm index 7cf83d070..cbb9ccd8f 100644 --- a/FS/FS/msg_template/InitialData.pm +++ b/FS/FS/msg_template/InitialData.pm @@ -38,6 +38,20 @@ Amount: {$refund}
END ], }, + { msgname => 'System log', + msgclass => 'email', + mime_type => 'text/html', + _upgrade_journal => 'system_log_email_template', + _insert_args => [ subject => '{ $company_name } system log', + body => <<'END', +Level: {$loglevel}
+Context: {$logcontext}
+
+{$logmessage}
+ +END + ], + }, ]; } diff --git a/httemplate/edit/log_email.html b/httemplate/edit/log_email.html index bbce7c708..709a24069 100644 --- a/httemplate/edit/log_email.html +++ b/httemplate/edit/log_email.html @@ -18,6 +18,7 @@ { 'field' => 'msgnum', 'type' => 'select-msg_template', 'empty_label' => 'Select template', + 'value' => $msgnum, 'required' => 1, }, ], @@ -42,4 +43,14 @@ my %opts = @_; die "access denied" unless $FS::CurrentUser::CurrentUser->access_right([ 'View system logs', 'Configuration' ]); +my $msgnum = $cgi->param('msgnum'); +unless ($msgnum) { + my ($msg_template) = qsearch('msg_template',{ msgname => 'System log' }); + # doesn't seem worth having a config just for the default selected template + # if they've deleted the system-generated one, just default to empty "Select template" + if ($msg_template) { + $msgnum = $msg_template->msgnum; + } +} + -- 2.11.0