--- loncom/interface/loncoursedata.pm 2004/06/04 17:46:10 1.134 +++ loncom/interface/loncoursedata.pm 2004/07/22 15:55:57 1.138 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: loncoursedata.pm,v 1.134 2004/06/04 17:46:10 matthew Exp $ +# $Id: loncoursedata.pm,v 1.138 2004/07/22 15:55:57 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -199,6 +199,7 @@ sub get_sequence_assessment_data { my @Ids = $curRes->responseIds($part); $partdata{$part}->{'ResponseTypes'}= \@Responses; $partdata{$part}->{'ResponseIds'} = \@Ids; + $partdata{$part}->{'Survey'} = $curRes->is_survey($part); # Count how many responses of each type there are in this part foreach (@Responses) { $partdata{$part}->{$_}++; @@ -2302,6 +2303,14 @@ sub get_sum_of_scores { if (! defined($courseid)) { $courseid = $ENV{'request.course.id'}; } + if (defined($students) && + ((@$students == 0) || + (@$students == 1 && (! defined($students->[0]) || + $students->[0] eq '')) + ) + ){ + undef($students); + } # &setup_table_names($courseid); my $dbh = &Apache::lonmysql::get_dbh(); @@ -2324,7 +2333,9 @@ sub get_sum_of_scores { $sth->execute(); my $rows = $sth->fetchrow_arrayref(); if ($dbh->err) { - &Apache::lonnet::logthis('error = '.$dbh->errstr()); + &Apache::lonnet::logthis('error 1 = '.$dbh->errstr()); + &Apache::lonnet::logthis('prepared then executed, fetchrow_arrayrefed'. + $/.$request); return (undef,undef); } return ($rows->[0],$rows->[1]); @@ -2504,7 +2515,8 @@ sub get_student_data { my $sth = $dbh->prepare($request); $sth->execute(); if ($dbh->err) { - &Apache::lonnet::logthis('error = '.$dbh->errstr()); + &Apache::lonnet::logthis('error 2 = '.$dbh->errstr()); + &Apache::lonnet::logthis('prepared then executed '.$/.$request); return undef; } my $dataset = $sth->fetchall_arrayref(); @@ -2529,7 +2541,15 @@ sub get_response_data { # &setup_table_names($courseid); my $symb_id = &get_symb_id($symb); + if (! defined($symb_id)) { + &Apache::lonnet::logthis('Unable to find symb for '.$symb.' in '.$courseid); + return undef; + } my $response_id = &get_part_id($response); + if (! defined($response_id)) { + &Apache::lonnet::logthis('Unable to find id for '.$response.' in '.$courseid); + return undef; + } # my $dbh = &Apache::lonmysql::get_dbh(); return undef if (! defined($dbh)); @@ -2565,7 +2585,8 @@ sub get_response_data { my $sth = $dbh->prepare($request); $sth->execute(); if ($dbh->err) { - &Apache::lonnet::logthis('error = '.$dbh->errstr()); + &Apache::lonnet::logthis('error 3 = '.$dbh->errstr()); + &Apache::lonnet::logthis('prepared then executed '.$/.$request); return undef; } my $dataset = $sth->fetchall_arrayref(); @@ -2621,7 +2642,8 @@ sub get_response_data_by_student { my $sth = $dbh->prepare($request); $sth->execute(); if ($dbh->err) { - &Apache::lonnet::logthis('error = '.$dbh->errstr()); + &Apache::lonnet::logthis('error 4 = '.$dbh->errstr()); + &Apache::lonnet::logthis('prepared then executed '.$/.$request); return undef; } my $dataset = $sth->fetchall_arrayref(); @@ -2673,7 +2695,8 @@ sub get_response_time_data { my $sth = $dbh->prepare($request); $sth->execute(); if ($dbh->err) { - &Apache::lonnet::logthis('error = '.$dbh->errstr()); + &Apache::lonnet::logthis('error 5 = '.$dbh->errstr()); + &Apache::lonnet::logthis('prepared then executed '.$/.$request); return undef; } my $dataset = $sth->fetchall_arrayref(); @@ -2763,7 +2786,8 @@ sub get_student_scores { my $sth = $dbh->prepare($request); $sth->execute(); if ($dbh->err) { - &Apache::lonnet::logthis('error = '.$dbh->errstr()); + &Apache::lonnet::logthis('error 6 = '.$dbh->errstr()); + &Apache::lonnet::logthis('prepared then executed '.$/.$request); return undef; } $request = 'SELECT score,COUNT(*) FROM '.$tmptable.' GROUP BY score'; @@ -2771,7 +2795,8 @@ sub get_student_scores { $sth = $dbh->prepare($request); $sth->execute(); if ($dbh->err) { - &Apache::lonnet::logthis('error = '.$dbh->errstr()); + &Apache::lonnet::logthis('error 7 = '.$dbh->errstr()); + &Apache::lonnet::logthis('prepared then executed '.$/.$request); return undef; } my $dataset = $sth->fetchall_arrayref(); @@ -2878,7 +2903,7 @@ $ENV{'course.'.$cid.'.domain'}, and $ENV Returns a reference to a hash which contains: keys '$sname:$sdom' - values [$sdom,$sname,$end,$start,$id,$section,$fullname,$status,$type] + values [$sdom,$sname,$end,$start,$id,$section,$fullname,$status,$type,$lockedtype] The constant values CL_SDOM, CL_SNAME, CL_END, etc. can be used as indices into the returned list to future-proof clients against @@ -2898,6 +2923,7 @@ sub CL_SECTION { return 5; } sub CL_FULLNAME { return 6; } sub CL_STATUS { return 7; } sub CL_TYPE { return 8; } +sub CL_LOCKEDTYPE { return 9; } sub get_classlist { my ($cid,$cdom,$cnum) = @_; @@ -2914,9 +2940,9 @@ sub get_classlist { } my ($sname,$sdom) = split(/:/,$student); my @Values = split(/:/,$info); - my ($end,$start,$id,$section,$fullname,$type); + my ($end,$start,$id,$section,$fullname,$type,$lockedtype); if (@Values > 2) { - ($end,$start,$id,$section,$fullname,$type) = @Values; + ($end,$start,$id,$section,$fullname,$type,$lockedtype) = @Values; } else { # We have to get the data ourselves ($end,$start) = @Values; $section = &Apache::lonnet::getsection($sdom,$sname,$cid); @@ -2953,11 +2979,11 @@ sub get_classlist { $status='Active'; } $classlist{$student} = - [$sdom,$sname,$end,$start,$id,$section,$fullname,$status,$type]; + [$sdom,$sname,$end,$start,$id,$section,$fullname,$status,$type,$lockedtype]; } if (wantarray()) { return (\%classlist,['domain','username','end','start','id', - 'section','fullname','status','type']); + 'section','fullname','status','type','lockedtype']); } else { return \%classlist; }