From: Gavin L. v. a. <we...@ma...> - 2006-01-06 17:52:13
|
Log Message: ----------- Gateway bugfix: correct (or work around) missing score/values. Modified Files: -------------- webwork2/lib/WeBWorK/ContentGenerator/Instructor: Scoring.pm Revision Data ------------- Index: Scoring.pm =================================================================== RCS file: /webwork/cvs/system/webwork2/lib/WeBWorK/ContentGenerator/Instructor/Scoring.pm,v retrieving revision 1.53 retrieving revision 1.54 diff -Llib/WeBWorK/ContentGenerator/Instructor/Scoring.pm -Llib/WeBWorK/ContentGenerator/Instructor/Scoring.pm -u -r1.53 -r1.54 --- lib/WeBWorK/ContentGenerator/Instructor/Scoring.pm +++ lib/WeBWorK/ContentGenerator/Instructor/Scoring.pm @@ -388,25 +388,35 @@ } else { # versioned sets; get the problems for the best version foreach my $userID (@sortedUserIDs) { - my %CurrUserProblems; + my $CurrUserProblems = {}; my $numVersions = $db->getUserSetVersionNumber( $userID, $setID ); my $bestScore = -1; - for ( my $i=1; $i<=$numVersions; $i++ ) { + if ( $numVersions ) { + for ( my $i=1; $i<=$numVersions; $i++ ) { my %versionUserProblems = map { $_->problem_id => $_ } $db->getAllUserProblems( $userID, "$setID,v$i" ); my $score = 0; foreach ( values ( %versionUserProblems ) ) { my $status = $_->status || 0; my $value = $_->value || 1; + # some of these are coming in null; I'm not + # why, or if this should be necessary + $_->status($status); + $_->value($value); $score += $status*$value; } if ( $score > $bestScore ) { - %CurrUserProblems = %versionUserProblems; + $CurrUserProblems = \%versionUserProblems; $bestScore = $score; } + } + } else { + my %cp = map { $_->problem_id => $_ } + $db->getAllMergedUserProblems($userID, $setID); + $CurrUserProblems = \%cp; } - $UserProblems{$userID} = \%CurrUserProblems; + $UserProblems{$userID} = { %{$CurrUserProblems} }; } } debug("done pre-fetching user problems for set $setID"); |