Diff for /loncom/interface/loncoursedata.pm between versions 1.113 and 1.114

version 1.113, 2004/02/02 19:50:33 version 1.114, 2004/02/02 21:45:12
Line 2164  sub get_response_time_data { Line 2164  sub get_response_time_data {
   
 =pod  =pod
   
 =item &get_student_scores($Students,$Symbs,$courseid)  =item &get_student_scores($Students,$Symbs,$enrollment,$courseid)
   
 =cut  =cut
   
 ################################################  ################################################
 ################################################  ################################################
 sub get_student_scores {  sub get_student_scores {
     my ($Students,$Symbs,$courseid) = @_;      my ($Sections,$Symbs,$enrollment,$courseid) = @_;
     $courseid = $ENV{'request.course.id'} if (! defined($courseid));      $courseid = $ENV{'request.course.id'} if (! defined($courseid));
     &setup_table_names($courseid);      &setup_table_names($courseid);
     my $dbh = &Apache::lonmysql::get_dbh();      my $dbh = &Apache::lonmysql::get_dbh();
     return (undef) if (! defined($dbh));      return (undef) if (! defined($dbh));
     my $tmptable = $courseid.'_temp_'.time;      my $tmptable = $courseid.'_temp_'.time;
     my ($symb_requirements,$student_requirements);      #
       my $symb_requirements;
     if (defined($Symbs)  && @$Symbs) {      if (defined($Symbs)  && @$Symbs) {
         $symb_requirements = '('.          $symb_requirements = '('.
             join(' OR ', map{ "(symb_id='".&get_symb_id($_->{'symb'}).              join(' OR ', map{ "(a.symb_id='".&get_symb_id($_->{'symb'}).
                                   "' AND part_id='".&get_part_id($_->{'part'}).                                    "' AND a.part_id='".&get_part_id($_->{'part'}).
                                   "')"                                    "')"
                               } @$Symbs).')';                                } @$Symbs).')';
     }      }
     if (defined($Students)) {      #
       my $student_requirements;
       if ( (defined($Sections) && $Sections->[0] ne 'all')) {
         $student_requirements = '('.          $student_requirements = '('.
             join(' OR ', map {'student_id='.              join(' OR ', map { "b.section='".$_."'" } @$Sections
                                   &get_student_id($_->{'username'},  
                                                   $_->{'domain'})  
                               } @$Students  
                  ).')';                   ).')';
     }      }
       #
       my $enrollment_requirements=undef;
       if (defined($enrollment) && $enrollment ne 'Any') {
           $enrollment_requirements = "b.status='".$enrollment."'";
       }
       ##
       ##
     my $request = 'CREATE TEMPORARY TABLE IF NOT EXISTS '.$tmptable.      my $request = 'CREATE TEMPORARY TABLE IF NOT EXISTS '.$tmptable.
         ' SELECT student_id,SUM(awarded) AS score FROM '.$performance_table;          ' SELECT a.student_id,SUM(a.awarded) AS score FROM '.
     if (defined($symb_requirements) || defined($student_requirements)) {          $performance_table.' AS a ';
       if (defined($student_requirements) || defined($enrollment_requirements)) {
           $request .= ' NATURAL LEFT JOIN '.$student_table.' AS b ';
       }
       if (defined($symb_requirements)      || 
           defined($student_requirements)   ||
           defined($enrollment_requirements) ) {
         $request .= ' WHERE ';          $request .= ' WHERE ';
         if (defined($symb_requirements)) {  
             $request .= $symb_requirements;  
             if (defined($student_requirements)) {  
                 $request .= ' AND '.$student_requirements;  
             }  
         } elsif (defined($student_requirements)) {  
             $request .= $student_requirements;  
         }  
     }      }
     $request .= ' GROUP BY student_id';      if (defined($symb_requirements)) {
     &Apache::lonnet::logthis("request = \n".$request);          $request .= $symb_requirements.' AND ';
       }
       if (defined($student_requirements)) {
           $request .= $student_requirements.' AND ';
       }
       if (defined($enrollment_requirements)) {
           $request .= $enrollment_requirements.' AND ';
       }
       $request =~ s/ AND $//;
       $request .= ' GROUP BY a.student_id';
   #    &Apache::lonnet::logthis("request = \n".$request);
     my $sth = $dbh->prepare($request);      my $sth = $dbh->prepare($request);
     $sth->execute();      $sth->execute();
     if ($dbh->err) {      if ($dbh->err) {

Removed from v.1.113  
changed lines
  Added in v.1.114


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>