--- loncom/interface/loncoursedata.pm 2002/08/13 00:37:18 1.13 +++ loncom/interface/loncoursedata.pm 2002/08/14 21:51:51 1.17 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # (Publication Handler # -# $Id: loncoursedata.pm,v 1.13 2002/08/13 00:37:18 stredwic Exp $ +# $Id: loncoursedata.pm,v 1.17 2002/08/14 21:51:51 stredwic Exp $ # # Copyright Michigan State University Board of Trustees # @@ -396,11 +396,12 @@ sub ProcessTopResourceMap { $beenHere{'o:'.$partId.$currentResourceID}++; if(defined($cache->{'OptionResponses'})) { $cache->{'OptionResponses'}.= ':::'. - $currentResourceID.':'. + $currentSequence.':'.$currentResourceID.':'. $partId.':'.$responseId; } else { - $cache->{'OptionResponses'}= $currentResourceID. - ':'.$partId.':'.$responseId; + $cache->{'OptionResponses'}= $currentSequence.':'. + $currentResourceID.':'. + $partId.':'.$responseId; } } } @@ -680,6 +681,7 @@ sub ExtractStudentData { my $totalProblems = 0; my $problemsSolved = 0; my $numberOfParts = 0; + my $totalAwarded = 0; foreach my $sequence (split(':', $data->{'orderedSequences'})) { foreach my $problemID (split(':', $data->{$sequence.':problems'})) { my $problem = $data->{$problemID.':problem'}; @@ -691,6 +693,9 @@ sub ExtractStudentData { foreach my $part (split(/\:/,$data->{$sequence.':'. $problemID. ':parts'})) { + $output->{$name.':'.$problemID.':'.$part.':tries'} = 0; + $output->{$name.':'.$problemID.':'.$part.':awarded'} = 0; + $output->{$name.':'.$problemID.':'.$part.':code'} = ' '; $totalProblems++; } $output->{$name.':'.$problemID.':NoVersion'} = 'true'; @@ -791,6 +796,7 @@ sub ExtractStudentData { $partData{$part.':code'}; $output->{$name.':'.$problemID.':'.$part.':awarded'} = $partData{$part.':awarded'}; + $totalAwarded += $partData{$part.':awarded'}; $output->{$name.':'.$problemID.':'.$part.':timestamp'} = $partData{$part.':timestamp'}; foreach my $response (split(':', $data->{$sequence.':'. @@ -813,6 +819,7 @@ sub ExtractStudentData { $output->{$name.':problemsSolved'} = $problemsSolved; $output->{$name.':totalProblems'} = $totalProblems; + $output->{$name.':totalAwarded'} = $totalAwarded; return; } @@ -1016,11 +1023,14 @@ sub DownloadStudentCourseData { if($status eq 'true') { &Apache::lonhtmlcommon::Create_PrgWin($r, $title, $heading); } - my $count=1; + + my $displayString; + my $count=0; foreach (@$students) { if($c->aborted()) { return 'Aborted'; } if($status eq 'true') { + $count++; my $displayString = $count.'/'.$studentCount.': '.$_; &Apache::lonhtmlcommon::Update_PrgWin($displayString, $r); } @@ -1055,7 +1065,6 @@ sub DownloadStudentCourseData { next; } } - $count++; } if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r); } @@ -1087,7 +1096,8 @@ sub DownloadStudentCourseDataSeparate { if($status eq 'true') { &Apache::lonhtmlcommon::Create_PrgWin($r, $title, $heading); } - my $count=1; + my $count=0; + my $displayString=''; foreach (@$students) { if($c->aborted()) { untie(%downloadData); @@ -1095,7 +1105,8 @@ sub DownloadStudentCourseDataSeparate { } if($status eq 'true') { - my $displayString = $count.'/'.$studentCount.': '.$_; + $count++; + $displayString = $count.'/'.$studentCount.': '.$_; &Apache::lonhtmlcommon::Update_PrgWin($displayString, $r); } @@ -1130,10 +1141,10 @@ sub DownloadStudentCourseDataSeparate { $downloadData{$_.':error'} = 'No course data for '.$_; } } - $count++; } if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r); } + untie(%downloadData); return &CheckForResidualDownload($cacheDB, 'true', 'true', $courseID, $r, $c); } @@ -1143,14 +1154,17 @@ sub CheckForResidualDownload { my $residualFile = '/home/httpd/perl/tmp/'.$courseID.'DownloadFile.db'; if(!-e $residualFile) { - return; + return 'File does not exist'; } my %downloadData; my %cache; - unless(tie(%downloadData,'GDBM_File',$residualFile,&GDBM_READER(),0640) && - tie(%cache,'GDBM_File',$cacheDB,&GDBM_WRCREAT(),0640)) { - return; + unless(tie(%downloadData,'GDBM_File',$residualFile,&GDBM_READER(),0640)) { + return 'Can not tie database for check for residual download: tempDB'; + } + unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_WRCREAT(),0640)) { + untie(%downloadData); + return 'Can not tie database for check for residual download: cacheDB'; } my @dataKeys=keys(%downloadData);