--- loncom/interface/loncoursedata.pm 2003/10/07 15:30:09 1.102 +++ loncom/interface/loncoursedata.pm 2003/10/20 20:42:39 1.105 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: loncoursedata.pm,v 1.102 2003/10/07 15:30:09 matthew Exp $ +# $Id: loncoursedata.pm,v 1.105 2003/10/20 20:42:39 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1987,9 +1987,39 @@ sub execute_SQL_request { return (); } +sub get_student_data { + my ($students,$courseid) = @_; + $courseid = $ENV{'request.course.id'} if (! defined($courseid)); + &setup_table_names($courseid); + my $dbh = &Apache::lonmysql::get_dbh(); + return undef if (! defined($dbh)); + my $request = 'SELECT '. + 'student_id, student '. + 'FROM '.$student_table; + if (defined($students)) { + $request .= ' WHERE ('. + join(' OR ', map {'student_id='. + &get_student_id($_->{'username'}, + $_->{'domain'}) + } @$students + ).')'; + } + $request.= ' ORDER BY student_id'; + 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) { + return $dataset; + } +} + sub get_optionresponse_data { my ($students,$symb,$response,$courseid) = @_; - return if (! defined($symb) || + return undef if (! defined($symb) || ! defined($response)); $courseid = $ENV{'request.course.id'} if (! defined($courseid)); # @@ -2000,7 +2030,8 @@ sub get_optionresponse_data { my $dbh = &Apache::lonmysql::get_dbh(); return undef if (! defined($dbh)); my $request = 'SELECT '. - 'a.response_specific_value, a.submission, b.timestamp, c.tries '. + 'a.student_id, a.awarddetail, a.response_specific_value, '. + 'a.submission, b.timestamp, c.tries '. '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 '. @@ -2012,19 +2043,23 @@ sub get_optionresponse_data { 'a.symb_id='.$symb_id.' AND a.response_id='.$response_id; if (defined($students)) { $request .= ' AND ('. - join(' OR ', map {'student_id='. + join(' OR ', map {'a.student_id='. &get_student_id($_->{'username'}, $_->{'domain'}) } @$students ).')'; } $request .= ' ORDER BY b.timestamp'; - &Apache::lonnet::logthis("request =\n".$request); +# &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) { - return @$dataset; + return $dataset; } }