Diff for /loncom/interface/lonmsg.pm between versions 1.238 and 1.240

version 1.238, 2015/02/12 21:22:07 version 1.240, 2015/06/18 21:42:37
Line 202  use strict; Line 202  use strict;
 use Apache::lonnet;  use Apache::lonnet;
 use HTML::TokeParser();  use HTML::TokeParser();
 use Apache::lonlocal;  use Apache::lonlocal;
 use Mail::Send;  use MIME::Entity;
 use HTML::Entities;  use HTML::Entities;
 use Encode;  use Encode;
 use LONCAPA qw(:DEFAULT :match);  use LONCAPA qw(:DEFAULT :match);
Line 421  sub unpackmsgid { Line 421  sub unpackmsgid {
   
   
 sub sendemail {  sub sendemail {
     my ($to,$subject,$body,$to_uname,$to_udom,$user_lh)=@_;      my ($to,$subject,$body,$to_uname,$to_udom,$user_lh,$attachmenturl)=@_;
     my $senderaddress='';      my $senderaddress='';
     my $replytoaddress='';      my $replytoaddress='';
     my $msgsent;      my $msgsent;
Line 457  sub sendemail { Line 457  sub sendemail {
     "*** ".($senderaddress?&mt_user($user_lh,'You can reply to this e-mail'):&mt_user($user_lh,'Please do not reply to this address.')."\n*** ".      "*** ".($senderaddress?&mt_user($user_lh,'You can reply to this e-mail'):&mt_user($user_lh,'Please do not reply to this address.')."\n*** ".
     &mt_user($user_lh,'A reply will not be received by the recipient!'))."\n\n".$body;      &mt_user($user_lh,'A reply will not be received by the recipient!'))."\n\n".$body;
           
     my $msg = new Mail::Send;      $attachmenturl = &Apache::lonnet::filelocation("",$attachmenturl);
     $msg->to($to);      my $filesize = (stat($attachmenturl))[7];
     $msg->subject('[LON-CAPA] '.$subject);      if ($filesize > 1048576) {
     if ($replytoaddress) {          print '<p><span class="LC_error">' 
         $msg->add('Reply-to',$replytoaddress);              .&mt('Email not sent.  Attachment exceeds permitted length.')
     }              .'</span><br /></p>';
     if ($senderaddress) {      } else {
         $msg->add('From',$senderaddress);          my $top = MIME::Entity->build(  Type => "multipart/mixed",
     }                                          From => $senderaddress,
     $msg->add('Content-type','text/plain; charset=UTF-8');                                          To => $to,
     if (my $fh = $msg->open()) {                                          Subject => '[LON-CAPA] '.$subject);
  print $fh $body;          $top->attach(Data=>$body);
  $fh->close;          $top->attach(Path=>$attachmenturl);
   
           open MAIL, "| /usr/lib/sendmail -t -oi -oem" or die "open: $!";
           $top->print(\*MAIL);
           close MAIL;
         $msgsent = 1;          $msgsent = 1;
     }      }
     return $msgsent;      return $msgsent;
Line 478  sub sendemail { Line 482  sub sendemail {
 # ==================================================== Send notification emails  # ==================================================== Send notification emails
   
 sub sendnotification {  sub sendnotification {
     my ($to,$touname,$toudom,$subj,$crit,$text,$msgid)=@_;      my ($to,$touname,$toudom,$subj,$crit,$text,$msgid,$attachmenturl)=@_;
     my $sender=$env{'environment.firstname'}.' '.$env{'environment.lastname'};      my $sender=$env{'environment.firstname'}.' '.$env{'environment.lastname'};
     unless ($sender=~/\w/) {       unless ($sender=~/\w/) { 
  $sender=$env{'user.name'}.':'.$env{'user.domain'};   $sender=$env{'user.name'}.':'.$env{'user.domain'};
Line 562  to access the full message.',$url); Line 566  to access the full message.',$url);
                 }                  }
                 $body = $bodybegin.$bodysubj.$sendtext.$bodyend;                  $body = $bodybegin.$bodysubj.$sendtext.$bodyend;
             }              }
             if (&sendemail($addr,$subject,$body,$touname,$toudom,$user_lh)) {              if (&sendemail($addr,$subject,$body,$touname,$toudom,$user_lh,$attachmenturl)) {
                 $numsent ++;                  $numsent ++;
             }              }
         }          }
Line 573  to access the full message.',$url); Line 577  to access the full message.',$url);
             my $htmlfree = &make_htmlfree($text);              my $htmlfree = &make_htmlfree($text);
             $body = $bodybegin.$bodysubj.$htmlfree.$bodyend;              $body = $bodybegin.$bodysubj.$htmlfree.$bodyend;
         }          }
         if (&sendemail($to,$subject,$body,$touname,$toudom,$user_lh)) {          if (&sendemail($to,$subject,$body,$touname,$toudom,$user_lh,$attachmenturl)) {
             $numsent ++;              $numsent ++;
         }          }
     }      }
