--- loncom/interface/loncoursedata.pm 2004/06/04 17:46:10 1.134 +++ loncom/interface/loncoursedata.pm 2004/09/23 14:46:03 1.139 @@ -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.139 2004/09/23 14:46:03 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -155,14 +155,9 @@ sub get_sequence_assessment_data { next; } # get the map itself, instead of BEGIN_MAP - $title = $previous->title(); - $title =~ s/\:/\&\#058;/g; + $title = $previous->compTitle; $symb = $previous->symb(); $src = $previous->src(); - # pick up the filename if there is no title available - if (! defined($title) || $title eq '') { - ($title) = ($src=~/\/([^\/]*)$/); - } $randompick = $previous->randompick(); my $newmap = { title => $title, src => $src, @@ -184,14 +179,9 @@ sub get_sequence_assessment_data { next if (! ref($curRes)); next if (! $curRes->is_problem() && $curRes->src() !~ /\.survey$/); # Okay, from here on out we only deal with assessments - $title = $curRes->title(); - $title =~ s/\:/\&\#058;/g; + $title = $curRes->compTitle(); $symb = $curRes->symb(); $src = $curRes->src(); - # Grab the filename if there is not title available - if (! defined($title) || $title eq '') { - ($title) = ($src=~ m:/([^/]*)$:); - } my $parts = $curRes->parts(); my %partdata; foreach my $part (@$parts) { @@ -199,6 +189,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 +2293,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 +2323,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 +2505,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 +2531,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 +2575,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 +2632,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 +2685,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 +2776,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 +2785,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 +2893,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 +2913,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 +2930,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 +2969,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; }