version 1.14, 2002/08/14 13:13:37
|
version 1.20, 2002/08/15 18:16:29
|
Line 119 sub DownloadClasslist {
|
Line 119 sub DownloadClasslist {
|
} |
} |
|
|
%classlist=&Apache::lonnet::dump('classlist',$courseDomain, $courseNumber); |
%classlist=&Apache::lonnet::dump('classlist',$courseDomain, $courseNumber); |
my ($checkForError)=keys (%classlist); |
foreach(keys (%classlist)) { |
if($checkForError =~ /^(con_lost|error|no_such_host)/i) { |
if(/^(con_lost|error|no_such_host)/i) { |
return \%classlist; |
return \%classlist; |
|
} |
} |
} |
|
|
foreach my $name (keys(%classlist)) { |
foreach my $name (keys(%classlist)) { |
Line 396 sub ProcessTopResourceMap {
|
Line 397 sub ProcessTopResourceMap {
|
$beenHere{'o:'.$partId.$currentResourceID}++; |
$beenHere{'o:'.$partId.$currentResourceID}++; |
if(defined($cache->{'OptionResponses'})) { |
if(defined($cache->{'OptionResponses'})) { |
$cache->{'OptionResponses'}.= ':::'. |
$cache->{'OptionResponses'}.= ':::'. |
$currentResourceID.':'. |
$currentSequence.':'.$currentResourceID.':'. |
$partId.':'.$responseId; |
$partId.':'.$responseId; |
} else { |
} else { |
$cache->{'OptionResponses'}= $currentResourceID. |
$cache->{'OptionResponses'}= $currentSequence.':'. |
':'.$partId.':'.$responseId; |
$currentResourceID.':'. |
|
$partId.':'.$responseId; |
} |
} |
} |
} |
} |
} |
Line 545 sub ProcessClasslist {
|
Line 547 sub ProcessClasslist {
|
if($c->aborted()) { |
if($c->aborted()) { |
return (); |
return (); |
} |
} |
push(@names,$name); |
|
my $studentInformation = $classlist->{$name.':studentInformation'}, |
my $studentInformation = $classlist->{$name.':studentInformation'}, |
my $sectionData = $classlist->{$name.':sections'}, |
my $sectionData = $classlist->{$name.':sections'}, |
my $date = $classlist->{$name}, |
my $date = $classlist->{$name}, |
Line 559 sub ProcessClasslist {
|
Line 560 sub ProcessClasslist {
|
$cache->{$name.':updateTime'}=' Not updated'; |
$cache->{$name.':updateTime'}=' Not updated'; |
} |
} |
|
|
my ($checkForError)=keys(%$studentInformation); |
my $error = 0; |
if($checkForError =~ /^(con_lost|error|no_such_host)/i) { |
foreach(keys(%$studentInformation)) { |
$cache->{$name.':error'}= |
if(/^(con_lost|error|no_such_host)/i) { |
'Could not download student environment data.'; |
$cache->{$name.':error'}= |
$cache->{$name.':fullname'}=''; |
'Could not download student environment data.'; |
$cache->{$name.':id'}=''; |
$cache->{$name.':fullname'}=''; |
} else { |
$cache->{$name.':id'}=''; |
$cache->{$name.':fullname'}=&ProcessFullName( |
$error = 1; |
|
} |
|
} |
|
next if($error); |
|
push(@names,$name); |
|
$cache->{$name.':fullname'}=&ProcessFullName( |
$studentInformation->{'lastname'}, |
$studentInformation->{'lastname'}, |
$studentInformation->{'generation'}, |
$studentInformation->{'generation'}, |
$studentInformation->{'firstname'}, |
$studentInformation->{'firstname'}, |
$studentInformation->{'middlename'}); |
$studentInformation->{'middlename'}); |
$cache->{$name.':id'}=$studentInformation->{'id'}; |
$cache->{$name.':id'}=$studentInformation->{'id'}; |
} |
|
|
|
my ($end, $start)=split(':',$date); |
my ($end, $start)=split(':',$date); |
$courseID=~s/\_/\//g; |
$courseID=~s/\_/\//g; |
Line 692 sub ExtractStudentData {
|
Line 697 sub ExtractStudentData {
|
foreach my $part (split(/\:/,$data->{$sequence.':'. |
foreach my $part (split(/\:/,$data->{$sequence.':'. |
$problemID. |
$problemID. |
':parts'})) { |
':parts'})) { |
|
$output->{$name.':'.$problemID.':'.$part.':tries'} = 0; |
|
$output->{$name.':'.$problemID.':'.$part.':awarded'} = 0; |
|
$output->{$name.':'.$problemID.':'.$part.':code'} = ' '; |
$totalProblems++; |
$totalProblems++; |
} |
} |
$output->{$name.':'.$problemID.':'.$part.':tries'} = 0; |
|
$output->{$name.':'.$problemID.':'.$part.':awarded'} = 0; |
|
$output->{$name.':'.$problemID.':'.$part.':code'} = ' '; |
|
$output->{$name.':'.$problemID.':NoVersion'} = 'true'; |
$output->{$name.':'.$problemID.':NoVersion'} = 'true'; |
next; |
next; |
} |
} |
Line 1012 sub DownloadStudentCourseData {
|
Line 1017 sub DownloadStudentCourseData {
|
my $studentCount = scalar(@$students); |
my $studentCount = scalar(@$students); |
my %cache; |
my %cache; |
|
|
|
|
my $WhatIWant; |
my $WhatIWant; |
$WhatIWant = '(^version:(\w|\/|\.|-)+?$|'; |
$WhatIWant = '(^version:|'; |
$WhatIWant .= '^\d+:(\w|\/|\.|-)+?:(resource\.\d+\.'; |
$WhatIWant .= '^\d+:.+?:(resource\.\d+\.'; |
$WhatIWant .= '(solved|tries|previous|awarded|(\d+\.submission))\s*$'; |
$WhatIWant .= '(solved|tries|previous|awarded|(\d+\.submission))\s*$'; |
$WhatIWant .= '|timestamp)'; |
$WhatIWant .= '|timestamp)'; |
$WhatIWant .= ')'; |
$WhatIWant .= ')'; |
|
# $WhatIWant = '.'; |
|
|
if($status eq 'true') { |
if($status eq 'true') { |
&Apache::lonhtmlcommon::Create_PrgWin($r, $title, $heading); |
&Apache::lonhtmlcommon::Create_PrgWin($r, $title, $heading); |
} |
} |
my $count=1; |
|
|
my $displayString; |
|
my $count=0; |
foreach (@$students) { |
foreach (@$students) { |
if($c->aborted()) { return 'Aborted'; } |
if($c->aborted()) { return 'Aborted'; } |
|
|
if($status eq 'true') { |
if($status eq 'true') { |
|
$count++; |
my $displayString = $count.'/'.$studentCount.': '.$_; |
my $displayString = $count.'/'.$studentCount.': '.$_; |
&Apache::lonhtmlcommon::Update_PrgWin($displayString, $r); |
&Apache::lonhtmlcommon::Update_PrgWin($displayString, $r); |
} |
} |
Line 1061 sub DownloadStudentCourseData {
|
Line 1071 sub DownloadStudentCourseData {
|
next; |
next; |
} |
} |
} |
} |
$count++; |
|
} |
} |
if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r); } |
if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r); } |
|
|
Line 1075 sub DownloadStudentCourseDataSeparate {
|
Line 1084 sub DownloadStudentCourseDataSeparate {
|
my $heading = 'Download Course Data'; |
my $heading = 'Download Course Data'; |
|
|
my $WhatIWant; |
my $WhatIWant; |
$WhatIWant = '(^version:(\w|\/|\.|-)+?$|'; |
$WhatIWant = '(^version:|'; |
$WhatIWant .= '^\d+:(\w|\/|\.|-)+?:(resource\.\d+\.'; |
$WhatIWant .= '^\d+:.+?:(resource\.\d+\.'; |
$WhatIWant .= '(solved|tries|previous|awarded|(\d+\.submission))\s*$'; |
$WhatIWant .= '(solved|tries|previous|awarded|(\d+\.submission))\s*$'; |
$WhatIWant .= '|timestamp)'; |
$WhatIWant .= '|timestamp)'; |
$WhatIWant .= ')'; |
$WhatIWant .= ')'; |
Line 1084 sub DownloadStudentCourseDataSeparate {
|
Line 1093 sub DownloadStudentCourseDataSeparate {
|
&CheckForResidualDownload($courseID, $cacheDB, $students, $c); |
&CheckForResidualDownload($courseID, $cacheDB, $students, $c); |
|
|
my %cache; |
my %cache; |
my %downloadData; |
|
unless(tie(%downloadData,'GDBM_File',$residualFile,&GDBM_NEWDB(),0640)) { |
|
return 'Failed to tie temporary download hash.'; |
|
} |
|
|
|
my $studentCount = scalar(@$students); |
my $studentCount = scalar(@$students); |
if($status eq 'true') { |
if($status eq 'true') { |
&Apache::lonhtmlcommon::Create_PrgWin($r, $title, $heading); |
&Apache::lonhtmlcommon::Create_PrgWin($r, $title, $heading); |
} |
} |
my $count=1; |
my $count=0; |
|
my $displayString=''; |
foreach (@$students) { |
foreach (@$students) { |
if($c->aborted()) { |
if($c->aborted()) { |
untie(%downloadData); |
|
return 'Aborted'; |
return 'Aborted'; |
} |
} |
|
|
if($status eq 'true') { |
if($status eq 'true') { |
my $displayString = $count.'/'.$studentCount.': '.$_; |
$count++; |
|
$displayString = $count.'/'.$studentCount.': '.$_; |
&Apache::lonhtmlcommon::Update_PrgWin($displayString, $r); |
&Apache::lonhtmlcommon::Update_PrgWin($displayString, $r); |
} |
} |
|
|
Line 1113 sub DownloadStudentCourseDataSeparate {
|
Line 1119 sub DownloadStudentCourseDataSeparate {
|
} |
} |
|
|
if($c->aborted()) { |
if($c->aborted()) { |
untie(%downloadData); |
|
return 'Aborted'; |
return 'Aborted'; |
} |
} |
|
|
Line 1122 sub DownloadStudentCourseDataSeparate {
|
Line 1127 sub DownloadStudentCourseDataSeparate {
|
my $courseData = |
my $courseData = |
&DownloadCourseInformation($_, $courseID, $downloadTime, |
&DownloadCourseInformation($_, $courseID, $downloadTime, |
$WhatIWant); |
$WhatIWant); |
|
my %downloadData; |
|
unless(tie(%downloadData,'GDBM_File',$residualFile, |
|
&GDBM_WRCREAT(),0640)) { |
|
return 'Failed to tie temporary download hash.'; |
|
} |
foreach my $key (keys(%$courseData)) { |
foreach my $key (keys(%$courseData)) { |
$downloadData{$key} = $courseData->{$key}; |
$downloadData{$key} = $courseData->{$key}; |
if($key =~ /^(con_lost|error|no_such_host)/i) { |
if($key =~ /^(con_lost|error|no_such_host)/i) { |
Line 1135 sub DownloadStudentCourseDataSeparate {
|
Line 1145 sub DownloadStudentCourseDataSeparate {
|
} |
} |
$downloadData{$_.':error'} = 'No course data for '.$_; |
$downloadData{$_.':error'} = 'No course data for '.$_; |
} |
} |
|
untie(%downloadData); |
} |
} |
$count++; |
|
} |
} |
if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r); } |
if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r); } |
|
|
Line 1149 sub CheckForResidualDownload {
|
Line 1159 sub CheckForResidualDownload {
|
|
|
my $residualFile = '/home/httpd/perl/tmp/'.$courseID.'DownloadFile.db'; |
my $residualFile = '/home/httpd/perl/tmp/'.$courseID.'DownloadFile.db'; |
if(!-e $residualFile) { |
if(!-e $residualFile) { |
return; |
return 'OK'; |
} |
} |
|
|
my %downloadData; |
my %downloadData; |
my %cache; |
my %cache; |
unless(tie(%downloadData,'GDBM_File',$residualFile,&GDBM_READER(),0640) && |
unless(tie(%downloadData,'GDBM_File',$residualFile,&GDBM_READER(),0640)) { |
tie(%cache,'GDBM_File',$cacheDB,&GDBM_WRCREAT(),0640)) { |
return 'Can not tie database for check for residual download: tempDB'; |
return; |
} |
|
unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_WRCREAT(),0640)) { |
|
untie(%downloadData); |
|
return 'Can not tie database for check for residual download: cacheDB'; |
} |
} |
|
|
my @dataKeys=keys(%downloadData); |
|
my @students=(); |
my @students=(); |
my %checkStudent; |
my %checkStudent; |
foreach(@dataKeys) { |
my $key; |
my @temp = split(':', $_); |
while(($key, undef) = each %downloadData) { |
|
my @temp = split(':', $key); |
my $student = $temp[0].':'.$temp[1]; |
my $student = $temp[0].':'.$temp[1]; |
if(!defined($checkStudent{$student})) { |
if(!defined($checkStudent{$student})) { |
$checkStudent{$student}++; |
$checkStudent{$student}++; |
Line 1183 sub CheckForResidualDownload {
|
Line 1196 sub CheckForResidualDownload {
|
last if($c->aborted()); |
last if($c->aborted()); |
|
|
if($status eq 'true') { |
if($status eq 'true') { |
my $displayString = $count.'/'.$studentCount.': '.$_; |
my $displayString = $count.'/'.$studentCount.': '.$name; |
&Apache::lonhtmlcommon::Update_PrgWin($displayString, $r); |
&Apache::lonhtmlcommon::Update_PrgWin($displayString, $r); |
} |
} |
|
|
Line 1192 sub CheckForResidualDownload {
|
Line 1205 sub CheckForResidualDownload {
|
} else { |
} else { |
&ProcessStudentData(\%cache, \%downloadData, $name); |
&ProcessStudentData(\%cache, \%downloadData, $name); |
} |
} |
foreach (@dataKeys) { |
|
if(/^$name/) { |
|
delete $downloadData{$_}; |
|
} |
|
} |
|
$count++; |
$count++; |
} |
} |
|
|