[freeside-commits] branch FREESIDE_3_BRANCH updated. 9bc26d39cb527466f3bd5594c14bdcd548bc99cd

Mark Wells mark at 420.am
Mon May 20 12:36:23 PDT 2013


The branch, FREESIDE_3_BRANCH has been updated
       via  9bc26d39cb527466f3bd5594c14bdcd548bc99cd (commit)
      from  cfcc6dd44b65698bea942ca0cf2e010141267303 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 9bc26d39cb527466f3bd5594c14bdcd548bc99cd
Author: Mark Wells <mark at freeside.biz>
Date:   Mon May 20 12:27:25 2013 -0700

    allow friendly from: addresses on email notices, #22962

diff --git a/FS/FS/Misc.pm b/FS/FS/Misc.pm
index dbebf33..9c18961 100644
--- a/FS/FS/Misc.pm
+++ b/FS/FS/Misc.pm
@@ -171,8 +171,15 @@ sub send_email {
 
   }
 
+  my $from = $options{from};
+  $from =~ s/^\s*//; $from =~ s/\s*$//;
+  if ( $from =~ /^(.*)\s*<(.*@.*)>$/ ) {
+    # a common idiom
+    $from = $2;
+  }
+
   my $domain;
-  if ( $options{'from'} =~ /\@([\w\.\-]+)/ ) {
+  if ( $from =~ /\@([\w\.\-]+)/ ) {
     $domain = $1;
   } else {
     warn 'no domain found in invoice from address '. $options{'from'}.
@@ -247,7 +254,7 @@ sub send_email {
   push @to, $options{bcc} if defined($options{bcc});
   local $@; # just in case
   eval { sendmail($message, { transport => $transport,
-                              from      => $options{from},
+                              from      => $from,
                               to        => \@to }) };
 
   my $error = '';
diff --git a/FS/FS/UI/Web.pm b/FS/FS/UI/Web.pm
index c8ad430..bcea776 100644
--- a/FS/FS/UI/Web.pm
+++ b/FS/FS/UI/Web.pm
@@ -678,6 +678,10 @@ sub start_job {
   
   #warn 'froze string of size '. length(nfreeze(\%param)). " for job args\n"
   #  if $DEBUG;
+  #
+  #  XXX FS::queue::insert knows how to do this.
+  #  not changing it here because that requires changing it everywhere else,
+  #  too, but we should eventually fix it
 
   my $error = $job->insert( '_JOB', encode_base64(nfreeze(\%param)) );
 
diff --git a/FS/FS/cust_main_Mixin.pm b/FS/FS/cust_main_Mixin.pm
index a067706..212c04e 100644
--- a/FS/FS/cust_main_Mixin.pm
+++ b/FS/FS/cust_main_Mixin.pm
@@ -539,6 +539,7 @@ sub process_email_search_result {
   die "error loading FS::$table: $@\n" if $@;
 
   my $error = "FS::$table"->email_search_result( $param );
+  dbh->commit; # save failed jobs before rethrowing the error
   die $error if $error;
 
 }
diff --git a/httemplate/misc/email-customers.html b/httemplate/misc/email-customers.html
index fcd79d7..ad67b8d 100644
--- a/httemplate/misc/email-customers.html
+++ b/httemplate/misc/email-customers.html
@@ -104,13 +104,19 @@ Template:
               )
     %><BR>
   <TABLE BGCOLOR="#cccccc" CELLSPACING=0 WIDTH="100%" id="table_no_template">
-    <% include('/elements/tr-input-text.html',
-                 'field' => 'from',
-                 'label' => 'From:',
-                 'size'  => 50,
-              )
-    %>
-
+    <& /elements/tr-td-label.html, 'label' => 'From:' &>
+      <TD><& /elements/input-text.html,
+              'field' => 'from_name',
+              'value' => $conf->config('company_name'), #?
+              'size'  => 20,
+          &> <\
+          <& /elements/input-text.html,
+              'field' => 'from_addr',
+              'type'  => 'email', # HTML5, woot
+              'value' => $conf->config('invoice_from'),
+              'size'  => 20,
+          &>></TD>
+ 
     <% include('/elements/tr-input-text.html',
                  'field' => 'subject',
                  'label' => 'Subject:',
@@ -151,6 +157,7 @@ Template:
 die "access denied"
   unless $FS::CurrentUser::CurrentUser->access_right('Bulk send customer notices');
 
+my $conf = FS::Conf->new;
 my $table = $cgi->param('table') or die "'table' required";
 my %search;
 if ( $cgi->param('search') ) {
@@ -169,7 +176,15 @@ else {
 my $title = 'Send customer notices';
 
 my $num_cust;
-my $from = $cgi->param('from') || '';
+my $from = '';
+if ( $cgi->param('from') ) {
+  $from = $cgi->param('from');
+} elsif ( $cgi->param('from_name') ) {
+  $from = ($cgi->param('from_name') . ' <' . $cgi->param('from_addr') . '>');
+} elsif ( $cgi->param('from_addr') ) {
+  $from = $cgi->param('from_addr');
+}
+
 my $subject = $cgi->param('subject') || '';
 my $html_body = $cgi->param('html_body') || '';
 

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/Misc.pm                        |   11 +++++++++--
 FS/FS/UI/Web.pm                      |    4 ++++
 FS/FS/cust_main_Mixin.pm             |    1 +
 httemplate/misc/email-customers.html |   31 +++++++++++++++++++++++--------
 4 files changed, 37 insertions(+), 10 deletions(-)




More information about the freeside-commits mailing list