--- loncom/lonnet/perl/lonnet.pm 2009/07/17 13:55:10 1.1004 +++ 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.1004 2009/07/17 13:55:10 droeschl Exp $ +# $Id: lonnet.pm,v 1.1007 2009/07/25 15:25:18 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1326,7 +1326,7 @@ sub get_domain_defaults { } } if (ref($domconfig{'requestcourses'}) eq 'HASH') { - foreach my $item ('official','unofficial') { + foreach my $item ('official','unofficial','community') { $domdefaults{$item} = $domconfig{'requestcourses'}{$item}; } } @@ -4635,6 +4635,7 @@ sub usertools_access { %tools = ( official => 1, unofficial => 1, + community => 1, ); } else { %tools = ( @@ -5506,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; } @@ -5529,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); @@ -5703,7 +5730,11 @@ sub auto_instcode_defaults { } sub auto_possible_instcodes { - my ($domain,$codetitles,$cat_titles,$cat_order) = @_; + 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'); @@ -5720,15 +5751,17 @@ 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)}=&unescape($value); + my ($name,$value)=split('=',$item); + $cat_titles->{&unescape($name)}=&thaw_unescape($value); } foreach my $item (split('&',$cat_order)) { - my ($name,$value)=split('&',$item); - $cat_order->{&unescape($name)}=&unescape($value); + my ($name,$value)=split('=',$item); + $cat_orders->{&unescape($name)}=&thaw_unescape($value); } return 'ok'; }