--- loncom/interface/lonnotify.pm 2005/11/15 21:08:47 1.8 +++ loncom/interface/lonnotify.pm 2005/12/09 00:08:35 1.9 @@ -273,25 +273,17 @@ $breadcrumbs
ENDONE - foreach my $server (keys(%sentmail)) { - foreach my $msgid (keys(%{$sentmail{$server}})) { - my %content = &unpackagemail($sentmail{$server}{$msgid}); - if (defined($dcmail{$msgid})) { - foreach my $user (keys(%{$content{'recipients'}})) { + foreach my $msgid (keys(%sentmail)) { + my %content = &unpackagemail($sentmail{$msgid}); + $msgcount ++; + %{$dcmail{$msgid}} = (); + foreach my $item (keys(%content)) { + if ($item eq 'recipients') { + foreach my $user (keys(%{$content{recipients}})) { $dcmail{$msgid}{recipients}{$user} = $content{recipients}{$user}; } } else { - $msgcount ++; - %{$dcmail{$msgid}} = (); - foreach my $item (keys(%content)) { - if ($item eq 'recipients') { - foreach my $user (keys(%{$content{recipients}})) { - $dcmail{$msgid}{recipients}{$user} = $content{recipients}{$user}; - } - } else { - $dcmail{$msgid}{$item} = $content{$item}; - } - } + $dcmail{$msgid}{$item} = $content{$item}; } } } @@ -849,20 +841,25 @@ sub form_elements { sub store_mail { my ($subject,$message,$domain,$recipients,$attachmenturl,$ltext) = @_; - my %servers = (); - my $msgid=&packagemail($subject,$message,$domain, - $recipients,\%servers,$attachmenturl); -# Store in dc email db files on appropriate servers. - foreach my $server (keys(%servers)) { - unless (&Apache::lonnet::dcmailput($domain,$msgid,\%servers,$server) eq 'ok') { - &Apache::lonnet::logthis('Storage of dc mail failed for domain'.$domain.' for server: '. - $server.'. Message ID was '.$msgid); + my $msgid; + ($msgid,$message) = &packagemail($subject,$message,$domain,$recipients, + $attachmenturl); +# Store in dc email db files on primary library server for domain. + my $server = $Apache::lonnet::domain_primary{$domain}; + if (defined($server)) { + unless (&Apache::lonnet::dcmailput($domain,$msgid,$message,$server) + eq 'ok') { + &Apache::lonnet::logthis('Storage of dc mail failed for domain'. + $domain.' for server: '. $server.'. Message ID was '.$msgid); } + } else { + &Apache::lonnet::logthis('Storage of dc mail failed for domain'. + $domain.' as no primary server identified. Message ID was '.$msgid); } } sub packagemail { - my ($subject,$message,$dom,$recipients,$servers,$attachmenturl,$ltext) = @_; + my ($subject,$message,$dom,$recipients,$attachmenturl) = @_; my %record = (); my $partsubj=$subject; $partsubj=&Apache::lonnet::escape($partsubj); @@ -893,19 +890,12 @@ sub packagemail { my ($username,$email) = split(/:/,$recip); $username = &Apache::lonnet::unescape($username); $email = &Apache::lonnet::unescape($email); - my ($uname,$udom) = split(/:/,$username); - my $uhom=&Apache::lonnet::homeserver($uname,$udom); - if ($uhom ne 'no_host') { - $username = &HTML::Entities::encode($username,'<>&"'); - $email = &HTML::Entities::encode($email,'<>&"'); - $record{$uhom} .= ''. + $username = &HTML::Entities::encode($username,'<>&"'); + $email = &HTML::Entities::encode($email,'<>&"'); + $result .= ''. $email.''; - } - } - foreach my $server (keys(%record)) { - $$servers{$server} = $result.$record{$server}; } - return $msgid; + return ($msgid,$result); } sub unpackagemail {