Diff for /loncom/interface/lonmsg.pm between versions 1.214.2.2 and 1.218

version 1.214.2.2, 2008/12/21 04:21:53 version 1.218, 2008/12/19 02:43:52
Line 53  with <recipient username="$uname:$udom"> Line 53  with <recipient username="$uname:$udom">
 Domain Coordinator e-mail for the storage of information about  Domain Coordinator e-mail for the storage of information about
 recipients of the message/e-mail.  recipients of the message/e-mail.
   
 =head1 FUNCTIONS  =head1 SUBROUTINES
   
 =over 4  =over
   
   =pod
   
   =item packagemsg()
   
   Package
   
   =item get_course_context()
   
   =item unpackagemsg()
   
   Unpack message into a hash
   
   =item buildmsgid()
   
   Get info out of msgid
   
   =item unpackmsgid()
   
   =item sendemail()
   
   =item sendnotification()
   
   Send notification emails
   
   =item newmail()
   
   Check for email
   
   =item author_res_msg()
   
   Automated message to the author of a resource
   
   =item * B<author_res_msg($filename, $message)>: Sends message $message to the owner
       of the resource with the URI $filename.
   
   =item retrieve_author_res_msg()
   
   Retrieve author resource messages
   
   =item del_url_author_res_msg()
   
   Delete all author messages related to one URL
   
   =item clear_author_res_msg()
   
   Clear out all author messages in URL path
   
   =item all_url_author_res_msg()
   
   Return hash with URLs for which there is a resource message
   
   =item store_instructor_comment()
   
   Add a comment to the User Notes screen
   
   =item user_crit_msg_raw()
   
   Critical message to a user
   
   =item user_crit_msg()
   
   New routine that respects "forward" and calls old routine
   
   =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
       is true,  a receipt will be sent to the current user when $user receives 
       the message.
   
       Additionally it will check if the user has a Forwarding address
       set, and send the message to that address instead
   
       returns 
         - in array context a list of results for each message that was sent
         - in scalar context a space seperated list of results for each 
              message sent
   
   
   =item user_crit_received()
   
   Critical message received
   
   =item user_normal_msg_raw()
   
   Normal communication
   
   =item user_normal_msg()
   
   New routine that respects "forward" and calls old routine
   
   =item * B<user_normal_msg($user, $domain, $subject, $message, $citation,
          $baseurl, $attachmenturl, $toperm, $sentmessage, $symb, $restitle,
          $error,$nosentstore,$recipid)>:
    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
       set, and send the message to that address instead
   
       returns
         - in array context a list of results for each message that was sent
         - in scalar context a space seperated list of results for each
              message sent
   
   =item store_sent_mail()
   
   =item store_recipients()
   
   =item foldersuffix()
   
   =item get_user_folders()
   
   User-defined folders 
   
   =item secapply()
   
   =item B<decide_receiver($feedurl,$author,$question,$course,$policy,$defaultflag)>:
   
   Arguments
     $feedurl - /res/ url of resource (only need if $author is true)
     $author,$question,$course,$policy - all true/false parameters
       if true will attempt to find the addresses of user that should receive
       this type of feedback (author - feedback to author of resource $feedurl,
       $question 'Resource Content Questions', $course 'Course Content Question',
       $policy 'Course Policy')
       (Additionally it also checks $env for whether the corresponding form.<name>
       element exists, for ease of use in a html response context)
      
     $defaultflag - (internal should be left blank) if true gather addresses 
                    that aren't for a section even if I have a section
                    (used for reccursion internally, first we look for
                    addresses for our specific section then we recurse
                    and look for non section addresses)
   
   Returns
     $typestyle - string of html text, describing what addresses were found
     %to - a hash, which keys are addresses of users to send messages to
           the keys will look like   name:domain
   
   =item user_lang()
   
   =back
   
 =cut  =cut
   
