[LON-CAPA-cvs] cvs: loncom /interface loncoursedata.pm
stredwic
lon-capa-cvs@mail.lon-capa.org
Sat, 03 Aug 2002 18:47:25 -0000
stredwic Sat Aug 3 14:47:25 2002 EDT
Modified files:
/loncom/interface loncoursedata.pm
Log:
Was not handling branches and circle resource paths correctly. Adding
in checks for already visited sequences and problems seemed to fix it.
I get all the sequences in student assessment for BS111 now.
Index: loncom/interface/loncoursedata.pm
diff -u loncom/interface/loncoursedata.pm:1.10 loncom/interface/loncoursedata.pm:1.11
--- loncom/interface/loncoursedata.pm:1.10 Thu Aug 1 16:49:06 2002
+++ loncom/interface/loncoursedata.pm Sat Aug 3 14:47:24 2002
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# (Publication Handler
#
-# $Id: loncoursedata.pm,v 1.10 2002/08/01 20:49:06 stredwic Exp $
+# $Id: loncoursedata.pm,v 1.11 2002/08/03 18:47:24 stredwic Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -197,6 +197,12 @@
}
# Download course data
+ my $WhatIWant = '(version:(\w|\/|\.)+?$|';
+ $WhatIWant .= '\d+?:(\w|\/|\.)+?:(resource\.\d+\.';
+ $WhatIWant .= '(solved|tries|previous|awarded|(\d+\.submission))';
+ $WhatIWant .= '|timestamp)';
+ $WhatIWant .= ')';
+# %courseData=&Apache::lonnet::dump($courseID, $domain, $name, $WhatIWant);
%courseData=&Apache::lonnet::dump($courseID, $domain, $name);
$courseData{'UpToDate'} = 'false';
$courseData{'lastDownloadTime'}=time;
@@ -246,7 +252,7 @@
=cut
sub ProcessTopResourceMap {
- my ($cache,$c,$r)=@_;
+ my ($cache,$c)=@_;
my %hash;
my $fn=$ENV{'request.course.fn'};
if(-e "$fn.db") {
@@ -278,13 +284,16 @@
$currentSequence=-1;
my $topLevelSequenceNumber = $currentSequence;
+ my %sequenceRecord;
while(1) {
if($c->aborted()) {
last;
}
# HANDLE NEW SEQUENCE!
#if page || sequence
- if(defined($hash{'map_pc_'.$hash{'src_'.$currentResourceID}})) {
+ if(defined($hash{'map_pc_'.$hash{'src_'.$currentResourceID}}) &&
+ !defined($sequenceRecord{$currentResourceID})) {
+ $sequenceRecord{$currentResourceID}++;
push(@sequences, $currentSequence);
push(@currentResource, $currentResourceID);
push(@finishResource, $lastResourceID);
@@ -322,7 +331,10 @@
my $partB=$2;
if($hash{'src_'.$currentResourceID}=~
/\.(problem|exam|quiz|assess|survey|form)$/ &&
- $partA eq $currentSequence) {
+ $partA eq $currentSequence &&
+ !defined($sequenceRecord{$currentSequence.':'.
+ $currentResourceID})) {
+ $sequenceRecord{$currentSequence.':'.$currentResourceID}++;
my $Problem = &Apache::lonnet::symbclean(
&Apache::lonnet::declutter($hash{'map_id_'.$partA}).
'___'.$partB.'___'.
@@ -437,17 +449,24 @@
if($currentSequence eq $topLevelSequenceNumber) {
last;
}
- }
+ }
# MOVE!!!
# move to next resource
unless(defined($hash{'to_'.$currentResourceID})) {
# big problem, need to handle. Next is probably wrong
+ my $errorMessage = 'Big problem in ';
+ $errorMessage .= 'loncoursedata::ProcessTopLevelMap.';
+ $errorMessage .= ' bighash to_$currentResourceID not defined!';
+ &Apache::lonnet::logthis($errorMessage);
last;
}
my @nextResources=();
foreach (split(/\,/,$hash{'to_'.$currentResourceID})) {
- push(@nextResources, $hash{'goesto_'.$_});
+ if(!defined($sequenceRecord{$currentSequence.':'.
+ $hash{'goesto_'.$_}})) {
+ push(@nextResources, $hash{'goesto_'.$_});
+ }
}
push(@currentResource, @nextResources);
# Set the next resource to be processed