version 1.1301, 2016/03/02 14:14:14
|
version 1.1302, 2016/03/02 18:23:17
|
Line 10341 sub resdata {
|
Line 10341 sub resdata {
|
if ($item->[1] eq 'course') { |
if ($item->[1] eq 'course') { |
if ((ref($recurseup) eq 'ARRAY') && (ref($recursed) eq 'SCALAR')) { |
if ((ref($recurseup) eq 'ARRAY') && (ref($recursed) eq 'SCALAR')) { |
unless ($$recursed) { |
unless ($$recursed) { |
@{$recurseup} = &get_map_hierarchy($mapp); |
@{$recurseup} = &get_map_hierarchy($mapp,$courseid); |
$$recursed = 1; |
$$recursed = 1; |
} |
} |
foreach my $item (@${recurseup}) { |
foreach my $item (@${recurseup}) { |
Line 10402 sub get_numsuppfiles {
|
Line 10402 sub get_numsuppfiles {
|
# EXT resource caching routines |
# EXT resource caching routines |
# |
# |
|
|
|
{ |
|
# Cache (5 seconds) of map hierarchy for speedup of navmaps display |
|
# |
|
# The course for which we cache |
|
my $cachedmapkey=''; |
|
# The cached recursive maps for this course |
|
my %cachedmaps=(); |
|
# When this was last done |
|
my $cachedmaptime=''; |
|
|
sub clear_EXT_cache_status { |
sub clear_EXT_cache_status { |
&delenv('cache.EXT.'); |
&delenv('cache.EXT.'); |
} |
} |
Line 10592 sub EXT {
|
Line 10602 sub EXT {
|
# ----------------------------------------------------- Cascading lookup scheme |
# ----------------------------------------------------- Cascading lookup scheme |
my $symbp=$symbparm; |
my $symbp=$symbparm; |
$mapp=&deversion((&decode_symb($symbp))[0]); |
$mapp=&deversion((&decode_symb($symbp))[0]); |
@recurseup=(); |
|
my $symbparm=$symbp.'.'.$spacequalifierrest; |
my $symbparm=$symbp.'.'.$spacequalifierrest; |
my $recurseparm=$mapp.'___(rec).'.$spacequalifierrest; |
my $recurseparm=$mapp.'___(rec).'.$spacequalifierrest; |
my $mapparm=$mapp.'___(all).'.$spacequalifierrest; |
my $mapparm=$mapp.'___(all).'.$spacequalifierrest; |
Line 10764 sub check_group_parms {
|
Line 10773 sub check_group_parms {
|
} |
} |
|
|
sub get_map_hierarchy { |
sub get_map_hierarchy { |
my ($mapname) = @_; |
my ($mapname,$courseid) = @_; |
my @recurseup = (); |
my @recurseup = (); |
if ($mapname) { |
if ($mapname) { |
|
if (($cachedmapkey eq $courseid) && |
|
(abs($cachedmaptime-time)<5)) { |
|
if (ref($cachedmaps{$mapname}) eq 'ARRAY') { |
|
return @{$cachedmaps{$mapname}}; |
|
} |
|
} |
my $navmap = Apache::lonnavmaps::navmap->new(); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
if (ref($navmap)) { |
if (ref($navmap)) { |
@recurseup = $navmap->recurseup_maps($mapname); |
@recurseup = $navmap->recurseup_maps($mapname); |
undef($navmap); |
undef($navmap); |
|
$cachedmaps{$mapname} = \@recurseup; |
|
$cachedmaptime=time; |
|
$cachedmapkey=$courseid; |
} |
} |
} |
} |
return @recurseup; |
return @recurseup; |
} |
} |
|
|
|
} |
|
|
sub sort_course_groups { # Sort groups based on defined rankings. Default is sort(). |
sub sort_course_groups { # Sort groups based on defined rankings. Default is sort(). |
my ($courseid,@groups) = @_; |
my ($courseid,@groups) = @_; |
@groups = sort(@groups); |
@groups = sort(@groups); |