--- loncom/lonnet/perl/lonnet.pm 2006/01/07 00:25:23 1.690 +++ loncom/lonnet/perl/lonnet.pm 2006/01/10 16:06:07 1.692 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.690 2006/01/07 00:25:23 albertel Exp $ +# $Id: lonnet.pm,v 1.692 2006/01/10 16:06:07 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -289,14 +289,14 @@ sub transfer_profile_to_env { sub appenv { my %newenv=@_; - foreach (keys %newenv) { - if (($newenv{$_}=~/^user\.role/) || ($newenv{$_}=~/^user\.priv/)) { + foreach my $key (keys(%newenv)) { + if (($newenv{$key}=~/^user\.role/) || ($newenv{$key}=~/^user\.priv/)) { &logthis("WARNING: ". - "Attempt to modify environment ".$_." to ".$newenv{$_} + "Attempt to modify environment ".$key." to ".$newenv{$key} .''); - delete($newenv{$_}); + delete($newenv{$key}); } else { - $env{$_}=$newenv{$_}; + $env{$key}=$newenv{$key}; } } @@ -380,12 +380,12 @@ sub delenv { close($fh); return 'error: '.$!; } - foreach (@oldenv) { - if ($_=~/^$delthis/) { - my ($key,undef) = split('=',$_,2); + foreach my $cur_key (@oldenv) { + if ($cur_key=~/^$delthis/) { + my ($key,undef) = split('=',$cur_key,2); delete($env{$key}); } else { - print $fh $_; + print $fh $cur_key; } } close($fh); @@ -4823,7 +4823,7 @@ sub EXT { return $env{'course.'.$courseid.'.'.$spacequalifierrest}; } elsif ($realm eq 'resource') { - my ($section,$group); + my $section; my @groups = (); if (defined($courseid) && $courseid eq $env{'request.course.id'}) { if (!$symbparm) { $symbparm=&symbread(); } @@ -4844,10 +4844,9 @@ sub EXT { if (($env{'user.name'} eq $uname) && ($env{'user.domain'} eq $udom)) { $section=$env{'request.course.sec'}; - @groups=split(/:/,$env{'request.course.groups'}); + @groups=&sort_course_groups($env{'request.course.groups'},$courseid); if (@groups > 0) { @groups = sort(@groups); - $group = $groups[0]; } } else { if (! defined($usection)) { @@ -4857,16 +4856,10 @@ sub EXT { } my $grouplist = &get_users_groups($udom,$uname,$courseid); if ($grouplist) { - @groups = split(/:/,$grouplist); - @groups = sort(@groups); - $group = $groups[0]; + @groups=&sort_course_groups($grouplist,$courseid); } } - my $grplevel=$courseid.'.['.$group.'].'.$spacequalifierrest; - my $grplevelr=$courseid.'.['.$group.'].'.$symbparm; - my $grplevelm=$courseid.'.['.$group.'].'.$mapparm; - my $seclevel=$courseid.'.['.$section.'].'.$spacequalifierrest; my $seclevelr=$courseid.'.['.$section.'].'.$symbparm; my $seclevelm=$courseid.'.['.$section.'].'.$mapparm; @@ -4880,17 +4873,13 @@ sub EXT { my $userreply=&resdata($uname,$udom,'user', ($courselevelr,$courselevelm, $courselevel)); - if (defined($userreply)) { return $userreply; } # ------------------------------------------------ second, check some of course my $coursereply; - if (defined($group)) { - $coursereply = &resdata($env{'course.'.$courseid.'.num'}, - $env{'course.'.$courseid.'.domain'}, - 'course', - ($grplevelr,$grplevelm,$grplevel, - $courselevelr)); + if (@groups > 0) { + $coursereply = &check_group_parms($courseid,\@groups,$symbparm, + $mapparm,$spacequalifierrest); if (defined($coursereply)) { return $coursereply; } } @@ -4969,6 +4958,32 @@ sub EXT { return ''; } +sub check_group_parms { + my ($courseid,$groups,$symbparm,$mapparm,$what) = @_; + my @groupitems = (); + my $resultitem; + my @levels = ($symbparm,$mapparm,$what); + foreach my $group (@{$groups}) { + foreach my $level (@levels) { + my $item = $courseid.'.['.$group.'].'.$level; + push(@groupitems,$item); + } + } + my $coursereply = &resdata($env{'course.'.$courseid.'.num'}, + $env{'course.'.$courseid.'.domain'}, + 'course',@groupitems); + return $coursereply; +} + +sub sort_course_groups { # Sort groups based on defined rankings. Default is sort(). + my ($grouplist,$courseid) = @_; + my @groups = split/:/,$grouplist; + if (@groups > 1) { + @groups = sort(@groups); + } + return @groups; +} + sub packages_tab_default { my ($uri,$varname)=@_; my (undef,$part,$name)=split(/\./,$varname);