fix ticketing system error on bootstrap of new install
[freeside.git] / rt / sbin / rt-email-digest.in
index 47cd8eb..52fa450 100644 (file)
@@ -3,7 +3,7 @@
 #
 # COPYRIGHT:
 #
-# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
+# This software is Copyright (c) 1996-2016 Best Practical Solutions, LLC
 #                                          <sales@bestpractical.com>
 #
 # (Except where explicitly superseded by other copyright notices)
 use warnings;
 use strict;
 
-BEGIN {
+BEGIN { # BEGIN RT CMD BOILERPLATE
     require File::Spec;
+    require Cwd;
     my @libs = ("@RT_LIB_PATH@", "@LOCAL_LIB_PATH@");
     my $bin_path;
 
     for my $lib (@libs) {
         unless ( File::Spec->file_name_is_absolute($lib) ) {
-            unless ($bin_path) {
-                if ( File::Spec->file_name_is_absolute(__FILE__) ) {
-                    $bin_path = ( File::Spec->splitpath(__FILE__) )[1];
-                }
-                else {
-                    require FindBin;
-                    no warnings "once";
-                    $bin_path = $FindBin::Bin;
-                }
-            }
+            $bin_path ||= ( File::Spec->splitpath(Cwd::abs_path(__FILE__)) )[1];
             $lib = File::Spec->catfile( $bin_path, File::Spec->updir, $lib );
         }
         unshift @INC, $lib;
@@ -76,10 +68,9 @@ BEGIN {
 use Date::Format qw( strftime );
 use Getopt::Long;
 use RT;
-use RT::Interface::CLI qw( CleanEnv loc );
+use RT::Interface::CLI qw( loc );
 use RT::Interface::Email;
 
-CleanEnv();
 RT::LoadConfig();
 RT::Init();
 
@@ -268,7 +259,7 @@ sub find_transactions {
         my $queue  = $txn->TicketObj->QueueObj->Name;
         # Xxx todo - may clobber if two queues have the same name
         foreach my $user ( $txn->DeferredRecipients($frequency) ) {
-            $all_digest->{$user}->{$queue}->{$ticket}->{ $txn->id } = $txn->ContentObj;
+            $all_digest->{$user}->{$queue}->{$ticket}->{ $txn->id } = $txn;
             $sent_transactions->{$user}->{ $txn->id } = $txn;
         }
     }
@@ -312,12 +303,14 @@ sub build_digest_for_user {
             # Spit out the messages for the transactions on this ticket.
             $contents_body .= "\n== $ticket_title\n";
             foreach my $txn ( sort keys %$tkt_txns ) {
-                my $msg = $tkt_txns->{$txn};
-
-                # $msg contains an RT::Attachment with our outgoing
-                # message.  Print a few headers for clarity's sake.
-                $contents_body .= "From: " . $msg->GetHeader('From') . "\n";
-                my $date = $msg->GetHeader('Date ');
+                my $top = $tkt_txns->{$txn}->Attachments->First;
+
+                # $top contains the top-most RT::Attachment with our
+                # outgoing message.  It may not be the MIME part with
+                # the content.  Print a few headers from it for
+                # clarity's sake.
+                $contents_body .= "From: " . $top->GetHeader('From') . "\n";
+                my $date = $top->GetHeader('Date ');
                 unless ($date) {
                     my $txn_obj = RT::Transaction->new( RT->SystemUser );
                     $txn_obj->Load($txn);
@@ -330,7 +323,7 @@ sub build_digest_for_user {
                         @{ [ localtime( $date_obj->Unix ) ] } );
                 }
                 $contents_body .= "Date: $date\n\n";
-                $contents_body .= $msg->Content . "\n";
+                $contents_body .= $tkt_txns->{$txn}->ContentObj->Content . "\n";
                 $contents_body .= "-------\n";
             }    # foreach transaction
         }    # foreach ticket