[LON-CAPA-cvs] cvs: loncom /lonnet/perl lonnet.pm
raeburn
raeburn at source.lon-capa.org
Tue Nov 9 15:14:04 EST 2021
raeburn Tue Nov 9 20:14:04 2021 EDT
Modified files:
/loncom/lonnet/perl lonnet.pm
Log:
- Improve efficiency in &get_commblock_resources() in course with folder
level time-limits triggered by starting timer.
- Only look for answerable problems in folders with activated blocks
which are still pre time-limit.
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.1470 loncom/lonnet/perl/lonnet.pm:1.1471
--- loncom/lonnet/perl/lonnet.pm:1.1470 Mon Nov 8 03:02:14 2021
+++ loncom/lonnet/perl/lonnet.pm Tue Nov 9 20:14:04 2021
@@ -1,7 +1,7 @@
# The LearningOnline Network
# TCP networking package
#
-# $Id: lonnet.pm,v 1.1470 2021/11/08 03:02:14 raeburn Exp $
+# $Id: lonnet.pm,v 1.1471 2021/11/09 20:14:04 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -8891,10 +8891,9 @@
}
} elsif ($block =~ /^firstaccess____(.+)$/) {
my $item = $1;
- my @to_test;
if (ref($commblocks{$block}{'blocks'}) eq 'HASH') {
if (ref($commblocks{$block}{'blocks'}{'docs'}) eq 'HASH') {
- my @interval;
+ my (@interval,$mapname);
my $type = 'map';
if ($item eq 'course') {
$type = 'course';
@@ -8903,36 +8902,11 @@
if ($item =~ /___\d+___/) {
$type = 'resource';
@interval=&EXT("resource.0.interval",$item);
- if (ref($navmap)) {
- my $res = $navmap->getBySymb($item);
- push(@to_test,$res);
- }
} else {
- my $mapsymb = &symbread($item,1);
- if ($mapsymb) {
- if (ref($navmap)) {
- my $mapres = $navmap->getBySymb($mapsymb);
- if (ref($mapres)) {
- my $first = $mapres->map_start();
- my $finish = $mapres->map_finish();
- my $it = $navmap->getIterator($first,$finish,undef,0,0);
- if (ref($it)) {
- my $res;
- while ($res = $it->next(undef,1)) {
- next unless (ref($res));
- my $symb = $res->symb();
- next if (($symb eq $mapsymb) || ($symb eq ''));
- @interval=&EXT("resource.0.interval",$symb);
- if ($interval[1] eq 'map') {
- if ($res->answerable()) {
- push(@to_test,$res);
- last;
- }
- }
- }
- }
- }
- }
+ $mapname = &deversion($item);
+ if (ref($navmap)) {
+ my $timelimit = $navmap->get_mapparam(undef,$mapname,'0.interval');
+ @interval = ($timelimit,'map');
}
}
}
@@ -8950,10 +8924,37 @@
my $timesup = $first_access+$timelimit;
if ($timesup > $now) {
my $activeblock;
- foreach my $res (@to_test) {
- if ($res->answerable()) {
- $activeblock = 1;
- last;
+ if ($type eq 'resource') {
+ if (ref($navmap)) {
+ my $res = $navmap->getBySymb($item);
+ if ($res->answerable()) {
+ $activeblock = 1;
+ }
+ }
+ } elsif ($type eq 'map') {
+ my $mapsymb = &symbread($mapname,1);
+ if (($mapsymb) && (ref($navmap))) {
+ my $mapres = $navmap->getBySymb($mapsymb);
+ if (ref($mapres)) {
+ my $first = $mapres->map_start();
+ my $finish = $mapres->map_finish();
+ my $it = $navmap->getIterator($first,$finish,undef,0,0);
+ if (ref($it)) {
+ my $res;
+ while ($res = $it->next(undef,1)) {
+ next unless (ref($res));
+ my $symb = $res->symb();
+ next if (($symb eq $mapsymb) || ($symb eq ''));
+ @interval=&EXT("resource.0.interval",$symb);
+ if ($interval[1] eq 'map') {
+ if ($res->answerable()) {
+ $activeblock = 1;
+ last;
+ }
+ }
+ }
+ }
+ }
}
}
if ($activeblock) {
@@ -9387,7 +9388,7 @@
}
sub get_query_reply {
- my ($queryid,$sleep,$loopmax) = @_;;
+ my ($queryid,$sleep,$loopmax) = @_;
if (($sleep eq '') || ($sleep !~ /^\d+\.?\d*$/)) {
$sleep = 0.2;
}
More information about the LON-CAPA-cvs
mailing list