--- loncom/interface/lonmsg.pm 2006/04/23 05:47:33 1.173.2.1
+++ loncom/interface/lonmsg.pm 2006/03/21 20:54:35 1.179
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines for messaging
#
-# $Id: lonmsg.pm,v 1.173.2.1 2006/04/23 05:47:33 albertel Exp $
+# $Id: lonmsg.pm,v 1.179 2006/03/21 20:54:35 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -137,7 +137,7 @@ my $interdis;
sub packagemsg {
my ($subject,$message,$citation,$baseurl,$attachmenturl,
- $recuser,$recdomain,$msgid,$type)=@_;
+ $recuser,$recdomain,$msgid,$type,$crsmsgid)=@_;
$message =&HTML::Entities::encode($message,'<>&"');
$citation=&HTML::Entities::encode($citation,'<>&"');
$subject =&HTML::Entities::encode($subject,'<>&"');
@@ -170,11 +170,19 @@ sub packagemsg {
$msgid = &buildmsgid($now,$subject,$env{'user.name'},$env{'user.domain'},
$msgcount,$course_context,$$);
}
- my $result=''.$env{'user.name'}.''.
+ my $result = ''.$env{'user.name'}.''.
''.$env{'user.domain'}.''.
''.$subject.''.
- ''.
- ''.$ENV{'SERVER_NAME'}.''.
+ '';
+ if (defined($crsmsgid)) {
+ $result.= ''.$course_context.''.
+ ''.$env{'request.course.sec'}.''.
+ ''.$msgid.''.
+ ''.$crsmsgid.''.
+ ''.$message.'';
+ return ($msgid,$result);
+ }
+ $result .= ''.$ENV{'SERVER_NAME'}.''.
''.$ENV{'HTTP_HOST'}.''.
''.$ENV{'REMOTE_ADDR'}.''.
''.$env{'browser.type'}.''.
@@ -536,7 +544,7 @@ sub user_crit_received {
sub user_normal_msg_raw {
my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl,
- $toperm,$currid,$newid,$sentmessage)=@_;
+ $toperm,$currid,$newid,$sentmessage,$crsmsgid)=@_;
# Check if allowed missing
my ($status,$packed_message);
my $msgid='undefined';
@@ -546,10 +554,9 @@ sub user_normal_msg_raw {
if ($homeserver ne 'no_host') {
($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,
+ undef,$crsmsgid);
+
# Store in user folder
$status=&Apache::lonnet::critical(
'put:'.$domain.':'.$user.':nohist_email:'.
@@ -565,6 +572,11 @@ sub user_normal_msg_raw {
(&Apache::lonnet::allowed('srm',$env{'request.course.id'})
|| &Apache::lonnet::allowed('srm',$env{'request.course.id'}.
'/'.$env{'request.course.sec'})))) {
+ (undef, my $packed_message_no_citation)=
+ &packagemsg($subject,$message,undef ,$baseurl,
+ $attachmenturl,$user,$domain,$currid,
+ undef,$crsmsgid);
+
$status .= &store_sent_mail($msgid,$packed_message_no_citation);
}
} else {
@@ -700,9 +712,8 @@ sub statuschange {
&Apache::lonnet::put('email_status'.$suffix,{$msgid => $newstatus});
}
if ($newstatus eq 'deleted') {
- return &movemsg($msgid,$folder,'trash');
- }
- return ;
+ &movemsg(&Apache::lonnet::unescape($msgid),$folder,'trash');
+ }
}
# ============================================================= Make new folder
@@ -723,53 +734,19 @@ sub movemsg {
if ($srcfolder eq 'new') { $srcfolder=''; }
my $srcsuffix=&foldersuffix($srcfolder);
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
my %message=&Apache::lonnet::get('nohist_email'.$srcsuffix,[$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.'));
- }
+ &Apache::lonnet::put('nohist_email'.$trgsuffix,{$msgid => $message{$msgid}});
# Copy status
unless ($trgfolder eq 'trash') {
- my %status=&Apache::lonnet::get('email_status'.$srcsuffix,[$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.'));
- }
+ my %status=&Apache::lonnet::get('email_status'.$srcsuffix,[$msgid]);
+ &Apache::lonnet::put('email_status'.$trgsuffix,{$msgid => $status{$msgid}});
}
-
# Delete orginals
- my $result_del_msg =
- &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);
+ &Apache::lonnet::del('nohist_email'.$srcsuffix,[$msgid]);
+ &Apache::lonnet::del('email_status'.$srcsuffix,[$msgid]);
}
# ======================================================= Display a course list
@@ -797,7 +774,7 @@ sub discourse {
for (i=0; iprint("");
}
- $r->print(''.&Apache::loncommon::endbodytag().'