Diff for /loncom/interface/lonmsg.pm between versions 1.227 and 1.246

version 1.227, 2010/09/13 23:35:44 version 1.246, 2020/12/18 15:23:02
Line 120  Critical message to a user Line 120  Critical message to a user
   
 New routine that respects "forward" and calls old routine  New routine that respects "forward" and calls old routine
   
 =item * B<user_crit_msg($user, $domain, $subject, $message, $sendback, $nosentstore,$recipid,$attachmenturl)>:   =item * B<user_crit_msg($user, $domain, $subject, $message, $sendback, $nosentstore, $recipid, $attachmenturl, $permresults)>: 
     Sends a critical message $message to the $user at $domain.  If $sendback      Sends a critical message $message to the $user at $domain.  If $sendback
     is true,  a receipt will be sent to the current user when $user receives       is true,  a receipt will be sent to the current user when $user receives 
     the message.      the message.
Line 148  New routine that respects "forward" and Line 148  New routine that respects "forward" and
   
 =item * B<user_normal_msg($user, $domain, $subject, $message, $citation,  =item * B<user_normal_msg($user, $domain, $subject, $message, $citation,
        $baseurl, $attachmenturl, $toperm, $sentmessage, $symb, $restitle,         $baseurl, $attachmenturl, $toperm, $sentmessage, $symb, $restitle,
        $error,$nosentstore,$recipid)>:         $error,$nosentstore,$recipid,$permresults)>:
  Sends a message to the  $user at $domain, with subject $subject and message $message.   Sends a message to the  $user at $domain, with subject $subject and message $message.
   
     Additionally it will check if the user has a Forwarding address      Additionally it will check if the user has a Forwarding address
Line 200  Returns Line 200  Returns
   
 use strict;  use strict;
 use Apache::lonnet;  use Apache::lonnet;
   use Apache::loncommon;
 use HTML::TokeParser();  use HTML::TokeParser();
 use Apache::lonlocal;  use Apache::lonlocal;
 use Mail::Send;  
 use HTML::Entities;  use HTML::Entities;
 use Encode;  use Encode;
 use LONCAPA qw(:DEFAULT :match);  use LONCAPA qw(:DEFAULT :match);
