version 1.53, 2003/02/28 20:41:27
|
version 1.56, 2003/03/05 14:39:08
|
Line 1308 sub DownloadStudentCourseData {
|
Line 1308 sub DownloadStudentCourseData {
|
$WhatIWant .= ')'; |
$WhatIWant .= ')'; |
# $WhatIWant = '.'; |
# $WhatIWant = '.'; |
|
|
|
my %prog_state; |
if($status eq 'true') { |
if($status eq 'true') { |
&Apache::lonhtmlcommon::Create_PrgWin($r, $title, $heading); |
%prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r, $title, |
|
$heading,($#$students)+1); |
} |
} |
|
|
my $displayString; |
|
my $count=0; |
|
foreach (@$students) { |
foreach (@$students) { |
my %cache; |
my %cache; |
|
|
if($c->aborted()) { return 'Aborted'; } |
if($c->aborted()) { return 'Aborted'; } |
|
|
if($status eq 'true') { |
if($status eq 'true') { |
$count++; |
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state, |
my $displayString = $count.'/'.$studentCount.': '.$_; |
'last student '.$_); |
&Apache::lonhtmlcommon::Update_PrgWin($displayString, $r); |
|
} |
} |
|
|
my $downloadTime='Not downloaded'; |
my $downloadTime='Not downloaded'; |
Line 1359 sub DownloadStudentCourseData {
|
Line 1358 sub DownloadStudentCourseData {
|
next; |
next; |
} |
} |
} |
} |
if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r); } |
if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); } |
|
|
return 'OK'; |
return 'OK'; |
} |
} |
Line 1380 sub DownloadStudentCourseDataSeparate {
|
Line 1379 sub DownloadStudentCourseDataSeparate {
|
&CheckForResidualDownload($cacheDB, 'true', 'true', $courseID, $r, $c); |
&CheckForResidualDownload($cacheDB, 'true', 'true', $courseID, $r, $c); |
|
|
my $studentCount = scalar(@$students); |
my $studentCount = scalar(@$students); |
|
my %prog_state; |
if($status eq 'true') { |
if($status eq 'true') { |
&Apache::lonhtmlcommon::Create_PrgWin($r, $title, $heading); |
%prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r, $title, |
|
$heading,($#$students)+1); |
} |
} |
my $count=0; |
|
my $displayString=''; |
my $displayString=''; |
foreach (@$students) { |
foreach (@$students) { |
if($c->aborted()) { |
if($c->aborted()) { |
Line 1391 sub DownloadStudentCourseDataSeparate {
|
Line 1391 sub DownloadStudentCourseDataSeparate {
|
} |
} |
|
|
if($status eq 'true') { |
if($status eq 'true') { |
$count++; |
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state, |
$displayString = $count.'/'.$studentCount.': '.$_; |
'last student '.$_); |
&Apache::lonhtmlcommon::Update_PrgWin($displayString, $r); |
|
} |
} |
|
|
my %cache; |
my %cache; |
Line 1438 sub DownloadStudentCourseDataSeparate {
|
Line 1437 sub DownloadStudentCourseDataSeparate {
|
} |
} |
untie(%downloadData); |
untie(%downloadData); |
} |
} |
if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r); } |
if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r, |
|
\%prog_state); } |
|
|
return &CheckForResidualDownload($cacheDB, 'true', 'true', |
return &CheckForResidualDownload($cacheDB, 'true', 'true', |
$courseID, $r, $c); |
$courseID, $r, $c); |
Line 1477 sub CheckForResidualDownload {
|
Line 1477 sub CheckForResidualDownload {
|
my $heading = 'Process Course Data'; |
my $heading = 'Process Course Data'; |
my $title = 'LON-CAPA Statistics'; |
my $title = 'LON-CAPA Statistics'; |
my $studentCount = scalar(@students); |
my $studentCount = scalar(@students); |
|
my %prog_state; |
if($status eq 'true') { |
if($status eq 'true') { |
&Apache::lonhtmlcommon::Create_PrgWin($r, $title, $heading); |
%prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r, $title, |
|
$heading,$#students+1); |
} |
} |
|
|
my $count=1; |
my $count=1; |
Line 1486 sub CheckForResidualDownload {
|
Line 1488 sub CheckForResidualDownload {
|
last if($c->aborted()); |
last if($c->aborted()); |
|
|
if($status eq 'true') { |
if($status eq 'true') { |
my $displayString = $count.'/'.$studentCount.': '.$name; |
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state, |
&Apache::lonhtmlcommon::Update_PrgWin($displayString, $r); |
'last student '.$name); |
} |
} |
|
|
if($extract eq 'true') { |
if($extract eq 'true') { |
Line 1498 sub CheckForResidualDownload {
|
Line 1500 sub CheckForResidualDownload {
|
$count++; |
$count++; |
} |
} |
|
|
if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r); } |
if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r, |
|
\%prog_state); } |
|
|
untie(%cache); |
untie(%cache); |
untie(%downloadData); |
untie(%downloadData); |
Line 1577 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 1591 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 1624 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 1636 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 1649 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 1659 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 (); |
Line 1687 $ENV{'course.'.$cid.'.domain'}, and $ENV
|
Line 1688 $ENV{'course.'.$cid.'.domain'}, and $ENV
|
|
|
Returns a reference to a hash which contains: |
Returns a reference to a hash which contains: |
keys '$sname:$sdom' |
keys '$sname:$sdom' |
values [$end,$start,$id,$section,$fullname] |
values [$sdom,$sname,$end,$start,$id,$section,$fullname,$status] |
|
|
|
The constant values CL_SDOM, CL_SNAME, CL_END, etc. can be used |
|
as indices into the returned list to future-proof clients against |
|
changes in the list order. |
|
|
=cut |
=cut |
|
|
################################################ |
################################################ |
################################################ |
################################################ |
|
|
|
sub CL_SDOM { return 0; } |
|
sub CL_SNAME { return 1; } |
|
sub CL_END { return 2; } |
|
sub CL_START { return 3; } |
|
sub CL_ID { return 4; } |
|
sub CL_SECTION { return 5; } |
|
sub CL_FULLNAME { return 6; } |
|
sub CL_STATUS { return 7; } |
|
|
sub get_classlist { |
sub get_classlist { |
my ($cid,$cdom,$cnum) = @_; |
my ($cid,$cdom,$cnum) = @_; |
$cid = $cid || $ENV{'request.course.id'}; |
$cid = $cid || $ENV{'request.course.id'}; |