Line 634  sub retrieve_author_res_msg { Line 638  sub retrieve_author_res_msg {
     my ($domain,$author)=($url=~/^($match_domain)\/($match_username)\//);      my ($domain,$author)=($url=~/^($match_domain)\/($match_username)\//);
     my %errormsgs=&Apache::lonnet::dump('nohist_res_msgs',$domain,$author);      my %errormsgs=&Apache::lonnet::dump('nohist_res_msgs',$domain,$author);
     my $msgs='';      my $msgs='';
     foreach (keys(%errormsgs)) {      foreach my $msg (keys(%errormsgs)) {
  if ($_=~/^\Q$url\E\_\d+$/) {   if ($msg =~ /^\Q$url\E\_\d+$/) {
     my %content=&unpackagemsg($errormsgs{$_});      my %content=&unpackagemsg($errormsgs{$msg});
     $msgs.='<p><img src="/adm/lonMisc/bomb.gif" /><b>'.      $msgs.='<p><img src="/adm/lonMisc/bomb.gif" /><b>'.
  $content{'time'}.'</b>: '.$content{'message'}.   $content{'time'}.'</b>: '.$content{'message'}.
  '<br /></p>';   '<br /></p>';
Line 654  sub del_url_author_res_msg { Line 658  sub del_url_author_res_msg {
     $url=&Apache::lonnet::declutter($url);      $url=&Apache::lonnet::declutter($url);
     my ($domain,$author)=($url=~/^($match_domain)\/($match_username)\//);      my ($domain,$author)=($url=~/^($match_domain)\/($match_username)\//);
     my @delmsgs=();      my @delmsgs=();
     foreach (&Apache::lonnet::getkeys('nohist_res_msgs',$domain,$author)) {      foreach my $msg (&Apache::lonnet::getkeys('nohist_res_msgs',$domain,$author)) {
  if ($_=~/^\Q$url\E\_\d+$/) {   if ($msg =~ /^\Q$url\E\_\d+$/) {
     push (@delmsgs,$_);      push (@delmsgs,$msg);
  }   }
     }      }
     return &Apache::lonnet::del('nohist_res_msgs',\@delmsgs,$domain,$author);      return &Apache::lonnet::del('nohist_res_msgs',\@delmsgs,$domain,$author);
Line 668  sub clear_author_res_msg { Line 672  sub clear_author_res_msg {
     $url=&Apache::lonnet::declutter($url);      $url=&Apache::lonnet::declutter($url);
     my ($domain,$author)=($url=~/^($match_domain)\/($match_username)\//);      my ($domain,$author)=($url=~/^($match_domain)\/($match_username)\//);
     my @delmsgs=();      my @delmsgs=();
     foreach (&Apache::lonnet::getkeys('nohist_res_msgs',$domain,$author)) {      foreach my $msg (&Apache::lonnet::getkeys('nohist_res_msgs',$domain,$author)) {
  if ($_=~/^\Q$url\E/) {   if ($msg =~ /^\Q$url\E/) {
     push (@delmsgs,$_);      push (@delmsgs,$msg);
  }   }
     }      }
     return &Apache::lonnet::del('nohist_res_msgs',\@delmsgs,$domain,$author);      return &Apache::lonnet::del('nohist_res_msgs',\@delmsgs,$domain,$author);
Line 681  sub clear_author_res_msg { Line 685  sub clear_author_res_msg {
 sub all_url_author_res_msg {  sub all_url_author_res_msg {
     my ($author,$domain)=@_;      my ($author,$domain)=@_;
     my %returnhash=();      my %returnhash=();
     foreach (&Apache::lonnet::getkeys('nohist_res_msgs',$domain,$author)) {      foreach my $msg (&Apache::lonnet::getkeys('nohist_res_msgs',$domain,$author)) {
  $_=~/^(.+)\_\d+/;   $msg =~ /^(.+)\_\d+/;
  $returnhash{$1}=1;   $returnhash{$1}=1;
     }      }
     return %returnhash;      return %returnhash;
Line 742  sub user_crit_msg_raw { Line 746  sub user_crit_msg_raw {
     my $numperm = 0;      my $numperm = 0;
     my $permlogmsgstatus;      my $permlogmsgstatus;
     if ($critnotify) {      if ($critnotify) {
         $numcrit = &sendnotification($critnotify,$user,$domain,$subject,1,$text,$msgid);          $numcrit = &sendnotification($critnotify,$user,$domain,$subject,1,$text,$msgid,$attachmenturl);
     }      }
     if ($toperm && $permemail) {      if ($toperm && $permemail) {
         if ($critnotify && $numcrit) {          if ($critnotify && $numcrit) {
Line 751  sub user_crit_msg_raw { Line 755  sub user_crit_msg_raw {
             }              }
         }          }
         unless ($numperm) {          unless ($numperm) {
             $numperm = &sendnotification($permemail,$user,$domain,$subject,1,$text,$msgid);              $numperm = &sendnotification($permemail,$user,$domain,$subject,1,$text,$msgid,$attachmenturl);
         }          }
     }      }
     if ($toperm) {      if ($toperm) {
Line 886  sub user_normal_msg_raw { Line 890  sub user_normal_msg_raw {
        my $numperm = 0;         my $numperm = 0;
        my $permlogmsgstatus;         my $permlogmsgstatus;
        if ($notify) {         if ($notify) {
            $numnotify = &sendnotification($notify,$user,$domain,$subject,0,$text,$msgid);             $numnotify = &sendnotification($notify,$user,$domain,$subject,0,$text,$msgid,$attachmenturl);
        }         }
        if ($toperm && $permemail) {         if ($toperm && $permemail) {
            if ($notify && $numnotify) {             if ($notify && $numnotify) {
Line 896  sub user_normal_msg_raw { Line 900  sub user_normal_msg_raw {
            }             }
            unless ($numperm) {             unless ($numperm) {
                $numperm = &sendnotification($permemail,$user,$domain,$subject,0,                 $numperm = &sendnotification($permemail,$user,$domain,$subject,0,
                                             $text,$msgid);                                              $text,$msgid,$attachmenturl);
            }             }
        }         }
        if ($toperm) {         if ($toperm) {
Line 926  sub user_normal_msg { Line 930  sub user_normal_msg {
                                        $domain,$user);                                         $domain,$user);
     my $msgforward=$userenv{'msgforward'};      my $msgforward=$userenv{'msgforward'};
     if ($msgforward) {      if ($msgforward) {
         foreach (split(/\,/,$msgforward)) {          foreach my $fwd (split(/\,/,$msgforward)) {
     my ($forwuser,$forwdomain)=split(/\:/,$_);      my ($forwuser,$forwdomain)=split(/\:/,$fwd);
     push(@status,      push(@status,
         &user_normal_msg_raw($forwuser,$forwdomain,$subject,$message,          &user_normal_msg_raw($forwuser,$forwdomain,$subject,$message,
      $citation,$baseurl,$attachmenturl,$toperm,       $citation,$baseurl,$attachmenturl,$toperm,

Removed from v.1.238  
changed lines
  Added in v.1.240


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>