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

version 1.115, 2004/02/03 20:44:06 version 1.121, 2004/03/07 20:53:40
Line 182  sub get_sequence_assessment_data { Line 182  sub get_sequence_assessment_data {
             next;              next;
         }          }
         next if (! ref($curRes));          next if (! ref($curRes));
         next if (! $curRes->is_problem());# && !$curRes->randomout);          next if (! $curRes->is_problem() && $curRes->src() !~ /\.survey$/);
         # Okay, from here on out we only deal with assessments          # Okay, from here on out we only deal with assessments
         $title = $curRes->title();          $title = $curRes->title();
         $title =~ s/\:/\&\#058;/g;          $title =~ s/\:/\&\#058;/g;
Line 1235  sub update_full_student_data { Line 1235  sub update_full_student_data {
                     # However, there is one wrinkle: submissions which end in                      # However, there is one wrinkle: submissions which end in
                     # and odd number of '\' cause insert errors to occur.                        # and odd number of '\' cause insert errors to occur.  
                     # Best trap this somehow...                      # Best trap this somehow...
                     $value =~ s/\'/\\\'/g;                      $value = $dbh->quote($value);
                     my ($offensive_string) = ($value =~ /(\\+)$/);  
                     if (length($offensive_string) % 2) {  
                         $value =~ s/\\$/\\\\/;  
                     }  
                 }                  }
                 if ($field eq 'submissiongrading' ||                   if ($field eq 'submissiongrading' || 
                     $field eq 'molecule') {                      $field eq 'molecule') {
Line 2111  sub get_response_data { Line 2107  sub get_response_data {
     }      }
     my $dataset = $sth->fetchall_arrayref();      my $dataset = $sth->fetchall_arrayref();
     if (ref($dataset) eq 'ARRAY' && scalar(@$dataset)>0) {      if (ref($dataset) eq 'ARRAY' && scalar(@$dataset)>0) {
           # Clear the \'s from around the submission
           for (my $i =0;$i<scalar(@$dataset);$i++) {
               $dataset->[$i]->[3] =~ s/(\'$|^\')//g;
           }
         return $dataset;          return $dataset;
     }      }
 }  }
   
   
   sub RDs_awarddetail   { return 3; }
   sub RDs_submission    { return 2; }
   sub RDs_timestamp     { return 1; }
   sub RDs_tries         { return 0; }
   sub RDs_awarded       { return 4; }
   
   sub get_response_data_by_student {
       my ($student,$symb,$response,$courseid) = @_;
       return undef if (! defined($symb) || 
                        ! defined($response));
       $courseid = $ENV{'request.course.id'} if (! defined($courseid));
       #
       &setup_table_names($courseid);
       my $symb_id = &get_symb_id($symb);
       my $response_id = &get_part_id($response);
       #
       my $student_id = &get_student_id($student->{'username'},
                                        $student->{'domain'});
       #
       my $dbh = &Apache::lonmysql::get_dbh();
       return undef if (! defined($dbh));
       my $request = 'SELECT '.
           'c.tries, b.timestamp, a.submission, a.awarddetail, e.awarded '.
           'FROM '.$fulldump_response_table.' AS a '.
           'LEFT JOIN '.$fulldump_timestamp_table.' AS b '.
           'ON a.symb_id=b.symb_id AND a.student_id=b.student_id AND '.
           'a.transaction = b.transaction '.
           'LEFT JOIN '.$fulldump_part_table.' AS c '.
           'ON a.symb_id=c.symb_id AND a.student_id=c.student_id AND '.        
           'a.part_id=c.part_id AND a.transaction = c.transaction '.
           'LEFT JOIN '.$student_table.' AS d '.
           'ON a.student_id=d.student_id '.
           'LEFT JOIN '.$performance_table.' AS e '.
           'ON a.symb_id=e.symb_id AND a.part_id=e.part_id AND '.
           'a.student_id=e.student_id AND c.tries=e.tries '.
           'WHERE '.
           'a.symb_id='.$symb_id.' AND a.response_id='.$response_id.
           ' AND a.student_id='.$student_id.' ORDER BY b.timestamp';
       # &Apache::lonnet::logthis("request =\n".$request);
       my $sth = $dbh->prepare($request);
       $sth->execute();
       if ($dbh->err) {
           &Apache::lonnet::logthis('error = '.$dbh->errstr());
           return undef;
       }
       my $dataset = $sth->fetchall_arrayref();
       if (ref($dataset) eq 'ARRAY' && scalar(@$dataset)>0) {
           # Clear the \'s from around the submission
           for (my $i =0;$i<scalar(@$dataset);$i++) {
               $dataset->[$i]->[2] =~ s/(\'$|^\')//g;
           }
           return $dataset;
       }
       return undef; # error occurred
   }
   
 sub RT_student_id { return 0; }  sub RT_student_id { return 0; }
 sub RT_awarded    { return 1; }  sub RT_awarded    { return 1; }
 sub RT_tries      { return 2; }  sub RT_tries      { return 2; }
Line 2168  sub get_response_time_data { Line 2225  sub get_response_time_data {
   
 =pod  =pod
   
 =item &get_student_scores($Students,$Symbs,$enrollment,$courseid)  =item &get_student_scores($Sections,$Symbs,$enrollment,$courseid)
   
 =cut  =cut
   
 ################################################  ################################################
 ################################################  ################################################
 sub get_student_scores {  sub get_student_scores {
     my ($Sections,$Symbs,$enrollment,$courseid) = @_;      my ($Sections,$Symbs,$enrollment,$courseid,$starttime,$endtime) = @_;
     $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();
Line 2186  sub get_student_scores { Line 2243  sub get_student_scores {
     if (defined($Symbs)  && @$Symbs) {      if (defined($Symbs)  && @$Symbs) {
         $symb_requirements = '('.          $symb_requirements = '('.
             join(' OR ', map{ "(a.symb_id='".&get_symb_id($_->{'symb'}).              join(' OR ', map{ "(a.symb_id='".&get_symb_id($_->{'symb'}).
                                   "' AND a.part_id='".&get_part_id($_->{'part'}).                                "' AND a.part_id='".&get_part_id($_->{'part'}).
                                   "')"                                "')"
                               } @$Symbs).')';                                } @$Symbs).')';
     }      }
     #      #
Line 2202  sub get_student_scores { Line 2259  sub get_student_scores {
     if (defined($enrollment) && $enrollment ne 'Any') {      if (defined($enrollment) && $enrollment ne 'Any') {
         $enrollment_requirements = "b.status='".$enrollment."'";          $enrollment_requirements = "b.status='".$enrollment."'";
     }      }
       #
       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 $request = 'CREATE TEMPORARY TABLE IF NOT EXISTS '.$tmptable.      my $request = 'CREATE TEMPORARY TABLE IF NOT EXISTS '.$tmptable.
Line 2224  sub get_student_scores { Line 2291  sub get_student_scores {
     if (defined($enrollment_requirements)) {      if (defined($enrollment_requirements)) {
         $request .= $enrollment_requirements.' AND ';          $request .= $enrollment_requirements.' AND ';
     }      }
     $request =~ s/ AND $//;      if (defined($time_requirements)) {
           $request .= $time_requirements.' AND ';
       }
       $request =~ s/ AND $//; # Strip of the trailing ' AND '.
     $request .= ' GROUP BY a.student_id';      $request .= ' GROUP BY a.student_id';
 #    &Apache::lonnet::logthis("request = \n".$request);  #    &Apache::lonnet::logthis("request = \n".$request);
     my $sth = $dbh->prepare($request);      my $sth = $dbh->prepare($request);

Removed from v.1.115  
changed lines
  Added in v.1.121


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