version 1.172, 2006/01/10 15:29:13
|
version 1.173.2.1, 2006/04/23 05:47:33
|
Line 538 sub user_normal_msg_raw {
|
Line 538 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)=@_; |
$toperm,$currid,$newid,$sentmessage)=@_; |
# Check if allowed missing |
# Check if allowed missing |
my $status=''; |
my ($status,$packed_message); |
my $msgid='undefined'; |
my $msgid='undefined'; |
my $text=$message; |
my $text=$message; |
unless (($message)&&($user)&&($domain)) { $status='empty'; }; |
unless (($message)&&($user)&&($domain)) { $status='empty'; }; |
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,$message)=&packagemsg($subject,$message,$citation,$baseurl, |
($msgid,$packed_message)= |
|
&packagemsg($subject,$message,$citation,$baseurl, |
|
$attachmenturl,$user,$domain,$currid); |
|
(undef, my $packed_message_no_citation)= |
|
&packagemsg($subject,$message,undef ,$baseurl, |
$attachmenturl,$user,$domain,$currid); |
$attachmenturl,$user,$domain,$currid); |
# Store in user folder |
# Store in user folder |
$status=&Apache::lonnet::critical( |
$status=&Apache::lonnet::critical( |
'put:'.$domain.':'.$user.':nohist_email:'. |
'put:'.$domain.':'.$user.':nohist_email:'. |
&Apache::lonnet::escape($msgid).'='. |
&Apache::lonnet::escape($msgid).'='. |
&Apache::lonnet::escape($message),$homeserver); |
&Apache::lonnet::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 561 sub user_normal_msg_raw {
|
Line 565 sub user_normal_msg_raw {
|
(&Apache::lonnet::allowed('srm',$env{'request.course.id'}) |
(&Apache::lonnet::allowed('srm',$env{'request.course.id'}) |
|| &Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
|| &Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
'/'.$env{'request.course.sec'})))) { |
'/'.$env{'request.course.sec'})))) { |
$status .= &store_sent_mail($msgid,$message); |
$status .= &store_sent_mail($msgid,$packed_message_no_citation); |
} |
} |
} else { |
} else { |
$status='no_host'; |
$status='no_host'; |
Line 570 sub user_normal_msg_raw {
|
Line 574 sub user_normal_msg_raw {
|
$$newid = $msgid; |
$$newid = $msgid; |
} |
} |
if (defined($sentmessage)) { |
if (defined($sentmessage)) { |
$$sentmessage = $message; |
$$sentmessage = $packed_message; |
} |
} |
|
|
# Notifications |
# Notifications |
Line 696 sub statuschange {
|
Line 700 sub statuschange {
|
&Apache::lonnet::put('email_status'.$suffix,{$msgid => $newstatus}); |
&Apache::lonnet::put('email_status'.$suffix,{$msgid => $newstatus}); |
} |
} |
if ($newstatus eq 'deleted') { |
if ($newstatus eq 'deleted') { |
&movemsg(&Apache::lonnet::unescape($msgid),$folder,'trash'); |
return &movemsg($msgid,$folder,'trash'); |
} |
} |
|
return ; |
} |
} |
|
|
# ============================================================= Make new folder |
# ============================================================= Make new folder |
Line 718 sub movemsg {
|
Line 723 sub movemsg {
|
if ($srcfolder eq 'new') { $srcfolder=''; } |
if ($srcfolder eq 'new') { $srcfolder=''; } |
my $srcsuffix=&foldersuffix($srcfolder); |
my $srcsuffix=&foldersuffix($srcfolder); |
my $trgsuffix=&foldersuffix($trgfolder); |
my $trgsuffix=&foldersuffix($trgfolder); |
|
if ($srcsuffix eq $trgsuffix) { |
|
return (0,&mt('Message not moved, Attempted to move message to the same folder as it already is in.')); |
|
} |
|
|
# Copy message |
# Copy message |
my %message=&Apache::lonnet::get('nohist_email'.$srcsuffix,[$msgid]); |
my %message=&Apache::lonnet::get('nohist_email'.$srcsuffix,[$msgid]); |
&Apache::lonnet::put('nohist_email'.$trgsuffix,{$msgid => $message{$msgid}}); |
if (!exists($message{$msgid}) || $message{$msgid} eq '') { |
|
if (&Apache::slotrequest::network_error(%message)) { |
|
return (0,&mt('Message not moved, A network error occurred.')); |
|
} else { |
|
return (0,&mt('Message not moved as the message is no longer in the source folder.')); |
|
} |
|
} |
|
|
|
my $result =&Apache::lonnet::put('nohist_email'.$trgsuffix, |
|
{$msgid => $message{$msgid}}); |
|
if (&Apache::slotrequest::network_error($result)) { |
|
return (0,&mt('Message not moved, A network error occurred.')); |
|
} |
|
|
# Copy status |
# Copy status |
unless ($trgfolder eq 'trash') { |
unless ($trgfolder eq 'trash') { |
my %status=&Apache::lonnet::get('email_status'.$srcsuffix,[$msgid]); |
my %status=&Apache::lonnet::get('email_status'.$srcsuffix,[$msgid]); |
&Apache::lonnet::put('email_status'.$trgsuffix,{$msgid => $status{$msgid}}); |
# a non-existant status is the mark of an unread msg |
|
if (&Apache::slotrequest::network_error(%status)) { |
|
return (0,&mt('Message copied to new folder but status was not, A network error occurred.')); |
|
} |
|
my $result=&Apache::lonnet::put('email_status'.$trgsuffix, |
|
{$msgid => $status{$msgid}}); |
|
if (&Apache::slotrequest::network_error($result)) { |
|
return (0,&mt('Message copied to new folder but status was not, A network error occurred.')); |
|
} |
} |
} |
|
|
# Delete orginals |
# Delete orginals |
&Apache::lonnet::del('nohist_email'.$srcsuffix,[$msgid]); |
my $result_del_msg = |
&Apache::lonnet::del('email_status'.$srcsuffix,[$msgid]); |
&Apache::lonnet::del('nohist_email'.$srcsuffix,[$msgid]); |
|
my $result_del_stat = |
|
&Apache::lonnet::del('email_status'.$srcsuffix,[$msgid]); |
|
if (&Apache::slotrequest::network_error($result_del_msg)) { |
|
return (0,&mt('Message copied, but unable to delete the original from the source folder.')); |
|
} |
|
if (&Apache::slotrequest::network_error($result_del_stat)) { |
|
return (0,&mt('Message copied, but unable to delete the original status from the source folder.')); |
|
} |
|
|
|
return (1); |
} |
} |
|
|
# ======================================================= Display a course list |
# ======================================================= Display a course list |
Line 1159 ENDDISHEADER
|
Line 1198 ENDDISHEADER
|
$description.'</td><td>'.$status.'</td></tr>'."\n"); |
$description.'</td><td>'.$status.'</td></tr>'."\n"); |
} elsif ($status eq 'deleted') { |
} elsif ($status eq 'deleted') { |
# purge |
# purge |
&movemsg(&Apache::lonnet::unescape($origID),$folder,'trash'); |
my ($result,$msg) = |
|
&movemsg(&Apache::lonnet::unescape($origID),$folder,'trash'); |
|
|
} |
} |
} |
} |
$r->print("</table>\n<p>". |
$r->print("</table>\n<p>". |
Line 2031 sub displayresource {
|
Line 2072 sub displayresource {
|
$content{'sendername'}, |
$content{'sendername'}, |
$content{'senderdomain'}, |
$content{'senderdomain'}, |
$content{'courseid'}); |
$content{'courseid'}); |
} else { |
} elsif ($env{'user.adv'}) { |
return $content{'citation'}; |
return $content{'citation'}; |
} |
} |
|
return ''; |
} |
} |
|
|
# ================================================================== The Header |
# ================================================================== The Header |
Line 2373 sub handler {
|
Line 2415 sub handler {
|
&compout($r,$env{'form.forward'},undef,undef,undef,$folder); |
&compout($r,$env{'form.forward'},undef,undef,undef,$folder); |
} elsif ($env{'form.markdel'}) { |
} elsif ($env{'form.markdel'}) { |
&printheader($r,'','Deleted Message'); |
&printheader($r,'','Deleted Message'); |
&statuschange($env{'form.markdel'},'deleted',$folder); |
my ($result,$msg) = |
|
&statuschange($env{'form.markdel'},'deleted',$folder); |
|
if (!$result) { |
|
$r->print('<p style="color: red">Failed to delete the message.</p>'. |
|
'<p style="color: red">'.$msg."</p>\n"); |
|
} |
&Apache::loncommunicate::menu($r); |
&Apache::loncommunicate::menu($r); |
&disall($r,($folder?$folder:$dismode)); |
&disall($r,($folder?$folder:$dismode)); |
} elsif ($env{'form.markedmove'}) { |
} elsif ($env{'form.markedmove'}) { |
my $total=0; |
my ($total,$failed,@failed_msg)=(0,0); |
foreach (keys %env) { |
foreach my $key (keys(%env)) { |
if ($_=~/^form\.delmark_(.*)$/) { |
if ($key=~/^form\.delmark_(.*)$/) { |
&movemsg(&Apache::lonnet::unescape($1),$folder, |
my ($result,$msg) = |
$env{'form.movetofolder'}); |
&movemsg(&Apache::lonnet::unescape($1),$folder, |
$total++; |
$env{'form.movetofolder'}); |
|
if ($result) { |
|
$total++; |
|
} else { |
|
$failed++; |
|
push(@failed_msg,$msg); |
|
} |
} |
} |
} |
} |
&printheader($r,'','Moved Messages'); |
&printheader($r,'','Moved Messages'); |
|
if ($failed) { |
|
$r->print('<p style="color: red;"> |
|
Failed to move '.$failed.' message(s)</p>'); |
|
$r->print('<p style="color: red;">'. |
|
join("</p>\n<p style=\"color: red;\">",@failed_msg). |
|
"</p>\n"); |
|
} |
$r->print('Moved '.$total.' message(s)<p>'); |
$r->print('Moved '.$total.' message(s)<p>'); |
&Apache::loncommunicate::menu($r); |
&Apache::loncommunicate::menu($r); |
&disall($r,($folder?$folder:$dismode)); |
&disall($r,($folder?$folder:$dismode)); |
} elsif ($env{'form.markeddel'}) { |
} elsif ($env{'form.markeddel'}) { |
my $total=0; |
my ($total,$failed,@failed_msg)=(0,0); |
foreach (keys %env) { |
foreach my $key (keys(%env)) { |
if ($_=~/^form\.delmark_(.*)$/) { |
if ($key=~/^form\.delmark_(.*)$/) { |
&statuschange(&Apache::lonnet::unescape($1),'deleted',$folder); |
my ($result,$msg) = |
$total++; |
&statuschange(&Apache::lonnet::unescape($1),'deleted', |
|
$folder); |
|
if ($result) { |
|
$total++; |
|
} else { |
|
$failed++; |
|
push(@failed_msg,$msg); |
|
} |
} |
} |
} |
} |
&printheader($r,'','Deleted Messages'); |
&printheader($r,'','Deleted Messages'); |
|
if ($failed) { |
|
$r->print('<p style="color: red;"> |
|
Failed to delete '.$failed.' message(s)</p>'); |
|
$r->print('<p style="color: red;">'. |
|
join("</p>\n<p style=\"color: red;\">",@failed_msg). |
|
"</p>\n"); |
|
} |
$r->print('Deleted '.$total.' message(s)<p>'); |
$r->print('Deleted '.$total.' message(s)<p>'); |
&Apache::loncommunicate::menu($r); |
&Apache::loncommunicate::menu($r); |
&disall($r,($folder?$folder:$dismode)); |
&disall($r,($folder?$folder:$dismode)); |