version 1.155, 2005/11/18 13:35:30
|
version 1.156, 2005/11/23 22:32:11
|
Line 126 my $interdis;
|
Line 126 my $interdis;
|
|
|
sub packagemsg { |
sub packagemsg { |
my ($subject,$message,$citation,$baseurl,$attachmenturl, |
my ($subject,$message,$citation,$baseurl,$attachmenturl, |
$recuser,$recdomain)=@_; |
$recuser,$recdomain,$msgid)=@_; |
$message =&HTML::Entities::encode($message,'<>&"'); |
$message =&HTML::Entities::encode($message,'<>&"'); |
$citation=&HTML::Entities::encode($citation,'<>&"'); |
$citation=&HTML::Entities::encode($citation,'<>&"'); |
$subject =&HTML::Entities::encode($subject,'<>&"'); |
$subject =&HTML::Entities::encode($subject,'<>&"'); |
Line 141 sub packagemsg {
|
Line 141 sub packagemsg {
|
$msgcount++; |
$msgcount++; |
my $partsubj=$subject; |
my $partsubj=$subject; |
$partsubj=&Apache::lonnet::escape($partsubj); |
$partsubj=&Apache::lonnet::escape($partsubj); |
my $msgid=&Apache::lonnet::escape( |
unless(defined($msgid)) { |
|
$msgid=&Apache::lonnet::escape( |
$now.':'.$partsubj.':'.$env{'user.name'}.':'. |
$now.':'.$partsubj.':'.$env{'user.name'}.':'. |
$env{'user.domain'}.':'.$msgcount.':'. |
$env{'user.domain'}.':'.$msgcount.':'. |
$env{'request.course.id'}.':'.$$); |
$env{'request.course.id'}.':'.$$); |
|
} |
my $result='<sendername>'.$env{'user.name'}.'</sendername>'. |
my $result='<sendername>'.$env{'user.name'}.'</sendername>'. |
'<senderdomain>'.$env{'user.domain'}.'</senderdomain>'. |
'<senderdomain>'.$env{'user.domain'}.'</senderdomain>'. |
'<subject>'.$subject.'</subject>'. |
'<subject>'.$subject.'</subject>'. |
Line 161 sub packagemsg {
|
Line 163 sub packagemsg {
|
'<coursesec>'.$env{'request.course.sec'}.'</coursesec>'. |
'<coursesec>'.$env{'request.course.sec'}.'</coursesec>'. |
'<role>'.$env{'request.role'}.'</role>'. |
'<role>'.$env{'request.role'}.'</role>'. |
'<resource>'.$env{'request.filename'}.'</resource>'. |
'<resource>'.$env{'request.filename'}.'</resource>'. |
'<msgid>'.$msgid.'</msgid>'. |
'<msgid>'.$msgid.'</msgid>'; |
'<recuser>'.$recuser.'</recuser>'. |
if (ref($recuser) eq 'ARRAY') { |
'<recdomain>'.$recdomain.'</recdomain>'. |
for (my $i=0; $i<@{$recuser}; $i++) { |
'<message>'.$message.'</message>'; |
$result .= '<recuser>'.$$recuser[$i].'</recuser>'. |
|
'<recdomain>'.$$recdomain[$i].'</recdomain>'; |
|
} |
|
} else { |
|
$result .= '<recuser>'.$recuser.'</recuser>'. |
|
'<recdomain>'.$recdomain.'</recdomain>'; |
|
} |
|
$result .= '<message>'.$message.'</message>'; |
if (defined($citation)) { |
if (defined($citation)) { |
$result.='<citation>'.$citation.'</citation>'; |
$result.='<citation>'.$citation.'</citation>'; |
} |
} |
Line 188 sub unpackagemsg {
|
Line 197 sub unpackagemsg {
|
if ($token->[0] eq 'S') { |
if ($token->[0] eq 'S') { |
my $entry=$token->[1]; |
my $entry=$token->[1]; |
my $value=$parser->get_text('/'.$entry); |
my $value=$parser->get_text('/'.$entry); |
$content{$entry}=$value; |
if (($entry eq 'recuser') || ($entry eq 'recdomain')) { |
|
push(@{$content{$entry}},$value); |
|
} else { |
|
$content{$entry}=$value; |
|
} |
} |
} |
} |
} |
if ($content{'attachmenturl'}) { |
if ($content{'attachmenturl'}) { |
Line 474 sub user_crit_received {
|
Line 487 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)=@_; |
$toperm,$newid)=@_; |
# Check if allowed missing |
# Check if allowed missing |
my $status=''; |
my $status=''; |
my $msgid='undefined'; |
my $msgid='undefined'; |
Line 492 sub user_normal_msg_raw {
|
Line 505 sub user_normal_msg_raw {
|
# 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); |
# Into sent-mail folder |
# Into sent-mail folder unless a broadcast message |
$status.=' '.&Apache::lonnet::critical( |
unless (($env{'request.course.id'}) && ($env{'form.sendmode'} eq 'group')) { |
'put:'.$env{'user.domain'}.':'.$env{'user.name'}. |
$status .= &store_sent_mail($msgid,$message); |
':nohist_email_sent:'. |
} |
&Apache::lonnet::escape($msgid).'='. |
|
&Apache::lonnet::escape($message),$env{'user.home'}); |
|
} else { |
} else { |
$status='no_host'; |
$status='no_host'; |
} |
} |
|
if (defined($newid)) { |
|
$$newid = $msgid; |
|
} |
# Notifications |
# Notifications |
my %userenv = &Apache::lonnet::get('environment',['notification', |
my %userenv = &Apache::lonnet::get('environment',['notification', |
'permanentemail'], |
'permanentemail'], |
Line 550 sub user_normal_msg {
|
Line 564 sub user_normal_msg {
|
return $status; |
return $status; |
} |
} |
|
|
|
sub store_sent_mail { |
|
my ($msgid,$message) = @_; |
|
my $status =' '.&Apache::lonnet::critical( |
|
'put:'.$env{'user.domain'}.':'.$env{'user.name'}. |
|
':nohist_email_sent:'. |
|
&Apache::lonnet::escape($msgid).'='. |
|
&Apache::lonnet::escape($message),$env{'user.home'}); |
|
return $status; |
|
} |
|
|
# ============================================================ List all folders |
# ============================================================ List all folders |
|
|
Line 1826 sub displaymessage {
|
Line 1849 sub displaymessage {
|
} |
} |
$r->print('</tr></table>'); |
$r->print('</tr></table>'); |
} |
} |
|
my $tolist; |
|
my @recipients = (); |
|
for (my $i=0; $i<@{$content{'recuser'}}; $i++) { |
|
$recipients[$i] = &Apache::loncommon::aboutmewrapper( |
|
&Apache::loncommon::plainname($content{'recuser'}[$i], |
|
$content{'recdomain'}[$i]), |
|
$content{'recuser'}[$i],$content{'recdomain'}[$i]). |
|
' ('.$content{'recuser'}[$i].' at '.$content{'recdomain'}[$i].') '; |
|
} |
|
$tolist = join(', ',@recipients); |
$r->print('<br /><b>'.&mt('Subject').':</b> '.$content{'subject'}. |
$r->print('<br /><b>'.&mt('Subject').':</b> '.$content{'subject'}. |
($folder ne 'sent'?'<br /><b>'.&mt('From').':</b> '. |
($folder ne 'sent'?'<br /><b>'.&mt('From').':</b> '. |
&Apache::loncommon::aboutmewrapper( |
&Apache::loncommon::aboutmewrapper( |
Line 1833 sub displaymessage {
|
Line 1866 sub displaymessage {
|
$content{'sendername'},$content{'senderdomain'}).' ('. |
$content{'sendername'},$content{'senderdomain'}).' ('. |
$content{'sendername'}.' at '. |
$content{'sendername'}.' at '. |
$content{'senderdomain'}.') ':'<br /><b>'.&mt('To').':</b> '. |
$content{'senderdomain'}.') ':'<br /><b>'.&mt('To').':</b> '. |
&Apache::loncommon::aboutmewrapper( |
$tolist). |
&Apache::loncommon::plainname($content{'recuser'},$content{'recdomain'}), |
|
$content{'recuser'},$content{'recdomain'}).' ('. |
|
$content{'recuser'}.' at '. |
|
$content{'recdomain'}.') '). |
|
($content{'courseid'}?'<br /><b>'.&mt('Course').':</b> '.$courseinfo{'description'}. |
($content{'courseid'}?'<br /><b>'.&mt('Course').':</b> '.$courseinfo{'description'}. |
($content{'coursesec'}?' ('.&mt('Group/Section').': '.$content{'coursesec'}.')':''):''). |
($content{'coursesec'}?' ('.&mt('Group/Section').': '.$content{'coursesec'}.')':''):''). |
'<br /><b>'.&mt('Time').':</b> '.$content{'time'}. |
'<br /><b>'.&mt('Time').':</b> '.$content{'time'}. |
Line 1952 sub sendoffmail {
|
Line 1981 sub sendoffmail {
|
my ($r,$folder)=@_; |
my ($r,$folder)=@_; |
my $suffix=&foldersuffix($folder); |
my $suffix=&foldersuffix($folder); |
my $sendstatus=''; |
my $sendstatus=''; |
|
my %broadcast_status; |
|
my $numbroadcast = 0; |
if ($env{'form.send'}) { |
if ($env{'form.send'}) { |
&printheader($r,'','Messages being sent.'); |
&printheader($r,'','Messages being sent.'); |
$r->rflush(); |
$r->rflush(); |
Line 1996 sub sendoffmail {
|
Line 2027 sub sendoffmail {
|
$toaddr{$auname.':'.$audom}=''; |
$toaddr{$auname.':'.$audom}=''; |
} |
} |
} |
} |
|
|
|
my $basicmsg; |
|
my $msgtype; |
|
if ((($env{'form.critmsg'}) || ($env{'form.sendbck'})) && |
|
(&Apache::lonnet::allowed('srm',$env{'request.course.id'}))) { |
|
$basicmsg=&Apache::lonfeedback::clear_out_html($env{'form.message'},1); |
|
$msgtype = '(critical)'; |
|
} else { |
|
$basicmsg=&Apache::lonfeedback::clear_out_html($env{'form.message'}); |
|
} |
|
|
foreach (keys %toaddr) { |
foreach (keys %toaddr) { |
my ($recuname,$recdomain)=split(/\:/,$_); |
my ($recuname,$recdomain)=split(/\:/,$_); |
my $msgtxt; |
my $msgtxt = $basicmsg; |
if ((($env{'form.critmsg'}) || ($env{'form.sendbck'})) && |
|
(&Apache::lonnet::allowed('srm',$env{'request.course.id'}))) { |
|
$msgtxt=&Apache::lonfeedback::clear_out_html($env{'form.message'},1); |
|
} else { |
|
$msgtxt=&Apache::lonfeedback::clear_out_html($env{'form.message'}); |
|
} |
|
if ($toaddr{$_}) { $msgtxt.='<hr />'.$toaddr{$_}; } |
if ($toaddr{$_}) { $msgtxt.='<hr />'.$toaddr{$_}; } |
my $thismsg; |
my $thismsg; |
if ((($env{'form.critmsg'}) || ($env{'form.sendbck'})) && |
if ((($env{'form.critmsg'}) || ($env{'form.sendbck'})) && |
(&Apache::lonnet::allowed('srm',$env{'request.course.id'}))) { |
(&Apache::lonnet::allowed('srm',$env{'request.course.id'}))) { |
$r->print(&mt('Sending critical message').' '.$recuname.'@'.$recdomain.': '); |
$r->print(&mt('Sending critical message').' '.$recuname.'@'.$recdomain.': '); |
Line 2021 sub sendoffmail {
|
Line 2056 sub sendoffmail {
|
&Apache::lonfeedback::clear_out_html($env{'form.subject'}), |
&Apache::lonfeedback::clear_out_html($env{'form.subject'}), |
$msgtxt, |
$msgtxt, |
$content{'citation'},undef,undef,$env{'form.permanent'}); |
$content{'citation'},undef,undef,$env{'form.permanent'}); |
if (($env{'request.course.id'}) && ($env{'form.sendmode'} eq 'group')) { |
} |
&user_normal_msg_raw( |
if (($env{'request.course.id'}) && |
$env{'course.'.$env{'request.course.id'}.'.num'}, |
($env{'form.sendmode'} eq 'group')) { |
$env{'course.'.$env{'request.course.id'}.'.domain'}, |
$broadcast_status{$recuname.':'.$recdomain} = $thismsg; |
'Broadcast ['.$recuname.':'.$recdomain.']', |
if ($thismsg eq 'ok') { |
$msgtxt); |
$numbroadcast ++; |
} |
} |
} |
} |
$r->print($thismsg.'<br />'); |
$r->print($thismsg.'<br />'); |
$sendstatus.=' '.$thismsg; |
$sendstatus.=' '.$thismsg; |
} |
} |
|
if (($env{'request.course.id'}) && ($env{'form.sendmode'} eq 'group')) { |
|
my $subj_prefix; |
|
if ($msgtype eq 'critical') { |
|
$subj_prefix = 'Critical broadcast'; |
|
} else { |
|
$subj_prefix = 'Broadcast'; |
|
} |
|
my ($broadmsgid,$broadresult); |
|
if ($numbroadcast) { |
|
$broadresult = &user_normal_msg_raw( |
|
$env{'course.'.$env{'request.course.id'}.'.num'}, |
|
$env{'course.'.$env{'request.course.id'}.'.domain'}, $subj_prefix.' to: '.$env{'course.'.$env{'request.course.id'}.'.description'}. |
|
' ('.$numbroadcast.' sent)',$basicmsg,undef,undef,undef, |
|
undef,\$broadmsgid); |
|
} |
|
if ($broadresult eq 'ok') { |
|
my $record_sent; |
|
my @recusers = (); |
|
my @recudoms = (); |
|
foreach my $recipient (sort(keys(%toaddr))) { |
|
if ($broadcast_status{$recipient} eq 'ok') { |
|
my ($uname,$udom) = split/:/,$recipient; |
|
push(@recusers,$uname); |
|
push(@recudoms,$udom); |
|
} |
|
} |
|
if (@recusers) { |
|
my $broadmessage; |
|
($broadmsgid,$broadmessage)=&packagemsg(&Apache::lonfeedback::clear_out_html($env{'form.subject'}),$basicmsg,undef,undef,undef,\@recusers,\@recudoms,$broadmsgid); |
|
$record_sent = &store_sent_mail($broadmsgid,$broadmessage); |
|
} |
|
} else { |
|
&Apache::lonnet::logthis('Failed to create record of broadcast in '.$env{'course.'.$env{'request.course.id'}.'.num'}.' at '.$env{'course.'.$env{'request.course.id'}.'.domain'}.' - no msgid generated'); |
|
} |
|
} |
} else { |
} else { |
&printheader($r,'','No messages sent.'); |
&printheader($r,'','No messages sent.'); |
} |
} |