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

version 1.113, 2004/02/02 19:50:33 version 1.115, 2004/02/03 20:44:06
Line 1919  able to answer it correctly. Line 1919  able to answer it correctly.
 ################################################  ################################################
 ################################################  ################################################
 sub get_problem_statistics {  sub get_problem_statistics {
     my ($students,$symb,$part,$courseid) = @_;      my ($Sections,$status,$symb,$part,$courseid) = @_;
     return if (! defined($symb) || ! defined($part));      return if (! defined($symb) || ! defined($part));
     $courseid = $ENV{'request.course.id'} if (! defined($courseid));      $courseid = $ENV{'request.course.id'} if (! defined($courseid));
     #      #
Line 1933  sub get_problem_statistics { Line 1933  sub get_problem_statistics {
     #      #
     $dbh->do('DROP TABLE '.$stats_table);  # May return an error      $dbh->do('DROP TABLE '.$stats_table);  # May return an error
     my $request =       my $request = 
         'CREATE TEMPORARY TABLE '.$stats_table.          'CREATE TEMPORARY TABLE '.$stats_table.' '.
             ' SELECT student_id,solved,award,awarded,tries FROM '.$performance_table.          'SELECT a.student_id,a.solved,a.award,a.awarded,a.tries '.
                 ' WHERE symb_id='.$symb_id.' AND part_id='.$part_id;          'FROM '.$performance_table.' AS a ';
     if (defined($students)) {      if ((defined($Sections) && lc($Sections->[0]) ne 'all') || 
           (defined($status)   && lc($status)        ne 'any')) {
           $request .= 'NATURAL LEFT JOIN '.$student_table.' AS b ';
       }
       $request .= ' WHERE a.symb_id='.$symb_id.' AND a.part_id='.$part_id;
       if (defined($Sections) && lc($Sections->[0]) ne 'all') {
         $request .= ' AND ('.          $request .= ' AND ('.
             join(' OR ', map {'student_id='.              join(' OR ', map { "b.section='".$_."'" } @$Sections
                                   &get_student_id($_->{'username'},  
                                                   $_->{'domain'})  
                                   } @$students  
                  ).')';                   ).')';
     }      }
 #    &Apache::lonnet::logthis($request);      if (defined($status) && lc($status) ne 'any') {
           $request .= " AND b.status='".$status."'";
       }
     $dbh->do($request);      $dbh->do($request);
 #    &Apache::lonnet::logthis('request = '.$/.$request);  #    &Apache::lonnet::logthis('request = '.$/.$request);
     $request = 'SELECT COUNT(*),SUM(tries),MAX(tries),AVG(tries),STD(tries) '.      $request = 'SELECT COUNT(*),SUM(tries),MAX(tries),AVG(tries),STD(tries) '.
Line 2164  sub get_response_time_data { Line 2168  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.115


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