--- loncom/lonnet/perl/lonnet.pm 2009/07/25 14:44:55 1.1006 +++ loncom/lonnet/perl/lonnet.pm 2009/07/25 15:25:18 1.1007 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.1006 2009/07/25 14:44:55 raeburn Exp $ +# $Id: lonnet.pm,v 1.1007 2009/07/25 15:25:18 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -5507,11 +5507,21 @@ sub auto_run { sub auto_get_sections { my ($cnum,$cdom,$inst_coursecode) = @_; - my $homeserver = &homeserver($cnum,$cdom); - my @secs = (); - my $response=&unescape(&reply('autogetsections:'.$inst_coursecode.':'.$cdom,$homeserver)); - unless ($response eq 'refused') { - @secs = split(/:/,$response); + my $homeserver; + if (($cdom =~ /^$match_domain$/) && ($cnum =~ /^$match_courseid$/)) { + $homeserver = &homeserver($cnum,$cdom); + } + if (!defined($homeserver)) { + if ($cdom =~ /^$match_domain$/) { + $homeserver = &domain($cdom,'primary'); + } + } + my @secs; + if (defined($homeserver)) { + my $response=&unescape(&reply('autogetsections:'.$inst_coursecode.':'.$cdom,$homeserver)); + unless ($response eq 'refused') { + @secs = split(/:/,$response); + } } return @secs; } @@ -5530,6 +5540,22 @@ sub auto_validate_courseID { return $response; } +sub auto_validate_instcode { + my ($cnum,$cdom,$instcode,$owner) = @_; + my ($homeserver,$response); + if (($cdom =~ /^$match_domain$/) && ($cnum =~ /^$match_courseid$/)) { + $homeserver = &homeserver($cnum,$cdom); + } + if (!defined($homeserver)) { + if ($cdom =~ /^$match_domain$/) { + $homeserver = &domain($cdom,'primary'); + } + } + my $response=&unescape(&reply('autovalidateinstcode:'.$cdom.':'. + &escape($instcode).':'.&escape($owner),$homeserver)); + return $response; +} + sub auto_create_password { my ($cnum,$cdom,$authparam,$udom) = @_; my ($homeserver,$response); @@ -5704,7 +5730,11 @@ sub auto_instcode_defaults { } sub auto_possible_instcodes { - my ($domain,$codetitles,$cat_titles,$cat_orders) = @_; + my ($domain,$codetitles,$cat_titles,$cat_orders,$code_order) = @_; + unless ((ref($codetitles) eq 'ARRAY') && (ref($cat_titles) eq 'HASH') && + (ref($cat_orders) eq 'HASH') && (ref($code_order) eq 'ARRAY')) { + return; + } my (@homeservers,$uhome); if (defined(&domain($domain,'primary'))) { $uhome=&domain($domain,'primary'); @@ -5721,8 +5751,10 @@ sub auto_possible_instcodes { 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)); + my ($codetitlestr,$codeorderstr,$cat_title,$cat_order) = + split(':',$response); + @{$codetitles} = map { &unescape($_); } (split('&',$codetitlestr)); + @{$code_order} = map { &unescape($_); } (split('&',$codeorderstr)); foreach my $item (split('&',$cat_title)) { my ($name,$value)=split('=',$item); $cat_titles->{&unescape($name)}=&thaw_unescape($value);