Diff for /loncom/interface/lonmsg.pm between versions 1.209 and 1.212

version 1.209, 2007/05/10 00:50:52 version 1.212, 2008/06/06 05:24:28
Line 179  sub packagemsg { Line 179  sub packagemsg {
   
 sub get_course_context {  sub get_course_context {
     my $course_context;      my $course_context;
       my $msgkey;
     if (defined($env{'form.replyid'})) {      if (defined($env{'form.replyid'})) {
           $msgkey = $env{'form.replyid'};
       } elsif (defined($env{'form.forwid'})) {
           $msgkey = $env{'form.forwid'}
       } elsif (defined($env{'form.multiforwid'})) {
           $msgkey = $env{'form.multiforwid'};
       }
       if ($msgkey ne '') {
         my ($sendtime,$shortsubj,$fromname,$fromdomain,$count,$origcid)=          my ($sendtime,$shortsubj,$fromname,$fromdomain,$count,$origcid)=
                    split(/\:/,&unescape($env{'form.replyid'}));                     split(/\:/,&unescape($msgkey));
         $course_context = $origcid;          $course_context = $origcid;
     }      }
     foreach my $key (keys(%env)) {      foreach my $key (keys(%env)) {
Line 201  sub get_course_context { Line 209  sub get_course_context {
 # ================================================== Unpack message into a hash  # ================================================== Unpack message into a hash
   
 sub unpackagemsg {  sub unpackagemsg {
     my ($message,$notoken)=@_;      my ($message,$notoken,$noattachmentlink)=@_;
     my %content=();      my %content=();
     my $parser=HTML::TokeParser->new(\$message);      my $parser=HTML::TokeParser->new(\$message);
     my $token;      my $token;
Line 221  sub unpackagemsg { Line 229  sub unpackagemsg {
        }         }
     }      }
     if (!exists($content{'recuser'})) { $content{'recuser'} = []; }      if (!exists($content{'recuser'})) { $content{'recuser'} = []; }
     if ($content{'attachmenturl'}) {      if (($content{'attachmenturl'}) && (!$noattachmentlink)) {
        my ($fname)=($content{'attachmenturl'}=~m|/([^/]+)$|);         my ($fname)=($content{'attachmenturl'}=~m|/([^/]+)$|);
        if ($notoken) {         if ($notoken) {
    $content{'message'}.='<p>'.&mt('Attachment').': <tt>'.$fname.'</tt>';     $content{'message'}.='<p>'.&mt('Attachment').': <tt>'.$fname.'</tt>';
Line 385  to access the full message.',$url); Line 393  to access the full message.',$url);
 sub newmail {  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});
         if ($what{'recnewemail'}>0) { return 1; }          if ($what{'recnewemail'}>0) { return 1; }
     }      }
     return 0;      return 0;
Line 499  sub store_instructor_comment { Line 507  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)=@_;          $nosentstore,$recipid,$attachmenturl)=@_;
 # Check if allowed missing  # Check if allowed missing
     my ($status,$packed_message);      my ($status,$packed_message);
     my $msgid='undefined';      my $msgid='undefined';
Line 508  sub user_crit_msg_raw { Line 516  sub user_crit_msg_raw {
     my $homeserver=&Apache::lonnet::homeserver($user,$domain);      my $homeserver=&Apache::lonnet::homeserver($user,$domain);
     if ($homeserver ne 'no_host') {      if ($homeserver ne 'no_host') {
        ($msgid,$packed_message)=&packagemsg($subject,$message,undef,undef,         ($msgid,$packed_message)=&packagemsg($subject,$message,undef,undef,
                                   undef,undef,undef,undef,undef,undef,undef,                                    $attachmenturl,undef,undef,undef,undef,undef,
                                   undef,$recipid);                                    undef,undef,$recipid);
        if ($sendback) { $packed_message.='<sendback>true</sendback>'; }         if ($sendback) { $packed_message.='<sendback>true</sendback>'; }
        $status=&Apache::lonnet::critical(         $status=&Apache::lonnet::cput('critical', {$msgid => $packed_message},
            'put:'.$domain.':'.$user.':critical:'.       $domain,$user);
            &escape($msgid).'='.  
            &escape($packed_message),$homeserver);  
         if (defined($sentmessage)) {          if (defined($sentmessage)) {
             $$sentmessage = $packed_message;              $$sentmessage = $packed_message;
         }          }
         if (!$nosentstore) {          if (!$nosentstore) {
             (undef,my $packed_message_no_citation) =              (undef,my $packed_message_no_citation) =
             &packagemsg($subject,$message,undef,undef,undef,$user,$domain,              &packagemsg($subject,$message,undef,undef,$attachmenturl,$user,
                         $msgid);                          $domain,$msgid);
             if ($status eq 'ok' || $status eq 'con_delayed') {              if ($status eq 'ok' || $status eq 'con_delayed') {
                 &store_sent_mail($msgid,$packed_message_no_citation);                  &store_sent_mail($msgid,$packed_message_no_citation);
             }              }
Line 555  sub user_crit_msg_raw { Line 561  sub user_crit_msg_raw {
   
 =pod  =pod
   
 =item * B<user_crit_msg($user, $domain, $subject, $message, $sendback, $nosentstore,$recipid)>:   =item * B<user_crit_msg($user, $domain, $subject, $message, $sendback, $nosentstore,$recipid,$attachmenturl)>: 
     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 572  sub user_crit_msg_raw { Line 578  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)=@_;          $nosentstore,$recipid,$attachmenturl)=@_;
     my @status;      my @status;
     my %userenv = &Apache::lonnet::get('environment',['msgforward'],      my %userenv = &Apache::lonnet::get('environment',['msgforward'],
                                        $domain,$user);                                         $domain,$user);
Line 583  sub user_crit_msg { Line 589  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));                                   $recipid,$attachmenturl));
        }         }
     } 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));
     }      }
     if (wantarray) {      if (wantarray) {
  return @status;   return @status;
Line 651  sub user_normal_msg_raw { Line 658  sub user_normal_msg_raw {
                                      undef,$crsmsgid,$symb,$error,$recipid);                                       undef,$crsmsgid,$symb,$error,$recipid);
   
 # Store in user folder  # Store in user folder
        $status=&Apache::lonnet::critical(         $status=
            'put:'.$domain.':'.$user.':nohist_email:'.     &Apache::lonnet::cput('nohist_email',{$msgid => $packed_message},
            &escape($msgid).'='.   $domain,$user);
            &escape($packed_message),$homeserver);  
 # Save new message received time  # Save new message received time
        &Apache::lonnet::put         &Apache::lonnet::put
                          ('email_status',{'recnewemail'=>time},$domain,$user);                           ('email_status',{'recnewemail'=>time},$domain,$user);
Line 740  sub user_normal_msg { Line 746  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,$senderhome) = @_;      my ($msgsubj,$subj_prefix,$numsent,$stamp,$msgname,$msgdom,$msgcount,$context,$pid,$savemsg,$recusers,$recudoms,$baseurl,$attachmenturl,$symb,$error,$senderuname,$senderdom) = @_;
     my $sentsubj;      my $sentsubj;
     if ($numsent > 1) {      if ($numsent > 1) {
         $sentsubj = $subj_prefix.' ('.$numsent.' sent) '.$msgsubj;          $sentsubj = $subj_prefix.' ('.$numsent.' sent) '.$msgsubj;
Line 757  sub process_sent_mail { Line 763  sub process_sent_mail {
         &packagemsg($msgsubj,$savemsg,undef,$baseurl,$attachmenturl,$recusers,          &packagemsg($msgsubj,$savemsg,undef,$baseurl,$attachmenturl,$recusers,
                     $recudoms,$sentmsgid,undef,undef,$symb,$error);                      $recudoms,$sentmsgid,undef,undef,$symb,$error);
     my $status = &store_sent_mail($sentmsgid,$sentmessage,$senderuname,      my $status = &store_sent_mail($sentmsgid,$sentmessage,$senderuname,
                                   $senderdom,$senderhome);                                    $senderdom);
     return $status;      return $status;
 }  }
   
 sub store_sent_mail {  sub store_sent_mail {
     my ($msgid,$message,$senderuname,$senderdom,$senderhome) = @_;      my ($msgid,$message,$senderuname,$senderdom) = @_;
     if ($senderuname eq '') {      if ($senderuname eq '') {
         $senderuname = $env{'user.name'};          $senderuname = $env{'user.name'};
     }      }
     if ($senderdom eq '') {      if ($senderdom eq '') {
         $senderdom = $env{'user.domain'};          $senderdom = $env{'user.domain'};
     }      }
     if ($senderhome eq '') {      my $status =' '.&Apache::lonnet::cput('nohist_email_sent',
         $senderhome = $env{'user.home'};    {$msgid => $message},
     }    $senderdom,$senderuname);
     my $status =' '.&Apache::lonnet::critical(  
                'put:'.$senderdom.':'.$senderuname.':nohist_email_sent:'.  
                &escape($msgid).'='.&escape($message),$senderhome);  
     return $status;      return $status;
 }  }
   

Removed from v.1.209  
changed lines
  Added in v.1.212


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