--- loncom/metadata_database/LONCAPA/lonmetadata.pm 2007/05/12 23:03:30 1.20 +++ loncom/metadata_database/LONCAPA/lonmetadata.pm 2007/05/12 23:24:56 1.21 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: lonmetadata.pm,v 1.20 2007/05/12 23:03:30 albertel Exp $ +# $Id: lonmetadata.pm,v 1.21 2007/05/12 23:24:56 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -795,23 +795,17 @@ sub process_dynamic_metadata { # Get the statistical data - Use a weighted average foreach my $type (qw/avetries difficulty disc/) { my $studentcount; + my %course_counted; my $sum; my @Values; my @Students; # - # Old data - foreach my $coursedata (values(%{$resdata->{'statistics'}}), - values(%{$resdata->{'stats'}})) { - if (ref($coursedata) eq 'HASH' && exists($coursedata->{$type})) { - $studentcount += $coursedata->{'stdno'}; - $sum += ($coursedata->{$type}*$coursedata->{'stdno'}); - push(@Values,$coursedata->{$type}); - push(@Students,$coursedata->{'stdno'}); - } - } + # New data if (exists($resdata->{'stats'})) { foreach my $identifier (sort(keys(%{$resdata->{'stats'}}))) { my $coursedata = $resdata->{'stats'}->{$identifier}; + next if (lc($coursedata->{$type}) eq 'nan'); + $course_counted{$coursedata->{'course'}}++; $studentcount += $coursedata->{'stdno'}; $sum += $coursedata->{$type}*$coursedata->{'stdno'}; push(@Values,$coursedata->{$type}); @@ -819,7 +813,18 @@ sub process_dynamic_metadata { } } # - # New data + # Old data + foreach my $course (keys(%{$resdata->{'statistics'}})) { + next if (exists($course_counted{$course})); + my $coursedata = $resdata->{'statistics'}{$course}; + if (ref($coursedata) eq 'HASH' && exists($coursedata->{$type})) { + next if (lc($coursedata->{$type}) eq 'nan'); + $studentcount += $coursedata->{'stdno'}; + $sum += ($coursedata->{$type}*$coursedata->{'stdno'}); + push(@Values,$coursedata->{$type}); + push(@Students,$coursedata->{'stdno'}); + } + } if (defined($studentcount) && $studentcount>0) { $data{$type} = $sum/$studentcount; $data{$type.'_list'} = join(',',@Values);