Line 231  sub packagemsg { Line 231  sub packagemsg {
     $attachmenturl =&HTML::Entities::encode($attachmenturl,'<>&"');      $attachmenturl =&HTML::Entities::encode($attachmenturl,'<>&"');
     my $course_context = &get_course_context();      my $course_context = &get_course_context();
     my $now=time;      my $now=time;
       my $ip = &Apache::lonnet::get_requestor_ip();
     my $msgcount = &get_uniq();      my $msgcount = &get_uniq();
     unless(defined($msgid)) {      unless(defined($msgid)) {
         $msgid = &buildmsgid($now,$subject,$env{'user.name'},$env{'user.domain'},          $msgid = &buildmsgid($now,$subject,$env{'user.name'},$env{'user.domain'},
Line 250  sub packagemsg { Line 251  sub packagemsg {
     }      }
     $result .= '<servername>'.$ENV{'SERVER_NAME'}.'</servername>'.      $result .= '<servername>'.$ENV{'SERVER_NAME'}.'</servername>'.
            '<host>'.$ENV{'HTTP_HOST'}.'</host>'.             '<host>'.$ENV{'HTTP_HOST'}.'</host>'.
    '<client>'.$ENV{'REMOTE_ADDR'}.'</client>'.     '<client>'.$ip.'</client>'.
    '<browsertype>'.$env{'browser.type'}.'</browsertype>'.     '<browsertype>'.$env{'browser.type'}.'</browsertype>'.
    '<browseros>'.$env{'browser.os'}.'</browseros>'.     '<browseros>'.$env{'browser.os'}.'</browseros>'.
    '<browserversion>'.$env{'browser.version'}.'</browserversion>'.     '<browserversion>'.$env{'browser.version'}.'</browserversion>'.
Line 397  sub buildmsgid { Line 398  sub buildmsgid {
 }  }
   
 sub unpackmsgid {  sub unpackmsgid {
     my ($msgid,$folder,$skipstatus,$status_cache)=@_;      my ($msgid,$folder,$skipstatus,$status_cache,$onlycid)=@_;
     $msgid=&unescape($msgid);      $msgid=&unescape($msgid);
     my ($sendtime,$shortsubj,$fromname,$fromdomain,$count,$fromcid,      my ($sendtime,$shortsubj,$fromname,$fromdomain,$count,$fromcid,
         $processid,$symb,$error) = split(/\:/,&unescape($msgid));          $processid,$symb,$error) = split(/\:/,&unescape($msgid));
       if (!defined($processid)) { $fromcid = ''; }
       if (($onlycid) && ($onlycid ne $fromcid)) {
           return ($sendtime,'',$fromname,$fromdomain,'',$fromcid,'',$error);
       }
     $shortsubj = &unescape($shortsubj);      $shortsubj = &unescape($shortsubj);
     $shortsubj = &HTML::Entities::decode($shortsubj);      $shortsubj = &HTML::Entities::decode($shortsubj);
     $symb = &unescape($symb);      $symb = &unescape($symb);
     if (!defined($processid)) { $fromcid = ''; }  
     my %status=();      my %status=();
     unless ($skipstatus) {      unless ($skipstatus) {
  if (ref($status_cache)) {   if (ref($status_cache)) {
Line 421  sub unpackmsgid { Line 425  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;
     if ($env{'form.can_reply'} eq 'N') {      if ($env{'form.can_reply'} eq 'N') {
         my $lonhost = $Apache::lonnet::perlvar{'lonHostID'};          my $lonhost = $Apache::lonnet::perlvar{'lonHostID'};
         my $hostname = &Apache::lonnet::hostname($lonhost);          my $hostname = &Apache::lonnet::hostname($lonhost);
Line 456  sub sendemail { Line 461  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) {          # Don't send if it exceeds 1 MB.
         $msg->add('Reply-to',$replytoaddress);          print '<p><span class="LC_error">' 
     }              .&mt('Email not sent.  Attachment exceeds permitted length.')
     if ($senderaddress) {              .'</span><br /></p>';
         $msg->add('From',$senderaddress);      } else {
     }          # Otherwise build and send the email
     if (my $fh = $msg->open()) {          $subject = '[LON-CAPA] '.$subject;
  print $fh $body;          &Apache::loncommon::mime_email($senderaddress,$replytoaddress,$to,
  $fh->close;                                         $subject,$body,'','',$attachmenturl,'','');
           $msgsent = 1;
     }      }
       return $msgsent;
 }  }
   
 # ==================================================== 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'};
     }      }
     my $critical=($crit?' critical':'');      my $critical=($crit?' critical':'');
       my $numsent = 0;
   
     $text=~s/\&lt\;/\</gs;      $text=~s/\&lt\;/\</gs;
     $text=~s/\&gt\;/\>/gs;      $text=~s/\&gt\;/\>/gs;
     my $homeserver = &Apache::lonnet::homeserver($touname,$toudom);      my $homeserver = &Apache::lonnet::homeserver($touname,$toudom);
       my $hostname = &Apache::lonnet::hostname($homeserver);
     my $protocol = $Apache::lonnet::protocol{$homeserver};      my $protocol = $Apache::lonnet::protocol{$homeserver};
     $protocol = 'http' if ($protocol ne 'https');      $protocol = 'http' if ($protocol ne 'https');
     my $url = $protocol.'://'.&Apache::lonnet::hostname($homeserver).      my $url = $protocol.'://'.$hostname.
               '/adm/email?username='.$touname.'&domain='.$toudom.                '/adm/email?username='.$touname.'&domain='.$toudom.
               '&display='.&escape($msgid);                '&display='.&escape($msgid);
     my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$fromcid,      my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$fromcid,
Line 525  sub sendnotification { Line 534  sub sendnotification {
   
 to access the full message.',$url);  to access the full message.',$url);
     my %userenv = &Apache::lonnet::get('environment',['notifywithhtml'],$toudom,$touname);      my %userenv = &Apache::lonnet::get('environment',['notifywithhtml'],$toudom,$touname);
     my $subject = &mt_user($user_lh,"'New' $critical message from ").$sender;      my $subject = &mt_user($user_lh,"'New'$critical message from [_1]",$sender);
       unless ($subj eq '') {
           $subject = $subj;
       }
     
     my ($blocked,$blocktext);      my ($blocked,$blocktext);
     if (!$crit) {      if (!$crit) {
Line 554  to access the full message.',$url); Line 566  to access the full message.',$url);
                 }                  }
                 $body = $bodybegin.$bodysubj.$sendtext.$bodyend;                  $body = $bodybegin.$bodysubj.$sendtext.$bodyend;
             }              }
             &sendemail($addr,$subject,$body,$touname,$toudom,$user_lh);              if (&sendemail($addr,$subject,$body,$touname,$toudom,$user_lh,$attachmenturl)) {
                   $numsent ++;
               }
         }          }
     } else {      } else {
         if ($blocked) {          if ($blocked) {
Line 563  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;
         }          }
         &sendemail($to,$subject,$body,$touname,$toudom,$user_lh);          if (&sendemail($to,$subject,$body,$touname,$toudom,$user_lh,$attachmenturl)) {
               $numsent ++;
           }
     }      }
       return $numsent;
 }  }
   
 sub make_htmlfree {  sub make_htmlfree {
Line 577  sub make_htmlfree { Line 594  sub make_htmlfree {
   
 sub mynewmail{  sub mynewmail{
  &newmail();   &newmail();
  return $env{'user.mailcheck.lastnewmassagetime'} > $env{'user.mailcheck.lastvisit'};   return $env{'user.mailcheck.lastnewmessagetime'} > $env{'user.mailcheck.lastvisit'};
 }  }
   
   
Line 585  sub newmail { Line 602  sub newmail {
     if ((time-$env{'user.mailcheck.time'})>300) {      if ((time-$env{'user.mailcheck.time'})>300) {
         my %what=&Apache::lonnet::get('email_status',['recnewemail']);          my %what=&Apache::lonnet::get('email_status',['recnewemail']);
         &Apache::lonnet::appenv({'user.mailcheck.time'=>time});          &Apache::lonnet::appenv({'user.mailcheck.time'=>time});
  &Apache::lonnet::appenv({'user.mailcheck.lastnewmassagetime'=> $what{'recnewemail'}});   &Apache::lonnet::appenv({'user.mailcheck.lastnewmessagetime'=> $what{'recnewemail'}});
         if ($what{'recnewemail'}>0) { return 1; }          if ($what{'recnewemail'}>0) { return 1; }
     }      }
     return 0;      return 0;
Line 621  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 641  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 655  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 668  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 692  sub store_instructor_comment { Line 709  sub store_instructor_comment {
   
 sub user_crit_msg_raw {  sub user_crit_msg_raw {
     my ($user,$domain,$subject,$message,$sendback,$toperm,$sentmessage,      my ($user,$domain,$subject,$message,$sendback,$toperm,$sentmessage,
         $nosentstore,$recipid,$attachmenturl)=@_;          $nosentstore,$recipid,$attachmenturl,$permresults)=@_;
 # Check if allowed missing  # Check if allowed missing
     my ($status,$packed_message);      my ($status,$packed_message);
     my $msgid='undefined';      my $msgid='undefined';
Line 723  sub user_crit_msg_raw { Line 740  sub user_crit_msg_raw {
   
 # Notifications  # Notifications
     my %userenv = &Apache::loncommon::getemails($user,$domain);      my %userenv = &Apache::loncommon::getemails($user,$domain);
     if ($userenv{'critnotification'}) {      my $critnotify = $userenv{'critnotification'};
       &sendnotification($userenv{'critnotification'},$user,$domain,$subject,1,      my $permemail = $userenv{'permanentemail'};
  $text,$msgid);      my $numcrit = 0;
     }      my $numperm = 0;
     if ($toperm && $userenv{'permanentemail'}) {      my $permlogmsgstatus;
       &sendnotification($userenv{'permanentemail'},$user,$domain,$subject,1,      if ($critnotify) {
  $text,$msgid);          $numcrit = &sendnotification($critnotify,$user,$domain,$subject,1,$text,$msgid,$attachmenturl);
       }
       if ($toperm && $permemail) {
           if ($critnotify && $numcrit) {
               if (grep(/^\Q$permemail\E/,split(/,/,$critnotify))) {
                   $numperm = 1;
               }
           }
           unless ($numperm) {
               $numperm = &sendnotification($permemail,$user,$domain,$subject,1,$text,$msgid,$attachmenturl);
           }
       }
       if ($toperm) {
           $permlogmsgstatus = '. Perm. email log status '.
                               &Apache::lonnet::log($env{'user.domain'},$env{'user.name'},$env{'user.home'},
                                                    "Perm. e-mail count $numperm for $user at $domain");
           if (ref($permresults) eq 'HASH') {
               $permresults->{"$user:$domain"} = $numperm;
           }
     }      }
 # Log this  # Log this
     &Apache::lonnet::logthis(      &Apache::lonnet::logthis(
       'Sending critical email '.$msgid.        'Sending critical '.$msgid.
       ', log status: '.        ', log status: '.
       &Apache::lonnet::log($env{'user.domain'},$env{'user.name'},        &Apache::lonnet::log($env{'user.domain'},$env{'user.name'},
                          $env{'user.home'},                           $env{'user.home'},
       'Sending critical '.$msgid.' to '.$user.' at '.$domain.' with status: '        'Sending critical '.$msgid.' to '.$user.' at '.$domain.' with status '
       .$status));        .$status).$permlogmsgstatus);
     return $status;      return $status;
 }  }
   
Line 746  sub user_crit_msg_raw { Line 781  sub user_crit_msg_raw {
   
 sub user_crit_msg {  sub user_crit_msg {
     my ($user,$domain,$subject,$message,$sendback,$toperm,$sentmessage,      my ($user,$domain,$subject,$message,$sendback,$toperm,$sentmessage,
         $nosentstore,$recipid,$attachmenturl)=@_;          $nosentstore,$recipid,$attachmenturl,$permresults)=@_;
     my @status;      my @status;
     my %userenv = &Apache::lonnet::get('environment',['msgforward'],      my %userenv = &Apache::lonnet::get('environment',['msgforward'],
                                        $domain,$user);                                         $domain,$user);
Line 757  sub user_crit_msg { Line 792  sub user_crit_msg {
          push(@status,           push(@status,
       &user_crit_msg_raw($forwuser,$forwdomain,$subject,$message,        &user_crit_msg_raw($forwuser,$forwdomain,$subject,$message,
  $sendback,$toperm,$sentmessage,$nosentstore,   $sendback,$toperm,$sentmessage,$nosentstore,
                                  $recipid,$attachmenturl));                                   $recipid,$attachmenturl,$permresults));
        }         }
     } else {       } else { 
  push(@status,   push(@status,
      &user_crit_msg_raw($user,$domain,$subject,$message,$sendback,       &user_crit_msg_raw($user,$domain,$subject,$message,$sendback,
  $toperm,$sentmessage,$nosentstore,$recipid,   $toperm,$sentmessage,$nosentstore,$recipid,
                                 $attachmenturl));                                  $attachmenturl,$permresults));
     }      }
     if (wantarray) {      if (wantarray) {
  return @status;   return @status;
Line 812  sub user_crit_received { Line 847  sub user_crit_received {
 sub user_normal_msg_raw {  sub user_normal_msg_raw {
     my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl,      my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl,
         $toperm,$currid,$newid,$sentmessage,$crsmsgid,$symb,$restitle,          $toperm,$currid,$newid,$sentmessage,$crsmsgid,$symb,$restitle,
         $error,$nosentstore,$recipid)=@_;          $error,$nosentstore,$recipid,$permresults)=@_;
 # Check if allowed missing  # Check if allowed missing
     my ($status,$packed_message);      my ($status,$packed_message);
     my $msgid='undefined';      my $msgid='undefined';
Line 849  sub user_normal_msg_raw { Line 884  sub user_normal_msg_raw {
        }         }
 # Notifications  # Notifications
        my %userenv = &Apache::loncommon::getemails($user,$domain);         my %userenv = &Apache::loncommon::getemails($user,$domain);
        if ($userenv{'notification'}) {         my $notify = $userenv{'notification'};
    &sendnotification($userenv{'notification'},$user,$domain,$subject,0,         my $permemail = $userenv{'permanentemail'};
      $text,$msgid);         my $numnotify = 0;
          my $numperm = 0;
          my $permlogmsgstatus;
          if ($notify) {
              $numnotify = &sendnotification($notify,$user,$domain,$subject,0,$text,$msgid,$attachmenturl);
        }         }
        if ($toperm && $userenv{'permanentemail'}) {         if ($toperm && $permemail) {
            if ((!$userenv{'notification'}) || ($userenv{'notification'} ne $userenv{'permanentemail'})) {             if ($notify && $numnotify) {
        &sendnotification($userenv{'permanentemail'},$user,$domain,$subject,0,                 if (grep(/^\Q$permemail\E/,split(/,/,$notify))) {
            $text,$msgid);                     $numperm = 1;
                  }
              }
              unless ($numperm) {
                  $numperm = &sendnotification($permemail,$user,$domain,$subject,0,
                                               $text,$msgid,$attachmenturl);
              }
          }
          if ($toperm) {
              $permlogmsgstatus = '. Perm. email log status '.
                            &Apache::lonnet::log($env{'user.domain'},$env{'user.name'},$env{'user.home'},
                                                 "Perm. e-mail count $numperm for $user at $domain");
              if (ref($permresults) eq 'HASH') {
                  $permresults->{"$user:$domain"} = $numperm;
            }             }
        }         }
        &Apache::lonnet::log($env{'user.domain'},$env{'user.name'},         &Apache::lonnet::log($env{'user.domain'},$env{'user.name'},
     $env{'user.home'},      $env{'user.home'},
     'Sending '.$msgid.' to '.$user.' at '.$domain.' with status: '.$status);      'Sending '.$msgid.' to '.$user.' at '.$domain.' with status '.$status.
                               $permlogmsgstatus);
    } else {     } else {
        $status='no_host';         $status='no_host';
    }     }
Line 870  sub user_normal_msg_raw { Line 923  sub user_normal_msg_raw {
   
 sub user_normal_msg {  sub user_normal_msg {
     my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl,      my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl,
  $toperm,$sentmessage,$symb,$restitle,$error,$nosentstore,$recipid)=@_;   $toperm,$sentmessage,$symb,$restitle,$error,$nosentstore,$recipid,
           $permresults)=@_;
     my @status;      my @status;
     my %userenv = &Apache::lonnet::get('environment',['msgforward'],      my %userenv = &Apache::lonnet::get('environment',['msgforward'],
                                        $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,
      undef,undef,$sentmessage,undef,$symb,       undef,undef,$sentmessage,undef,$symb,
                                      $restitle,$error,$nosentstore,$recipid));                                       $restitle,$error,$nosentstore,$recipid,$permresults));
         }          }
     } else {      } else {
  push(@status,&user_normal_msg_raw($user,$domain,$subject,$message,   push(@status,&user_normal_msg_raw($user,$domain,$subject,$message,
      $citation,$baseurl,$attachmenturl,$toperm,       $citation,$baseurl,$attachmenturl,$toperm,
      undef,undef,$sentmessage,undef,$symb,       undef,undef,$sentmessage,undef,$symb,
                                      $restitle,$error,$nosentstore,$recipid));                                       $restitle,$error,$nosentstore,$recipid,$permresults));
     }      }
     if (wantarray) {      if (wantarray) {
         return @status;          return @status;
Line 897  sub user_normal_msg { Line 951  sub user_normal_msg {
 }  }
   
 sub process_sent_mail {  sub process_sent_mail {
     my ($msgsubj,$subj_prefix,$numsent,$stamp,$msgname,$msgdom,$msgcount,$context,$pid,$savemsg,$recusers,$recudoms,$baseurl,$attachmenturl,$symb,$error,$senderuname,$senderdom,$recipid) = @_;      my ($msgsubj,$subj_prefix,$numsent,$stamp,$msgname,$msgdom,$msgcount,
           $context,$pid,$savemsg,$recusers,$recudoms,$baseurl,$attachmenturl,
           $symb,$error,$senderuname,$senderdom,$recipid) = @_;
     my $sentsubj;      my $sentsubj;
     if ($numsent > 1) {      if ($numsent > 1) {
         $sentsubj = $subj_prefix.' ('.$numsent.' sent) '.$msgsubj;          $sentsubj = $subj_prefix.' ('.$numsent.' sent) '.$msgsubj;
Line 985  sub secapply { Line 1041  sub secapply {
     my $rec=shift;      my $rec=shift;
     my $defaultflag=shift;      my $defaultflag=shift;
     $rec=~s/\s+//g;      $rec=~s/\s+//g;
     $rec=~s/\@/\:/g;      unless ($rec =~ /\:/) {
           $rec=~s/\@/\:/g;
       }
     my ($adr,$sections_or_groups)=($rec=~/^([^\(]+)\(([^\)]+)\)/);      my ($adr,$sections_or_groups)=($rec=~/^([^\(]+)\(([^\)]+)\)/);
     if ($sections_or_groups) {      if ($sections_or_groups) {
  foreach my $item (split(/\;/,$sections_or_groups)) {   foreach my $item (split(/\;/,$sections_or_groups)) {

Removed from v.1.227  
changed lines
  Added in v.1.246


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