--- loncom/interface/loncoursedata.pm 2002/08/01 20:49:06 1.10 +++ loncom/interface/loncoursedata.pm 2002/08/05 14:16:19 1.12 @@ -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.12 2002/08/05 14:16:19 stredwic Exp $ # # Copyright Michigan State University Board of Trustees # @@ -182,7 +182,7 @@ database. =cut sub DownloadCourseInformation { - my ($namedata,$courseID,$lastDownloadTime)=@_; + my ($namedata,$courseID,$lastDownloadTime,$WhatIWant)=@_; my %courseData; my ($name,$domain) = split(/\:/,$namedata); @@ -197,7 +197,10 @@ sub DownloadCourseInformation { } # Download course data - %courseData=&Apache::lonnet::dump($courseID, $domain, $name); + if(!defined($WhatIWant)) { + $WhatIWant = '.'; + } + %courseData=&Apache::lonnet::dump($courseID, $domain, $name, $WhatIWant); $courseData{'UpToDate'} = 'false'; $courseData{'lastDownloadTime'}=time; return \%courseData; @@ -246,7 +249,7 @@ smoothly. =cut sub ProcessTopResourceMap { - my ($cache,$c,$r)=@_; + my ($cache,$c)=@_; my %hash; my $fn=$ENV{'request.course.fn'}; if(-e "$fn.db") { @@ -278,13 +281,21 @@ sub ProcessTopResourceMap { $currentSequence=-1; my $topLevelSequenceNumber = $currentSequence; + my $problemCount=0; + my $problemCount2=0; + my %sequenceRecord; + my $sequenceCount=0; + my $sequenceCount2=0; 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})) { + $sequenceCount++; + $sequenceRecord{$currentResourceID}++; push(@sequences, $currentSequence); push(@currentResource, $currentResourceID); push(@finishResource, $lastResourceID); @@ -314,15 +325,23 @@ sub ProcessTopResourceMap { last; } } + next; } # Handle gradable resources: exams, problems, etc $currentResourceID=~/(\d+)\.(\d+)/; my $partA=$1; my $partB=$2; + if($hash{'src_'.$currentResourceID}=~/\.problem$/) { + $problemCount++; + } if($hash{'src_'.$currentResourceID}=~ /\.(problem|exam|quiz|assess|survey|form)$/ && - $partA eq $currentSequence) { + $partA eq $currentSequence && + !defined($sequenceRecord{$currentSequence.':'. + $currentResourceID})) { + $problemCount2++; + $sequenceRecord{$currentSequence.':'.$currentResourceID}++; my $Problem = &Apache::lonnet::symbclean( &Apache::lonnet::declutter($hash{'map_id_'.$partA}). '___'.$partB.'___'. @@ -397,6 +416,7 @@ sub ProcessTopResourceMap { $lastResourceID=pop(@finishResource); if(defined($cache->{$currentSequence.':problems'})) { + $sequenceCount2++; # Capture sequence information here $cache->{$currentSequence.':title'}= $hash{'title_'.$currentResourceID}; @@ -437,23 +457,34 @@ sub ProcessTopResourceMap { 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 $currentResourceID=pop(@currentResource); } + $cache->{'jasoncount'}=$problemCount; + $cache->{'jasoncount2'}=$problemCount2; + $cache->{'jasonseq'}=$sequenceCount; + $cache->{'jasonseq2'}=$sequenceCount2; unless (untie(%hash)) { &Apache::lonnet::logthis("WARNING: ". "Could not untie coursemap $fn (browse)".