--- loncom/interface/lonmsg.pm 2006/12/06 17:14:50 1.188
+++ loncom/interface/lonmsg.pm 2006/12/13 01:45:15 1.190
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines for messaging
#
-# $Id: lonmsg.pm,v 1.188 2006/12/06 17:14:50 www Exp $
+# $Id: lonmsg.pm,v 1.190 2006/12/13 01:45:15 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -379,24 +379,29 @@ sub store_instructor_comment {
sub user_crit_msg_raw {
my ($user,$domain,$subject,$message,$sendback,$toperm,$sentmessage)=@_;
# Check if allowed missing
- my $status='';
+ my ($status,$packed_message);
my $msgid='undefined';
unless (($message)&&($user)&&($domain)) { $status='empty'; };
my $text=$message;
my $homeserver=&Apache::lonnet::homeserver($user,$domain);
if ($homeserver ne 'no_host') {
- ($msgid,$message)=&packagemsg($subject,$message);
- if ($sendback) { $message.='true'; }
+ ($msgid,$packed_message)=&packagemsg($subject,$message);
+ if ($sendback) { $packed_message.='true'; }
$status=&Apache::lonnet::critical(
'put:'.$domain.':'.$user.':critical:'.
&escape($msgid).'='.
- &escape($message),$homeserver);
+ &escape($packed_message),$homeserver);
if (defined($sentmessage)) {
- $$sentmessage = $message;
+ $$sentmessage = $packed_message;
}
+ (undef,my $packed_message_no_citation) =
+ &packagemsg($subject,$message,undef,undef,undef,$user,$domain,
+ $msgid);
+ $status .= &store_sent_mail($msgid,$packed_message_no_citation);
} else {
$status='no_host';
}
+
# Notifications
my %userenv = &Apache::loncommon::getemails($user,$domain);
if ($userenv{'critnotification'}) {
@@ -518,11 +523,9 @@ 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);
-
+ (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 {
@@ -601,7 +604,31 @@ sub store_sent_mail {
sub foldersuffix {
my $folder=shift;
unless ($folder) { return ''; }
- return '_'.&escape($folder);
+ my $suffix;
+ my %folderhash = &get_user_folders($folder);
+ if (ref($folderhash{$folder}) eq 'HASH') {
+ $suffix = '_'.&escape($folderhash{$folder}{'id'});
+ } else {
+ $suffix = '_'.&escape($folder);
+ }
+ return $suffix;
+}
+
+# ========================================================= User-defined folders
+
+sub get_user_folders {
+ my ($folder) = @_;
+ my %userfolders =
+ &Apache::lonnet::dump('email_folders',undef,undef,$folder);
+ my $lock = "\0".'lock_counter'; # locks db while counter incremented
+ my $counter = "\0".'idcount'; # used in suffix for email db files
+ if (defined($userfolders{$lock})) {
+ delete($userfolders{$lock});
+ }
+ if (defined($userfolders{$counter})) {
+ delete($userfolders{$counter});
+ }
+ return %userfolders;
}
1;