--- loncom/interface/loncoursedata.pm 2002/08/29 03:04:10 1.25 +++ loncom/interface/loncoursedata.pm 2002/08/30 17:11:43 1.26 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # (Publication Handler # -# $Id: loncoursedata.pm,v 1.25 2002/08/29 03:04:10 stredwic Exp $ +# $Id: loncoursedata.pm,v 1.26 2002/08/30 17:11:43 stredwic Exp $ # # Copyright Michigan State University Board of Trustees # @@ -693,11 +693,22 @@ sub ProcessStudentData { return; } + if(defined($cache->{$name.':keys'})) { + foreach (split(':::', $cache->{$name.':keys'})) { + delete $cache->{$name.':'.$_}; + } + } + + my %courseKeys; # user name:domain was prepended earlier in DownloadCourseInformation foreach (keys %$courseData) { + my $currentKey =~ s/^$name//; + $courseKeys{$currentKey}++; $cache->{$_}=$courseData->{$_}; } + $cache->{$name.':keys'} = join(':::', keys(%courseKeys)); + return; } @@ -753,6 +764,13 @@ sub ExtractStudentData { return; } + my %allkeys; + if(defined($output->{$name.':keys'})) { + foreach (split(':::', $output->{$name.':keys'})) { + delete $output->{$name.':'.$_}; + } + } + my ($username,$domain)=split(':',$name); my $Version; @@ -775,9 +793,13 @@ sub ExtractStudentData { $output->{$name.':'.$problemID.':'.$part.':tries'} = 0; $output->{$name.':'.$problemID.':'.$part.':awarded'} = 0; $output->{$name.':'.$problemID.':'.$part.':code'} = ' '; + $allkeys{$name.':'.$problemID.':'.$part.':tries'}++; + $allkeys{$name.':'.$problemID.':'.$part.':awarded'}++; + $allkeys{$name.':'.$problemID.':'.$part.':code'}++; $totalProblems++; } $output->{$name.':'.$problemID.':NoVersion'} = 'true'; + $allkeys{$name.':'.$problemID.':NoVersion'}++; next; } @@ -860,6 +882,7 @@ sub ExtractStudentData { ':parts'})) { $output->{$name.':'.$problemID.':'.$part.':wrong'} = $partData{$part.':tries'}; + $allkeys{$name.':'.$problemID.':'.$part.':wrong'}++; if($partData{$part.':code'} eq '*') { $output->{$name.':'.$problemID.':'.$part.':wrong'}--; @@ -875,14 +898,22 @@ sub ExtractStudentData { $partData{$part.':code'}; $output->{$name.':'.$problemID.':'.$part.':awarded'} = $partData{$part.':awarded'}; + $allkeys{$name.':'.$problemID.':'.$part.':tries'}++; + $allkeys{$name.':'.$problemID.':'.$part.':code'}++; + $allkeys{$name.':'.$problemID.':'.$part.':awarded'}++; + $totalAwarded += $partData{$part.':awarded'}; $output->{$name.':'.$problemID.':'.$part.':timestamp'} = $partData{$part.':timestamp'}; + $allkeys{$name.':'.$problemID.':'.$part.':timestamp'}++; + foreach my $response (split(':', $data->{$sequence.':'. $problemID.':'. $part.':responseIDs'})) { $output->{$name.':'.$problemID.':'.$part.':'.$response. ':submission'}=join(':::',@submissions); + $allkeys{$name.':'.$problemID.':'.$part.':'.$response. + ':submission'}++; } if($partData{$part.':code'} ne 'x') { @@ -892,6 +923,7 @@ sub ExtractStudentData { } $output->{$name.':'.$sequence.':problemsCorrect'} = $problemsCorrect; + $allkeys{$name.':'.$sequence.':problemsCorrect'}++; $problemsSolved += $problemsCorrect; $problemsCorrect=0; } @@ -899,6 +931,11 @@ sub ExtractStudentData { $output->{$name.':problemsSolved'} = $problemsSolved; $output->{$name.':totalProblems'} = $totalProblems; $output->{$name.':totalAwarded'} = $totalAwarded; + $allkeys{$name.':problemsSolved'}++; + $allkeys{$name.':totalProblems'}++; + $allkeys{$name.':totalAwarded'}++; + + $output->{$name.':keys'} = join(':::', keys(%allkeys)); return; }