version 1.214.2.3, 2008/12/23 19:27:33
|
version 1.215, 2008/11/19 17:38:26
|
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|^http://[^/]+/|/|; |
$baseurl =&HTML::Entities::encode($baseurl,'<>&"'); |
$baseurl =&HTML::Entities::encode($baseurl,'<>&"'); |
#remove machine specification |
#remove machine specification |
$attachmenturl =~ s|^https\://[^/]+/|/|; |
$attachmenturl =~ s|^http://[^/]+/|/|; |
$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 316 sub sendnotification {
|
Line 455 sub sendnotification {
|
|
|
$text=~s/\<\;/\</gs; |
$text=~s/\<\;/\</gs; |
$text=~s/\>\;/\>/gs; |
$text=~s/\>\;/\>/gs; |
my $homeserver = &Apache::lonnet::homeserver($touname,$toudom); |
my $url='http://'. |
my $protocol = $Apache::lonnet::protocol{$homeserver}; |
&Apache::lonnet::hostname(&Apache::lonnet::homeserver($touname,$toudom)). |
$protocol = 'http' if ($protocol ne 'https'); |
'/adm/email?username='.$touname.'&domain='.$toudom; |
my $url = $protocol.'://'.&Apache::lonnet::hostname($homeserver). |
|
'/adm/email?username='.$touname.'&domain='.$toudom; |
|
my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$fromcid, |
my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$fromcid, |
$symb,$error) = &Apache::lonmsg::unpackmsgid($msgid); |
$symb,$error) = &Apache::lonmsg::unpackmsgid($msgid); |
my ($coursetext,$body,$bodybegin,$bodysubj,$bodyend); |
my ($coursetext,$body,$bodybegin,$bodysubj,$bodyend); |
Line 395 to access the full message.',$url);
|
Line 532 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 543 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 565 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 585 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 600 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 614 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 627 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 641 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 694 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 723 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 758 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 820 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 903 sub store_recipients {
|
} |
} |
} |
} |
|
|
# =============================================================== Folder suffix |
|
|
|
sub foldersuffix { |
sub foldersuffix { |
my $folder=shift; |
my $folder=shift; |
Line 824 sub foldersuffix {
|
Line 917 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 957 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 938 sub user_lang {
|
Line 1003 sub user_lang {
|
@userlangs=(@userlangs,split(/\s*(\,|\;|\:)\s*/, |
@userlangs=(@userlangs,split(/\s*(\,|\;|\:)\s*/, |
$env{'course.'.$fromcid.'.languages'})); |
$env{'course.'.$fromcid.'.languages'})); |
} else { |
} else { |
my %langhash = &Apache::loncommon::getlangs($toudom,$touname); |
my %langhash = &Apache::lonnet::get('environment',['languages'],$toudom,$touname); |
if ($langhash{'languages'} ne '') { |
if ($langhash{'languages'} ne '') { |
@userlangs = split(/\s*(\,|\;|\:)\s*/,$langhash{'languages'}); |
@userlangs = split(/\s*(\,|\;|\:)\s*/,$langhash{'languages'}); |
} else { |
} else { |
Line 948 sub user_lang {
|
Line 1013 sub user_lang {
|
} |
} |
} |
} |
} |
} |
my @languages=&Apache::lonlocal::get_genlanguages(@userlangs); |
my @languages=&Apache::loncommon::get_genlanguages(@userlangs); |
my $user_lh = Apache::localize->get_handle(@languages); |
my $user_lh = Apache::localize->get_handle(@languages); |
return $user_lh; |
return $user_lh; |
} |
} |
|
|
=pod |
|
|
|
=back |
|
|
|
=cut |
|
|
|
1; |
1; |
__END__ |
__END__ |
|
|