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

version 1.237, 2014/12/11 01:53:22 version 1.238, 2015/02/12 21:22:07
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 424  sub sendemail { Line 424  sub sendemail {
     my ($to,$subject,$body,$to_uname,$to_udom,$user_lh)=@_;      my ($to,$subject,$body,$to_uname,$to_udom,$user_lh)=@_;
     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 469  sub sendemail { Line 470  sub sendemail {
     if (my $fh = $msg->open()) {      if (my $fh = $msg->open()) {
  print $fh $body;   print $fh $body;
  $fh->close;   $fh->close;
           $msgsent = 1;
     }      }
       return $msgsent;
 }  }
   
 # ==================================================== Send notification emails  # ==================================================== Send notification emails
Line 481  sub sendnotification { Line 484  sub sendnotification {
  $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;
Line 558  to access the full message.',$url); Line 562  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)) {
                   $numsent ++;
               }
         }          }
     } else {      } else {
         if ($blocked) {          if ($blocked) {
Line 567  to access the full message.',$url); Line 573  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)) {
               $numsent ++;
           }
     }      }
       return $numsent;
 }  }
   
 sub make_htmlfree {  sub make_htmlfree {
Line 696  sub store_instructor_comment { Line 705  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 727  sub user_crit_msg_raw { Line 736  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);
       }
       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);
           }
       }
       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 750  sub user_crit_msg_raw { Line 777  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 761  sub user_crit_msg { Line 788  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 816  sub user_crit_received { Line 843  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 853  sub user_normal_msg_raw { Line 880  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);
          }
          if ($toperm && $permemail) {
              if ($notify && $numnotify) {
                  if (grep(/^\Q$permemail\E/,split(/,/,$notify))) {
                      $numperm = 1;
                  }
              }
              unless ($numperm) {
                  $numperm = &sendnotification($permemail,$user,$domain,$subject,0,
                                               $text,$msgid);
              }
        }         }
        if ($toperm && $userenv{'permanentemail'}) {         if ($toperm) {
            if ((!$userenv{'notification'}) || ($userenv{'notification'} ne $userenv{'permanentemail'})) {             $permlogmsgstatus = '. Perm. email log status '.
        &sendnotification($userenv{'permanentemail'},$user,$domain,$subject,0,                           &Apache::lonnet::log($env{'user.domain'},$env{'user.name'},$env{'user.home'},
            $text,$msgid);                                                "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 874  sub user_normal_msg_raw { Line 919  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);
Line 886  sub user_normal_msg { Line 932  sub user_normal_msg {
         &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;

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


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