--- loncom/interface/loncoursedata.pm 2005/03/03 18:57:36 1.144 +++ loncom/interface/loncoursedata.pm 2005/03/07 20:12:08 1.145 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: loncoursedata.pm,v 1.144 2005/03/03 18:57:36 matthew Exp $ +# $Id: loncoursedata.pm,v 1.145 2005/03/07 20:12:08 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -2526,12 +2526,15 @@ sub get_response_time_data { ################################################ ################################################ sub get_student_scores { - my ($Sections,$Symbs,$enrollment,$courseid,$starttime,$endtime) = @_; + my ($sections,$Symbs,$enrollment,$courseid,$starttime,$endtime) = @_; $courseid = $ENV{'request.course.id'} if (! defined($courseid)); &setup_table_names($courseid); my $dbh = &Apache::lonmysql::get_dbh(); return (undef) if (! defined($dbh)); my $tmptable = $courseid.'_temp_'.time; + my $request = 'DROP TABLE IF EXISTS '.$tmptable; +# &Apache::lonnet::logthis('request = '.$/.$request); + $dbh->do($request); # my $symb_requirements; if (defined($Symbs) && @$Symbs) { @@ -2542,34 +2545,17 @@ sub get_student_scores { } @$Symbs).')'; } # - my $student_requirements; - if ( (defined($Sections) && $Sections->[0] ne 'all')) { - $student_requirements = '('. - join(' OR ', map { "b.section='".$_."'" } @$Sections - ).')'; - } - # - my $enrollment_requirements=undef; - if (defined($enrollment) && $enrollment ne 'Any') { - $enrollment_requirements = "b.status='".$enrollment."'"; - } + my ($student_requirements,$enrollment_requirements) = + &limit_by_section_and_status($sections,$enrollment,'b'); # - my $time_requirements = undef; - if (defined($starttime)) { - $time_requirements .= "a.timestamp>='".$starttime."'"; - if (defined($endtime)) { - $time_requirements .= " AND a.timestamp<='".$endtime."'"; - } - } elsif (defined($endtime)) { - $time_requirements .= "a.timestamp<='".$endtime."'"; - } - ## + my $time_requirements = &limit_by_start_end_time($starttime,$endtime,'a'); ## - my $request = 'CREATE TEMPORARY TABLE IF NOT EXISTS '.$tmptable. - ' SELECT a.student_id,SUM(a.awarded) AS score FROM '. + $request = 'CREATE TEMPORARY TABLE IF NOT EXISTS '.$tmptable. + ' SELECT a.student_id,SUM(a.awarded*c.weight) AS score FROM '. $performance_table.' AS a '; + $request .= "LEFT JOIN ".$weight_table.' AS c ON a.symb_id=c.symb_id AND a.part_id=c.part_id '; if (defined($student_requirements) || defined($enrollment_requirements)) { - $request .= ' NATURAL LEFT JOIN '.$student_table.' AS b '; + $request .= ' LEFT JOIN '.$student_table.' AS b ON a.student_id=b.student_id'; } if (defined($symb_requirements) || defined($student_requirements) ||