RT#38217 Send email when logging conditions are met [default template & dump-email_to...
authorJonathan Prykop <jonathan@freeside.biz>
Thu, 24 Dec 2015 03:46:53 +0000 (21:46 -0600)
committerMitch Jackson <mitch@freeside.biz>
Tue, 9 Oct 2018 16:22:58 +0000 (12:22 -0400)
FS/FS/msg_template.pm
FS/FS/msg_template/InitialData.pm
httemplate/edit/log_email.html

index 2388aba..0018a45 100644 (file)
@@ -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} );
   
   }
 
index 7cf83d0..cbb9ccd 100644 (file)
@@ -38,6 +38,20 @@ Amount:    {$refund}<BR>
 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}<BR>
+Context: {$logcontext}<BR>
+<BR>
+{$logmessage}<BR>
+
+END
+                      ],
+    },
   ];
 }
 
index bbce7c7..709a240 100644 (file)
@@ -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;
+  }
+}
+
 </%init>