Diff for /loncom/interface/loncoursedata.pm between versions 1.14 and 1.19

version 1.14, 2002/08/14 13:13:37 version 1.19, 2002/08/15 16:11:34
Line 201  sub DownloadCourseInformation { Line 201  sub DownloadCourseInformation {
     if(!defined($WhatIWant)) {      if(!defined($WhatIWant)) {
         $WhatIWant = '.';          $WhatIWant = '.';
     }      }
           $WhatIWant = '.';
     %courseData=&Apache::lonnet::dump($courseID, $domain, $name, $WhatIWant);      %courseData=&Apache::lonnet::dump($courseID, $domain, $name, $WhatIWant);
     $courseData{'UpToDate'} = 'false';      $courseData{'UpToDate'} = 'false';
     $courseData{'lastDownloadTime'}=time;      $courseData{'lastDownloadTime'}=time;
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 692  sub ExtractStudentData { Line 694  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 1014  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 .= ')';
Line 1022  sub DownloadStudentCourseData { Line 1025  sub DownloadStudentCourseData {
     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 1067  sub DownloadStudentCourseData {
                 next;                  next;
             }              }
         }          }
         $count++;  
     }      }
     if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r); }      if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r); }
   
Line 1074  sub DownloadStudentCourseDataSeparate { Line 1079  sub DownloadStudentCourseDataSeparate {
     my $title = 'LON-CAPA Statistics';      my $title = 'LON-CAPA Statistics';
     my $heading = 'Download Course Data';      my $heading = 'Download Course Data';
   
   #    my $WhatIWant = '.';
     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 1090  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 1116  sub DownloadStudentCourseDataSeparate {
         }          }
   
         if($c->aborted()) {          if($c->aborted()) {
             untie(%downloadData);  
             return 'Aborted';              return 'Aborted';
         }          }
   
Line 1122  sub DownloadStudentCourseDataSeparate { Line 1124  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 1142  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 1156  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 1178  sub CheckForResidualDownload { Line 1188  sub CheckForResidualDownload {
         &Apache::lonhtmlcommon::Create_PrgWin($r, $title, $heading);          &Apache::lonhtmlcommon::Create_PrgWin($r, $title, $heading);
     }      }
   
     my $count=1;      my c$ount=1;
     foreach my $name (@students) {      foreach my $name (@students) {
         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 1202  sub CheckForResidualDownload {
         } else {          } else {
             &ProcessStudentData(\%cache, \%downloadData, $name);              &ProcessStudentData(\%cache, \%downloadData, $name);
         }          }
         foreach (@dataKeys) {  
             if(/^$name/) {  
                 delete $downloadData{$_};  
             }  
         }  
         $count++;          $count++;
     }      }
   

Removed from v.1.14  
changed lines
  Added in v.1.19


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>