--- loncom/interface/loncoursedata.pm 2004/10/07 22:12:47 1.140 +++ loncom/interface/loncoursedata.pm 2005/02/28 20:00:23 1.142 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: loncoursedata.pm,v 1.140 2004/10/07 22:12:47 albertel Exp $ +# $Id: loncoursedata.pm,v 1.142 2005/02/28 20:00:23 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -240,76 +240,6 @@ sub LoadDiscussion { =pod -=item &GetUserName(username,userdomain) - -Returns a hash with the following entries: - 'firstname', 'middlename', 'lastname', 'generation', and 'fullname' - - 'fullname' is the result of &Apache::loncoursedata::ProcessFullName. - -=cut - -################################################ -################################################ -sub GetUserName { - my ($username,$userdomain) = @_; - $username = $ENV{'user.name'} if (! defined($username)); - $userdomain = $ENV{'user.domain'} if (! defined($username)); - my %userenv = &Apache::lonnet::get('environment', - ['firstname','middlename','lastname','generation'], - $userdomain,$username); - $userenv{'fullname'} = &ProcessFullName($userenv{'lastname'}, - $userenv{'generation'}, - $userenv{'firstname'}, - $userenv{'middlename'}); - return %userenv; -} - -################################################ -################################################ - -=pod - -=item &ProcessFullName() - -Takes lastname, generation, firstname, and middlename (or some partial -set of this data) and returns the full name version as a string. Format -is Lastname generation, firstname middlename or a subset of this. - -=cut - -################################################ -################################################ -sub ProcessFullName { - my ($lastname, $generation, $firstname, $middlename)=@_; - my $Str = ''; - - # Strip whitespace preceeding & following name components. - $lastname =~ s/(\s+$|^\s+)//g; - $generation =~ s/(\s+$|^\s+)//g; - $firstname =~ s/(\s+$|^\s+)//g; - $middlename =~ s/(\s+$|^\s+)//g; - - if($lastname ne '') { - $Str .= $lastname; - $Str .= ' '.$generation if ($generation ne ''); - $Str .= ','; - $Str .= ' '.$firstname if ($firstname ne ''); - $Str .= ' '.$middlename if ($middlename ne ''); - } else { - $Str .= $firstname if ($firstname ne ''); - $Str .= ' '.$middlename if ($middlename ne ''); - $Str .= ' '.$generation if ($generation ne ''); - } - - return $Str; -} - -################################################ -################################################ - -=pod - =item &make_into_hash($values); Returns a reference to a hash as described by $values. $values is @@ -2652,32 +2582,46 @@ sub RT_tries { return 2; } sub RT_timestamp { return 3; } sub get_response_time_data { - my ($students,$symb,$part,$courseid) = @_; + my ($sections,$enrollment,$symb,$part,$courseid) = @_; return undef if (! defined($symb) || ! defined($part)); $courseid = $ENV{'request.course.id'} if (! defined($courseid)); # &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 $part_id = &get_part_id($part); + if (! defined($part_id)) { + &Apache::lonnet::logthis('Unable to find id for '.$part.' in '.$courseid); + return undef; + } # my $dbh = &Apache::lonmysql::get_dbh(); return undef if (! defined($dbh)); + my ($student_requirements,$enrollment_requirements) = + &limit_by_section_and_status($sections,$enrollment,'d'); my $request = 'SELECT '. 'a.student_id, a.awarded, a.tries, b.timestamp '. 'FROM '.$fulldump_part_table.' AS a '. - 'NATURAL 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_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 '.$student_table.' as d '. + 'ON a.student_id=d.student_id '. 'WHERE '. 'a.symb_id='.$symb_id.' AND a.part_id='.$part_id; - if (defined($students)) { - $request .= ' AND ('. - join(' OR ', map {'a.student_id='. - &get_student_id($_->{'username'}, - $_->{'domain'}) - } @$students - ).')'; + if (defined($student_requirements) || defined($enrollment_requirements)) { + $request .= ' AND '; + if (defined($student_requirements)) { + $request .= $student_requirements.' AND '; + } + if (defined($enrollment_requirements)) { + $request .= $enrollment_requirements.' AND '; + } + $request =~ s/( AND )$//; } $request .= ' ORDER BY b.timestamp'; # &Apache::lonnet::logthis("request =\n".$request); @@ -2946,14 +2890,13 @@ sub get_classlist { &Apache::lonnet::logthis('unable to retrieve environment '. 'for '.$sname.':'.$sdom); } else { - $fullname = &ProcessFullName(@info{qw/lastname generation - firstname middlename/}); + $fullname = &Apache::lonnet::format_name(@info{qw/firstname middlename lastname generation/},'lastname'); $id = $info{'id'}; } # Update the classlist with this students information if ($fullname ne 'not available') { - my $enrolldata = join(':',$end,$start,$id,$section,$fullname); - my $reply=&Apache::lonnet::cput('classlist', + my $enrolldata = join(':',$end,$start,$id,$section,$fullname); + my $reply=&Apache::lonnet::cput('classlist', {$student => $enrolldata}, $cdom,$cnum); if ($reply !~ /^(ok|delayed)/) {