--- loncom/interface/loncoursedata.pm 2003/04/09 14:51:29 1.67 +++ loncom/interface/loncoursedata.pm 2003/05/27 15:48:12 1.72 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: loncoursedata.pm,v 1.67 2003/04/09 14:51:29 matthew Exp $ +# $Id: loncoursedata.pm,v 1.72 2003/05/27 15:48:12 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -137,8 +137,6 @@ sub get_sequence_assessment_data { # We need to keep track of which sequences contain homework problems # my $previous; - $curRes = $iterator->next(); # BEGIN_MAP - $curRes = $iterator->next(); # The first item in the top level map. while (scalar(@Nested_Sequences)) { $previous = $curRes; $curRes = $iterator->next(); @@ -211,6 +209,39 @@ sub LoadDiscussion { return \%Discuss; } +################################################ +################################################ + +=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() @@ -221,6 +252,8 @@ is Lastname generation, firstname middle =cut +################################################ +################################################ sub ProcessFullName { my ($lastname, $generation, $firstname, $middlename)=@_; my $Str = ''; @@ -581,6 +614,36 @@ sub init_dbs { =pod +=item &delete_caches() + +=cut + +################################################ +################################################ +sub delete_caches { + my $courseid = shift; + $courseid = $ENV{'request.course.id'} if (! defined($courseid)); + # + &setup_table_names($courseid); + # + my $dbh = &Apache::lonmysql::get_dbh(); + foreach my $table ($symb_table,$part_table,$student_table, + $updatetime_table,$performance_table, + $parameters_table ){ + my $command = 'DROP TABLE '.$table.';'; + $dbh->do($command); + if ($dbh->err) { + &Apache::lonnet::logthis($command.' resulted in error: '.$dbh->errstr); + } + } + return; +} + +################################################ +################################################ + +=pod + =item &get_part_id() Get the MySQL id of a problem part string. @@ -862,7 +925,8 @@ sub update_student_data { if ($parameter !~ /(timestamp|resource\.(.*)\.(solved|tries|awarded|award|awarddetail|previous))/) { $newstring = "('".join("','", $symb_id,$student_id, - $parameter,$value)."'),\n"; + $parameter)."',". + $dbh->quote($value)."),\n"; $num_parameters ++; if ($newstring !~ /''/) { $store_parameters_command .= $newstring; @@ -1122,9 +1186,18 @@ sub get_current_state { return () if (! defined($sname) || ! defined($sdom)); # my ($status,$data) = &ensure_current_data($sname,$sdom,$courseid); + &Apache::lonnet::logthis + ('sname = '.$sname. + ' domain = '.$sdom. + ' status = '.$status. + ' data is '.(defined($data)?'defined':'undefined')); # if (defined($data)) { - return %$data; + if (defined($symb)) { + return %{$data->{$symb}}; + } else { + return %$data; + } } elsif ($status eq 'no data') { return (); } else {