Line 74  use LONCAPA qw(:DEFAULT :match); Line 215  use LONCAPA qw(:DEFAULT :match);
     }      }
 }  }
   
 # ===================================================================== Package  
   
 sub packagemsg {  sub packagemsg {
     my ($subject,$message,$citation,$baseurl,$attachmenturl,      my ($subject,$message,$citation,$baseurl,$attachmenturl,
Line 83  sub packagemsg { Line 224  sub packagemsg {
     $citation=&HTML::Entities::encode($citation,'<>&"');      $citation=&HTML::Entities::encode($citation,'<>&"');
     $subject =&HTML::Entities::encode($subject,'<>&"');      $subject =&HTML::Entities::encode($subject,'<>&"');
     #remove machine specification      #remove machine specification
     $baseurl =~ s|^https?\://[^/]+/|/|;      $baseurl =~ s|^https?://[^/]+/|/|;
     $baseurl =&HTML::Entities::encode($baseurl,'<>&"');      $baseurl =&HTML::Entities::encode($baseurl,'<>&"');
     #remove machine specification      #remove machine specification
     $attachmenturl =~ s|^https\://[^/]+/|/|;      $attachmenturl =~ s|^https?://[^/]+/|/|;
     $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;
Line 209  sub get_course_context { Line 350  sub get_course_context {
     return $course_context;      return $course_context;
 }  }
   
 # ================================================== Unpack message into a hash  
   
 sub unpackagemsg {  sub unpackagemsg {
     my ($message,$notoken,$noattachmentlink)=@_;      my ($message,$notoken,$noattachmentlink)=@_;
Line 247  sub unpackagemsg { Line 387  sub unpackagemsg {
     return %content;      return %content;
 }  }
   
 # ======================================================= Get info out of msgid  
   
 sub buildmsgid {  sub buildmsgid {
     my ($now,$subject,$uname,$udom,$msgcount,$course_context,$symb,$error,$pid) = @_;      my ($now,$subject,$uname,$udom,$msgcount,$course_context,$symb,$error,$pid) = @_;
Line 291  sub sendemail { Line 430  sub sendemail {
  }   }
     }      }
     $body=      $body=
     "*** ".&mt_user($user_lh,'This is an automatic message generated by the LON-CAPA system.')."\n".      "*** ".&mt_user($user_lh,'This is an automatic e-mail generated by the LON-CAPA system.')."\n".
     "*** ".($senderaddress?&mt_user($user_lh,'You can reply to this message'):&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;      my $msg = new Mail::Send;
     $msg->to($to);      $msg->to($to);
Line 395  to access the full message.',$url); Line 534  to access the full message.',$url);
         &sendemail($to,$subject,$body,$touname,$toudom,$user_lh);          &sendemail($to,$subject,$body,$touname,$toudom,$user_lh);
     }      }
 }  }
 # ============================================================= Check for email  
   
 sub newmail {  sub newmail {
     if ((time-$env{'user.mailcheck.time'})>300) {      if ((time-$env{'user.mailcheck.time'})>300) {
Line 406  sub newmail { Line 545  sub newmail {
     return 0;      return 0;
 }  }
   
 # =============================== Automated message to the author of a resource  
   
 =pod  
   
 =item * B<author_res_msg($filename, $message)>: Sends message $message to the owner  
     of the resource with the URI $filename.  
   
 =cut  
   
 sub author_res_msg {  sub author_res_msg {
     my ($filename,$message)=@_;      my ($filename,$message)=@_;
Line 435  sub author_res_msg { Line 567  sub author_res_msg {
     return 'no_host';      return 'no_host';
 }  }
   
 # =========================================== Retrieve author resource messages  
   
 sub retrieve_author_res_msg {  sub retrieve_author_res_msg {
     my $url=shift;      my $url=shift;
Line 455  sub retrieve_author_res_msg { Line 587  sub retrieve_author_res_msg {
 }  }
   
   
 # =============================== Delete all author messages related to one URL  
   
   
 sub del_url_author_res_msg {  sub del_url_author_res_msg {
     my $url=shift;      my $url=shift;
Line 469  sub del_url_author_res_msg { Line 602  sub del_url_author_res_msg {
     }      }
     return &Apache::lonnet::del('nohist_res_msgs',\@delmsgs,$domain,$author);      return &Apache::lonnet::del('nohist_res_msgs',\@delmsgs,$domain,$author);
 }  }
 # =================================== Clear out all author messages in URL path  
   
 sub clear_author_res_msg {  sub clear_author_res_msg {
     my $url=shift;      my $url=shift;
Line 483  sub clear_author_res_msg { Line 616  sub clear_author_res_msg {
     }      }
     return &Apache::lonnet::del('nohist_res_msgs',\@delmsgs,$domain,$author);      return &Apache::lonnet::del('nohist_res_msgs',\@delmsgs,$domain,$author);
 }  }
 # ================= Return hash with URLs for which there is a resource message  
   
   
 sub all_url_author_res_msg {  sub all_url_author_res_msg {
     my ($author,$domain)=@_;      my ($author,$domain)=@_;
Line 495  sub all_url_author_res_msg { Line 629  sub all_url_author_res_msg {
     return %returnhash;      return %returnhash;
 }  }
   
 # ====================================== Add a comment to the User Notes screen  
   
 sub store_instructor_comment {  sub store_instructor_comment {
     my ($msg,$uname,$udom) = @_;      my ($msg,$uname,$udom) = @_;
Line 510  sub store_instructor_comment { Line 643  sub store_instructor_comment {
     return $result;      return $result;
 }  }
   
 # ================================================== Critical message to a user  
   
 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,
Line 564  sub user_crit_msg_raw { Line 696  sub user_crit_msg_raw {
     return $status;      return $status;
 }  }
   
 # New routine that respects "forward" and calls old routine  
   
 =pod  
   
 =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  
     is true,  a receipt will be sent to the current user when $user receives   
     the message.  
   
     Additionally it will check if the user has a Forwarding address  
     set, and send the message to that address instead  
   
     returns   
       - in array context a list of results for each message that was sent  
       - in scalar context a space seperated list of results for each   
            message sent  
   
 =cut  
   
 sub user_crit_msg {  sub user_crit_msg {
     my ($user,$domain,$subject,$message,$sendback,$toperm,$sentmessage,      my ($user,$domain,$subject,$message,$sendback,$toperm,$sentmessage,
Line 610  sub user_crit_msg { Line 725  sub user_crit_msg {
     return join(' ',@status);      return join(' ',@status);
 }  }
   
 # =================================================== Critical message received  
   
 sub user_crit_received {  sub user_crit_received {
     my $msgid=shift;      my $msgid=shift;
Line 646  sub user_crit_received { Line 760  sub user_crit_received {
     return $status;      return $status;
 }  }
   
 # ======================================================== Normal communication  
   
   
 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,
Line 707  sub user_normal_msg_raw { Line 822  sub user_normal_msg_raw {
     return $status;      return $status;
 }  }
   
 # New routine that respects "forward" and calls old routine  
   
 =pod  
   
 =item * B<user_normal_msg($user, $domain, $subject, $message, $citation,  
        $baseurl, $attachmenturl, $toperm, $sentmessage, $symb, $restitle,  
        $error,$nosentstore,$recipid)>:  
  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  
     set, and send the message to that address instead  
   
     returns  
       - in array context a list of results for each message that was sent  
       - in scalar context a space seperated list of results for each  
            message sent  
   
 =cut  
   
 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)=@_;
Line 809  sub store_recipients { Line 905  sub store_recipients {
     }      }
 }  }
   
 # =============================================================== Folder suffix  
   
 sub foldersuffix {  sub foldersuffix {
     my $folder=shift;      my $folder=shift;
Line 824  sub foldersuffix { Line 919  sub foldersuffix {
     return $suffix;      return $suffix;
 }  }
   
 # ========================================================= User-defined folders   
   
 sub get_user_folders {  sub get_user_folders {
     my ($folder) = @_;      my ($folder) = @_;
Line 865  sub secapply { Line 959  sub secapply {
     return '';      return '';
 }  }
   
 =pod   
   
 =item * B<decide_receiver($feedurl,$author,$question,$course,$policy,$defaultflag)>:  
   
 Arguments  
   $feedurl - /res/ url of resource (only need if $author is true)  
   $author,$question,$course,$policy - all true/false parameters  
     if true will attempt to find the addresses of user that should receive  
     this type of feedback (author - feedback to author of resource $feedurl,  
     $question 'Resource Content Questions', $course 'Course Content Question',  
     $policy 'Course Policy')  
     (Additionally it also checks $env for whether the corresponding form.<name>  
     element exists, for ease of use in a html response context)  
      
   $defaultflag - (internal should be left blank) if true gather addresses   
                  that aren't for a section even if I have a section  
                  (used for reccursion internally, first we look for  
                  addresses for our specific section then we recurse  
                  and look for non section addresses)  
   
 Returns  
   $typestyle - string of html text, describing what addresses were found  
   %to - a hash, which keys are addresses of users to send messages to  
         the keys will look like   name:domain  
   
 =cut  
   
 sub decide_receiver {  sub decide_receiver {
     my ($feedurl,$author,$question,$course,$policy,$defaultflag) = @_;      my ($feedurl,$author,$question,$course,$policy,$defaultflag) = @_;
     &Apache::lonenc::check_decrypt(\$feedurl);      &Apache::lonenc::check_decrypt(\$feedurl);
Line 953  sub user_lang { Line 1020  sub user_lang {
     return $user_lh;      return $user_lh;
 }  }
   
 =pod  
   
 =back  
   
 =cut  
   
 1;  1;
 __END__  __END__
   

Removed from v.1.214.2.2  
changed lines
  Added in v.1.218


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