--- loncom/interface/domainprefs.pm 2011/07/31 23:05:00 1.145 +++ loncom/interface/domainprefs.pm 2011/08/09 00:54:43 1.149 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set domain-wide configuration settings # -# $Id: domainprefs.pm,v 1.145 2011/07/31 23:05:00 raeburn Exp $ +# $Id: domainprefs.pm,v 1.149 2011/08/09 00:54:43 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -362,7 +362,7 @@ sub handler { col2 => 'Rules'}], }, ); - my %servers = &dom_servers($dom); + my %servers = &Apache::lonnet::internet_dom_servers($dom); if (keys(%servers) > 1) { $prefs{'login'} = { text => 'Log-in page options', help => 'Domain_Configuration_Login_Page', @@ -707,7 +707,7 @@ sub print_login { my %choices = &login_choices(); if ($position eq 'top') { - my %servers = &dom_servers($dom); + my %servers = &Apache::lonnet::internet_dom_servers($dom); my $choice = $choices{'disallowlogin'}; $css_class = ' class="LC_odd_row"'; $datatable .= '<tr'.$css_class.'><td>'.$choice.'</td>'. @@ -2307,7 +2307,7 @@ sub print_usersessions { my @alldoms = &Apache::lonnet::all_domains(); my %uniques = &Apache::lonnet::get_unique_servers(\@alldoms); - my %servers = &dom_servers($dom); + my %servers = &Apache::lonnet::internet_dom_servers($dom); my $itemcount = 1; if ($position eq 'top') { if (keys(%uniques) > 1) { @@ -3990,7 +3990,7 @@ sub modify_login { \%loginhash); } - my %servers = &dom_servers($dom); + my %servers = &Apache::lonnet::internet_dom_servers($dom); my @loginvia_attribs = ('serverpath','custompath','exempt'); if (keys(%servers) > 1) { foreach my $lonhost (keys(%servers)) { @@ -7062,7 +7062,7 @@ sub modify_usersessions { my @alldoms = &Apache::lonnet::all_domains(); my %uniques = &Apache::lonnet::get_unique_servers(\@alldoms); - my %servers = &dom_servers($dom); + my %servers = &Apache::lonnet::internet_dom_servers($dom); my %spareid = ¤t_offloads_to($dom,$domconfig{'usersessions'},\%servers); my $savespares; @@ -7099,7 +7099,12 @@ sub modify_usersessions { } } } - my @spares = sort(@okspares,$newspare); + my @spares; + if (($newspare ne '') && (!grep(/^\Q$newspare\E$/,@okspares))) { + @spares = sort(@okspares,$newspare); + } else { + @spares = sort(@okspares); + } $defaultshash{'usersessions'}{'spares'}{$lonhost}{$type} = \@spares; } if (keys(%spareschg) > 0) { @@ -7119,7 +7124,8 @@ sub modify_usersessions { } } - if (keys(%changes) > 0) { + my $nochgmsg = &mt('No changes made to settings for user session hosting/offloading.'); + if ((keys(%changes) > 0) || ($savespares)) { my $putresult = &Apache::lonnet::put_dom('configuration',\%defaultshash, $dom); if ($putresult eq 'ok') { @@ -7133,71 +7139,77 @@ sub modify_usersessions { } my $cachetime = 24*60*60; &Apache::lonnet::do_cache_new('domdefaults',$dom,\%domdefaults,$cachetime); - my %lt = &usersession_titles(); - $resulttext = &mt('Changes made:').'<ul>'; - foreach my $prefix (@prefixes) { - if (ref($changes{$prefix}) eq 'HASH') { - $resulttext .= '<li>'.$lt{$prefix}.'<ul>'; - if ($prefix eq 'spares') { - if (ref($changes{$prefix}) eq 'HASH') { - foreach my $lonhost (sort(keys(%{$changes{$prefix}}))) { - $resulttext .= '<li><b>'.$lonhost.'</b> '; - if (ref($changes{$prefix}{$lonhost}) eq 'HASH') { - foreach my $type (@{$types{$prefix}}) { - if ($changes{$prefix}{$lonhost}{$type}) { - my $offloadto = &mt('None'); - if (ref($defaultshash{'usersessions'}{'spares'}{$lonhost}{$type}) eq 'ARRAY') { - if (@{$defaultshash{'usersessions'}{'spares'}{$lonhost}{$type}} > 0) { - $offloadto = join(', ',@{$defaultshash{'usersessions'}{'spares'}{$lonhost}{$type}}); + if (keys(%changes) > 0) { + my %lt = &usersession_titles(); + $resulttext = &mt('Changes made:').'<ul>'; + foreach my $prefix (@prefixes) { + if (ref($changes{$prefix}) eq 'HASH') { + $resulttext .= '<li>'.$lt{$prefix}.'<ul>'; + if ($prefix eq 'spares') { + if (ref($changes{$prefix}) eq 'HASH') { + foreach my $lonhost (sort(keys(%{$changes{$prefix}}))) { + $resulttext .= '<li><b>'.$lonhost.'</b> '; + my $lonhostdom = &Apache::lonnet::host_domain($lonhost); + &Apache::lonnet::remote_devalidate_cache($lonhost,'spares',$lonhostdom); + if (ref($changes{$prefix}{$lonhost}) eq 'HASH') { + foreach my $type (@{$types{$prefix}}) { + if ($changes{$prefix}{$lonhost}{$type}) { + my $offloadto = &mt('None'); + if (ref($defaultshash{'usersessions'}{'spares'}{$lonhost}{$type}) eq 'ARRAY') { + if (@{$defaultshash{'usersessions'}{'spares'}{$lonhost}{$type}} > 0) { + $offloadto = join(', ',@{$defaultshash{'usersessions'}{'spares'}{$lonhost}{$type}}); + } } + $resulttext .= &mt('[_1] set to: [_2].','<i>'.$lt{$type}.'</i>',$offloadto).(' 'x3); } - $resulttext .= &mt('[_1] set to: [_2]','<i>'.$lt{'type'}.'</i>',$offloadto).(' 'x3); } } + $resulttext .= '</li>'; } - $resulttext .= '</li>'; } - } - } else { - foreach my $type (@{$types{$prefix}}) { - if (defined($changes{$prefix}{$type})) { - my $newvalue; - if (ref($defaultshash{'usersessions'}) eq 'HASH') { - if (ref($defaultshash{'usersessions'}{$prefix})) { - if ($type eq 'version') { - $newvalue = $defaultshash{'usersessions'}{$prefix}{$type}; - } elsif (ref($defaultshash{'usersessions'}{$prefix}{$type}) eq 'ARRAY') { - if (@{$defaultshash{'usersessions'}{$prefix}{$type}} > 0) { - $newvalue = join(', ',@{$defaultshash{'usersessions'}{$prefix}{$type}}); + } else { + foreach my $type (@{$types{$prefix}}) { + if (defined($changes{$prefix}{$type})) { + my $newvalue; + if (ref($defaultshash{'usersessions'}) eq 'HASH') { + if (ref($defaultshash{'usersessions'}{$prefix})) { + if ($type eq 'version') { + $newvalue = $defaultshash{'usersessions'}{$prefix}{$type}; + } elsif (ref($defaultshash{'usersessions'}{$prefix}{$type}) eq 'ARRAY') { + if (@{$defaultshash{'usersessions'}{$prefix}{$type}} > 0) { + $newvalue = join(', ',@{$defaultshash{'usersessions'}{$prefix}{$type}}); + } } } } - } - if ($newvalue eq '') { - if ($type eq 'version') { - $resulttext .= '<li>'.&mt('[_1] set to: off',$lt{$type}).'</li>'; + if ($newvalue eq '') { + if ($type eq 'version') { + $resulttext .= '<li>'.&mt('[_1] set to: off',$lt{$type}).'</li>'; + } else { + $resulttext .= '<li>'.&mt('[_1] set to: none',$lt{$type}).'</li>'; + } } else { - $resulttext .= '<li>'.&mt('[_1] set to: none',$lt{$type}).'</li>'; - } - } else { - if ($type eq 'version') { - $newvalue .= ' '.&mt('(or later)'); + if ($type eq 'version') { + $newvalue .= ' '.&mt('(or later)'); + } + $resulttext .= '<li>'.&mt('[_1] set to: [_2].',$lt{$type},$newvalue).'</li>'; } - $resulttext .= '<li>'.&mt('[_1] set to: [_2].',$lt{$type},$newvalue).'</li>'; } } } + $resulttext .= '</ul>'; } - $resulttext .= '</ul>'; } + $resulttext .= '</ul>'; + } else { + $resulttext = $nochgmsg; } - $resulttext .= '</ul>'; } else { $resulttext = '<span class="LC_error">'. &mt('An error occurred: [_1]',$putresult).'</span>'; } } else { - $resulttext = &mt('No changes made to settings for user session hosting/offloading.'); + $resulttext = $nochgmsg; } return $resulttext; } @@ -7242,39 +7254,6 @@ sub recurse_cat_deletes { return; } -sub dom_servers { - my ($dom) = @_; - my (%uniqservers,%servers); - my $primaryserver = &Apache::lonnet::hostname(&Apache::lonnet::domain($dom,'primary')); - my @machinedoms = &Apache::lonnet::machine_domains($primaryserver); - foreach my $mdom (@machinedoms) { - my %currservers = %servers; - my %server = &Apache::lonnet::get_servers($mdom); - %servers = (%currservers,%server); - } - my %by_hostname; - foreach my $id (keys(%servers)) { - push(@{$by_hostname{$servers{$id}}},$id); - } - foreach my $hostname (sort(keys(%by_hostname))) { - if (@{$by_hostname{$hostname}} > 1) { - my $match = 0; - foreach my $id (@{$by_hostname{$hostname}}) { - if (&Apache::lonnet::host_domain($id) eq $dom) { - $uniqservers{$id} = $hostname; - $match = 1; - } - } - unless ($match) { - $uniqservers{$by_hostname{$hostname}[0]} = $hostname; - } - } else { - $uniqservers{$by_hostname{$hostname}[0]} = $hostname; - } - } - return %uniqservers; -} - sub get_active_dcs { my ($dom) = @_; my %dompersonnel = &Apache::lonnet::get_domain_roles($dom,['dc']);