--- loncom/lonnet/perl/lonnet.pm 2009/06/11 19:02:32 1.1002 +++ loncom/lonnet/perl/lonnet.pm 2009/06/11 19:19:57 1.1003 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.1002 2009/06/11 19:02:32 raeburn Exp $ +# $Id: lonnet.pm,v 1.1003 2009/06/11 19:19:57 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -5698,7 +5698,40 @@ sub auto_instcode_defaults { } return $response; -} +} + +sub auto_possible_instcodes { + my ($domain,$codetitles,$cat_titles,$cat_order) = @_; + my (@homeservers,$uhome); + if (defined(&domain($domain,'primary'))) { + $uhome=&domain($domain,'primary'); + push(@homeservers,&domain($domain,'primary')); + } else { + my %servers = &get_servers($domain,'library'); + foreach my $tryserver (keys(%servers)) { + if (!grep(/^\Q$tryserver\E$/,@homeservers)) { + push(@homeservers,$tryserver); + } + } + } + my $response; + foreach my $server (@homeservers) { + $response=&reply('autopossibleinstcodes:'.$domain,$server); + next if ($response =~ /(con_lost|error|no_such_host|refused)/); + my ($codetitlestr,$cat_title,$cat_order) = split(':',$response); + @{$codetitles} = map { &unescape($_); } (split('&',$codetitlestr)); + foreach my $item (split('&',$cat_title)) { + my ($name,$value)=split('&',$item); + $cat_titles->{&unescape($name)}=&unescape($value); + } + foreach my $item (split('&',$cat_order)) { + my ($name,$value)=split('&',$item); + $cat_order->{&unescape($name)}=&unescape($value); + } + return 'ok'; + } + return $response; +} sub auto_validate_class_sec { my ($cdom,$cnum,$owners,$inst_class) = @_;