--- loncom/interface/lonnotify.pm 2005/10/04 20:17:51 1.2 +++ loncom/interface/lonnotify.pm 2005/10/11 21:29:39 1.4 @@ -151,8 +151,6 @@ sub print_display_option_form { 'enddate', $now); my $jscript; - my %totals = (); - my %personnel = (); my $output = <<"ENDONE"; $html @@ -174,14 +172,19 @@ ENDONE ''; $output .= &Apache::lonhtmlcommon::row_closure(); $output .= &Apache::lonhtmlcommon::row_title($col_width,$tablecolor,&mt('Choose sender(s)')); -# FIXME - need to complete work on domain_roles_get -# &Apache::lonnet::domain_roles_get($cdom,\@roles,\%personnel,%totals); + my %personnel = &Apache::lonnet::get_domain_roles($cdom,\@roles); $output .= ''; - if ($totals{'dc'} > 0) { - foreach my $user (sort(keys(%{$personnel{'dc'}}))) { - my ($uname,$udom) = split(/:/,$user); - my %userinfo = &Apache::lonnet::get('environment',['lastname','firstname'],$udom,$uname); - $output .= ' '.$userinfo{firstname}.' '.$userinfo{lastname}.'  ('.$user.')'; + my @domcc = (); + foreach my $server (keys %personnel) { + print STDERR "key level 1 is $server\n"; + foreach my $user (sort(keys %{$personnel{$server}})) { + print STDERR "key level 2 is $user\n"; + my ($trole,$uname,$udom,$runame,$rudom,$rsec) = split(/:/,$user); + unless (grep/^$uname:$udom$/,@domcc) { + my %userinfo = &Apache::lonnet::get('environment',['lastname','firstname'],$udom,$uname); + $output .= ' '.$userinfo{firstname}.' '.$userinfo{lastname}.'  ('.$uname.':'.$udom.')'; + push (@domcc,$uname.':'.$udom); + } } } $output .= ''; @@ -394,7 +397,7 @@ function initialize_codes() { my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs (undef,'Choose e-mail audience','Broadcast_system_email'); - my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($cdom,$cdom); + my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($cdom); my $output = <<"ENDONE"; $html @@ -500,7 +503,7 @@ ENDONE my $col_width = '200'; &form_elements(\%longtypes,\%authtypes); - foreach my $auth (%authtypes) { + foreach my $auth (keys(%authtypes)) { if (exists($env{'form.'.$auth})) { my $default = $env{'form.'.$auth}; $default =~ s/^,+//; @@ -695,8 +698,8 @@ sub broadcast_email { sub get_user_info { my ($user,%email_defaults,$ltext) = @_; my ($uname,$udom) = split(/:/,$user); - my %userinfo = &Apache::lonnet::get('environment',['permanenetemail','notification','critnotification',],$udom,$uname); my @emailtypes = ('permanentemail','critnotification','notification'); + my %userinfo = &Apache::lonnet::get('environment',\@emailtypes,$udom,$uname); my $email = ''; foreach my $type (@emailtypes) { $email = $userinfo{$type}; @@ -739,16 +742,15 @@ sub form_elements { sub store_mail { my ($subject,$message,$domain,$recipients,$attachmenturl,$ltext) = @_; - my %status = (); 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)) { -# FIXME This needs to be via a subroutine in lonnet - $status{$server} = &Apache::lonnet::critical( - 'dcmailput:'.$domain.':'.&Apache::lonnet::escape($msgid).'='. - &Apache::lonnet::escape($servers{$server}),$server); + unless (&Apache::lonnet::dcmailput($domain,$msgid,\%servers,$server) eq 'ok') { + &logthis('Storage of dc mail failed for domain'.$domain.' for server: '. + $server.'. Message ID was '.$msgid); + } } } @@ -811,8 +813,7 @@ sub unpackagemail { my $value=$parser->get_text('/'.$entry); my ($username,$email); if ($entry eq 'recipient') { - my $attr = $token->[2]; - $username = $$attr{'username'}; + $username = $token->[2]{'username'}; $username = &HTML::Entities::decode($username,'<>&"'); $content{recipients}{$username} = &HTML::Entities::decode($value,'<>&"');