--- loncom/interface/loncoursedata.pm 2003/10/02 17:07:41 1.99 +++ loncom/interface/loncoursedata.pm 2003/10/02 20:48:57 1.100 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: loncoursedata.pm,v 1.99 2003/10/02 17:07:41 matthew Exp $ +# $Id: loncoursedata.pm,v 1.100 2003/10/02 20:48:57 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -711,9 +711,6 @@ sub init_dbs { { name => 'transaction', type => 'MEDIUMINT UNSIGNED', restrictions => 'NOT NULL' }, - { name => 'tries', - type => 'SMALLINT UNSIGNED', - restrictions => 'NOT NULL' }, { name => 'awarddetail', type => 'TINYTEXT' }, # { name => 'message', @@ -1215,8 +1212,7 @@ sub update_full_student_data { } # deal with response specific data if (defined($resp_id) && - $field =~ /^(tries| - awarddetail| + $field =~ /^(awarddetail| submission| submissiongrading| molecule)$/x) { @@ -1252,7 +1248,6 @@ sub update_full_student_data { $store_command .= "('".join("','",$symb_id,$part_id, $student_id, $transaction, - $data->{'tries'}, $data->{'award'}, $data->{'awarded'}, $data->{'previous'})."'),"; @@ -1884,6 +1879,7 @@ sub get_problem_statistics { return if (! defined($symb) || ! defined($part)); $courseid = $ENV{'request.course.id'} if (! defined($courseid)); # + &setup_table_names($courseid); my $symb_id = &get_symb_id($symb); my $part_id = &get_part_id($part); my $stats_table = $courseid.'_problem_stats'; @@ -1990,6 +1986,46 @@ sub execute_SQL_request { return (); } +sub get_optionresponse_data { + my ($students,$symb,$response,$courseid) = @_; + return 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 $dbh = &Apache::lonmysql::get_dbh(); + return undef if (! defined($dbh)); + my $request = 'SELECT '. + '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 '. + '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 '. + 'WHERE '. + 'a.symb_id='.$symb_id.' AND a.response_id='.$response_id; + if (defined($students)) { + $request .= ' AND ('. + join(' OR ', map {'student_id='. + &get_student_id($_->{'username'}, + $_->{'domain'}) + } @$students + ).')'; + } + $request .= ' ORDER BY b.timestamp'; + &Apache::lonnet::logthis("request =\n".$request); + my $sth = $dbh->prepare($request); + $sth->execute(); + my $dataset = $sth->fetchall_arrayref(); + if (ref($dataset) eq 'ARRAY' && scalar(@$dataset)>0) { + return @$dataset; + } +} ################################################ ################################################