--- loncom/lonnet/perl/lonnet.pm 2006/10/12 16:35:02 1.790 +++ loncom/lonnet/perl/lonnet.pm 2006/10/16 19:18:15 1.792 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.790 2006/10/12 16:35:02 albertel Exp $ +# $Id: lonnet.pm,v 1.792 2006/10/16 19:18:15 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1979,7 +1979,7 @@ sub courseidput { } sub courseiddump { - my ($domfilter,$descfilter,$sincefilter,$instcodefilter,$ownerfilter,$coursefilter,$hostidflag,$hostidref,$typefilter)=@_; + my ($domfilter,$descfilter,$sincefilter,$instcodefilter,$ownerfilter,$coursefilter,$hostidflag,$hostidref,$typefilter,$regexp_ok)=@_; my %returnhash=(); unless ($domfilter) { $domfilter=''; } foreach my $tryserver (keys %libserv) { @@ -1988,7 +1988,7 @@ sub courseiddump { foreach ( split(/\&/,&reply('courseiddump:'.$hostdom{$tryserver}.':'. $sincefilter.':'.&escape($descfilter).':'. - &escape($instcodefilter).':'.&escape($ownerfilter).':'.&escape($coursefilter).':'.&escape($typefilter), + &escape($instcodefilter).':'.&escape($ownerfilter).':'.&escape($coursefilter).':'.&escape($typefilter).':'.&escape($regexp_ok), $tryserver))) { my ($key,$value)=split(/\=/,$_); if (($key) && ($value)) { @@ -4257,6 +4257,40 @@ sub auto_instcode_format { } } +sub auto_instcode_defaults { + my ($domain,$returnhash,$code_order) = @_; + my @homeservers; + foreach my $tryserver (keys %libserv) { + if ($hostdom{$tryserver} eq $domain) { + if (!grep/^\Q$tryserver\E$/,@homeservers) { + push(@homeservers,$tryserver); + } + } + } + my $ok_response = 0; + my $response; + while (@homeservers > 0 && $ok_response == 0) { + my $server = shift(@homeservers); + $response=&reply('autoinstcodedefaults:'.$domain,$server); + if ($response !~ /(con_lost|error|no_such_host|refused)/) { + foreach (split(/\&/,$response)) { + my ($name,$value)=split(/\=/,$_); + if ($name eq 'code_order') { + @{$code_order} = split(/\&/,&unescape($value)); + } else { + $$returnhash{&unescape($name)}=&unescape($value); + } + } + } + $ok_response = 1; + } + if ($ok_response) { + return 'ok'; + } else { + return $response; + } +} + sub auto_validate_class_sec { my ($cdom,$cnum,$owner,$inst_class) = @_; my $homeserver = &homeserver($cnum,$cdom);