diff options
Diffstat (limited to 'FS')
| -rw-r--r-- | FS/FS/Schema.pm | 1 | ||||
| -rw-r--r-- | FS/FS/log.pm | 8 | ||||
| -rw-r--r-- | FS/FS/log_email.pm | 4 | 
3 files changed, 10 insertions, 3 deletions
| diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index ecd071e49..2168c4c39 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -4665,6 +4665,7 @@ sub tables_hashref {          'min_level', 'int',  'NULL', '', '', '',          'msgnum', 'int', '',  '', '', '',          'to_addr', 'varchar', 'NULL',     255, '', '', +        'context_height',  'int', 'NULL', '', '', '',         ],        'primary_key'  => 'logemailnum',        'unique'       => [], diff --git a/FS/FS/log.pm b/FS/FS/log.pm index 67a74d196..64d036e4d 100644 --- a/FS/FS/log.pm +++ b/FS/FS/log.pm @@ -87,14 +87,15 @@ sub insert {    return $error if $error;    my $contexts = {}; -  foreach ( @_ ) { +  my $context_height = @_; +  foreach ( @_ ) { # ordered from least to most specific      my $context = FS::log_context->new({          'lognum'  => $self->lognum,          'context' => $_      });      $error = $context->insert;      return $error if $error; -    $contexts->{$_} = 1; +    $contexts->{$_} = $context_height--;    }    foreach my $log_email ( @@ -108,8 +109,9 @@ sub insert {        }      )    ) { -    # shouldn't be a lot of these, so not packing this into the qsearch +    # shouldn't be a lot of log_email records, so not packing these checks into the qsearch      next if $log_email->context && !$contexts->{$log_email->context}; +    next if $log_email->context_height && ($contexts->{$log_email->context} > $log_email->context_height);      my $msg_template = qsearchs('msg_template',{ 'msgnum' => $log_email->msgnum });      unless ($msg_template) {        warn "Could not send email when logging, could not load message template for logemailnum " . $log_email->logemailnum; diff --git a/FS/FS/log_email.pm b/FS/FS/log_email.pm index 9c53c230a..a055cb4c6 100644 --- a/FS/FS/log_email.pm +++ b/FS/FS/log_email.pm @@ -42,6 +42,9 @@ The following fields are currently supported:  =item to_addr - who the email will be sent to (in addition to any bcc on the template) +=item context_height - number of context stack levels to match against  +(0 or null matches against full stack, 1 only matches lowest level context, 2 matches lowest two levels, etc.) +  =back  =head1 METHODS @@ -88,6 +91,7 @@ sub check {      || $self->ut_number('min_level')      || $self->ut_foreign_key('msgnum', 'msg_template', 'msgnum')      || $self->ut_textn('to_addr') +    || $self->ut_numbern('context_height')    ;    return $error if $error; | 
