--- loncom/interface/loncoursedata.pm 2003/09/30 15:35:56 1.94 +++ loncom/interface/loncoursedata.pm 2003/10/02 14:11:36 1.98 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: loncoursedata.pm,v 1.94 2003/09/30 15:35:56 matthew Exp $ +# $Id: loncoursedata.pm,v 1.98 2003/10/02 14:11:36 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1149,7 +1149,7 @@ sub update_full_student_data { # We can deal with 'timestamp' right away my @timestamp_storage = ($symb_id,$student_id, $transaction,$value); - my $store_command = 'INSERT INTO '.$fulldump_timestamp_table. + my $store_command = 'INSERT IGNORE INTO '.$fulldump_timestamp_table. " VALUES ('".join("','",@timestamp_storage)."');"; $dbh->do($store_command); if ($dbh->err()) { @@ -1213,7 +1213,7 @@ sub update_full_student_data { } ## ## Store the part data - my $store_command = 'INSERT INTO '.$fulldump_part_table. + my $store_command = 'INSERT IGNORE INTO '.$fulldump_part_table. ' VALUES '."\n"; my $store_rows = 0; while (my ($symb_id,$hash1) = each (%$partdata)) { @@ -1241,7 +1241,7 @@ sub update_full_student_data { } ## ## Store the response data - $store_command = 'INSERT INTO '.$fulldump_response_table. + $store_command = 'INSERT IGNORE INTO '.$fulldump_response_table. ' VALUES '."\n"; $store_rows = 0; while (my ($symb_id,$hash1) = each (%$respdata)) { @@ -1353,8 +1353,10 @@ sub update_student_data { my @Results = &store_student_data($sname,$sdom,$courseid,\%student_data); # # Set the students update time - &Apache::lonmysql::replace_row($studentdata_table, + if ($Results[0] eq 'okay') { + &Apache::lonmysql::replace_row($studentdata_table, [$student_id,$time_of_retrieval,undef,undef,undef]); + } # return @Results; } @@ -1379,10 +1381,10 @@ sub store_student_data { my $starttime = Time::HiRes::time; my $elapsed = 0; my $rows_stored; - my $store_parameters_command = 'INSERT INTO '.$parameters_table. + my $store_parameters_command = 'INSERT IGNORE INTO '.$parameters_table. ' VALUES '."\n"; my $num_parameters = 0; - my $store_performance_command = 'INSERT INTO '.$performance_table. + my $store_performance_command = 'INSERT IGNORE INTO '.$performance_table. ' VALUES '."\n"; return ('error',undef) if (! defined($dbh)); while (my ($current_symb,$param_hash) = each(%{$student_data})) { @@ -1678,6 +1680,33 @@ sub get_student_data_from_performance_ca $studentdata->{$symb}->{$base.'.awarddetail'} = $awarddetail; $studentdata->{$symb}->{'timestamp'} = $time if (defined($time) && $time ne ''); } + ## Get misc parameters + $request = 'SELECT c.symb,a.parameter,a.value '. + "FROM $student_table AS b ". + "LEFT JOIN $parameters_table AS a ON b.student_id=a.student_id ". + "LEFT JOIN $symb_table AS c ON c.symb_id = a.symb_id ". + "WHERE student='$student'"; + if (defined($symb) && $symb ne '') { + $request .= " AND c.symb=".$dbh->quote($symb); + } + $sth = $dbh->prepare($request); + $sth->execute(); + if ($sth->err()) { + &Apache::lonnet::logthis("Unable to execute MySQL request:"); + &Apache::lonnet::logthis("\n".$request."\n"); + &Apache::lonnet::logthis("error is:".$sth->errstr()); + if (defined($symb) && $symb ne '') { + $studentdata = $studentdata->{$symb}; + } + return $studentdata; + } + # + foreach my $row (@{$sth->fetchall_arrayref}) { + $rows_retrieved++; + my ($symb,$parameter,$value) = (@$row); + $studentdata->{$symb}->{$parameter} = $value; + } + # if (defined($symb) && $symb ne '') { $studentdata = $studentdata->{$symb}; }