version 1.55, 2003/03/03 21:52:24
|
version 1.56, 2003/03/05 14:39:08
|
Line 1580 sub get_current_state {
|
Line 1580 sub get_current_state {
|
# |
# |
$courseid = $ENV{'request.course.id'} if (! defined($courseid)); |
$courseid = $ENV{'request.course.id'} if (! defined($courseid)); |
# |
# |
|
# my $cachefilename = $Apache::lonnet::tmpdir.$ENV{'user.name'}.'_'. |
|
# $ENV{'user.domain'}.'_'. |
|
# $courseid.'_student_data.db'; |
my $cachefilename = $Apache::lonnet::tmpdir.$ENV{'user.name'}.'_'. |
my $cachefilename = $Apache::lonnet::tmpdir.$ENV{'user.name'}.'_'. |
$ENV{'user.domain'}.'_'. |
$ENV{'user.domain'}.'_'. |
$courseid.'_student_data.db'; |
$courseid.'_'. |
|
$sname.'_'.$sdom. |
|
'_student_data.db'; |
my %cache; |
my %cache; |
# |
# |
my %student_data; # return values go here |
my %student_data; # return values go here |
Line 1594 sub get_current_state {
|
Line 1599 sub get_current_state {
|
if (tie(%cache,'GDBM_File',$cachefilename,&GDBM_READER(),0640)) { |
if (tie(%cache,'GDBM_File',$cachefilename,&GDBM_READER(),0640)) { |
if (exists($cache{$key.'time'})) { |
if (exists($cache{$key.'time'})) { |
$updatetime = $cache{$key.'time'}; |
$updatetime = $cache{$key.'time'}; |
# &Apache::lonnet::logthis('got updatetime of '.$updatetime); |
|
} |
} |
untie(%cache); |
untie(%cache); |
} |
} |
# timestamp/devalidation |
# timestamp/devalidation check should go here. |
my $modifiedtime = 1; |
my $modifiedtime = 1; |
# Take whatever steps are neccessary at this point to give $modifiedtime a |
# Take whatever steps are neccessary at this point to give $modifiedtime a |
# new value |
# new value |
# |
# |
if (($updatetime < $modifiedtime) || |
if (($updatetime < $modifiedtime) || |
(defined($forcedownload) && $forcedownload)) { |
(defined($forcedownload) && $forcedownload)) { |
# &Apache::lonnet::logthis("loading data"); |
|
# Get all the students current data |
# Get all the students current data |
my $time_of_retrieval = time; |
my $time_of_retrieval = time; |
my @tmp = &Apache::lonnet::currentdump($courseid,$sdom,$sname); |
my @tmp = &Apache::lonnet::currentdump($courseid,$sdom,$sname); |
Line 1627 sub get_current_state {
|
Line 1630 sub get_current_state {
|
# keys instead of unescaping every key. |
# keys instead of unescaping every key. |
# |
# |
if (tie(%cache,'GDBM_File',$cachefilename,&GDBM_WRCREAT(),0640)) { |
if (tie(%cache,'GDBM_File',$cachefilename,&GDBM_WRCREAT(),0640)) { |
# &Apache::lonnet::logthis("writing data"); |
|
while (my ($current_symb,$param_hash) = each(%student_data)) { |
while (my ($current_symb,$param_hash) = each(%student_data)) { |
my @Parameters = %{$param_hash}; |
my @Parameters = %{$param_hash}; |
my $value = join(':',map { &Apache::lonnet::escape($_); } |
my $value = join(':',map { &Apache::lonnet::escape($_); } |
Line 1639 sub get_current_state {
|
Line 1641 sub get_current_state {
|
untie(%cache); |
untie(%cache); |
} |
} |
} else { |
} else { |
&Apache::lonnet::logthis('retrieving cached data '); |
|
if (tie(%cache,'GDBM_File',$cachefilename,&GDBM_READER(),0640)) { |
if (tie(%cache,'GDBM_File',$cachefilename,&GDBM_READER(),0640)) { |
if (defined($symb)) { |
if (defined($symb)) { |
my $searchkey = $key.&Apache::lonnet::escape($symb); |
my $searchkey = $key.&Apache::lonnet::escape($symb); |
Line 1652 sub get_current_state {
|
Line 1653 sub get_current_state {
|
if ($testkey =~ /$searchkey/) { # \Q \E? May be necc. |
if ($testkey =~ /$searchkey/) { # \Q \E? May be necc. |
my $tmpsymb = $1; |
my $tmpsymb = $1; |
next if ($tmpsymb =~ 'time'); |
next if ($tmpsymb =~ 'time'); |
# &Apache::lonnet::logthis('found '.$tmpsymb.':'); |
|
$student_data{&Apache::lonnet::unescape($tmpsymb)} = |
$student_data{&Apache::lonnet::unescape($tmpsymb)} = |
&make_into_hash($params); |
&make_into_hash($params); |
} |
} |
Line 1662 sub get_current_state {
|
Line 1662 sub get_current_state {
|
} |
} |
} |
} |
if (! defined($symb)) { |
if (! defined($symb)) { |
# &Apache::lonnet::logthis("returning all data"); |
|
return %student_data; |
return %student_data; |
} elsif (exists($student_data{$symb})) { |
} elsif (exists($student_data{$symb})) { |
# &Apache::lonnet::logthis("returning data for symb=".$symb); |
|
return %{$student_data{$symb}}; |
return %{$student_data{$symb}}; |
} else { |
} else { |
return (); |
return (); |