Diff for /loncom/interface/loncoursedata.pm between versions 1.27 and 1.28

version 1.27, 2002/08/31 18:31:15 version 1.28, 2002/09/01 06:23:19
Line 309  sub ProcessTopResourceMap { Line 309  sub ProcessTopResourceMap {
         return 'Can not open Coursemap.';          return 'Can not open Coursemap.';
     }      }
   
       my $oldkeys;
       if(defined($cache->{'ResourceKeys'})) {
           $oldkeys = $cache->{'ResourceKeys'};
           foreach (split(':::', $cache->{'ResourceKeys'})) {
               delete $cache->{$_};
           }
           delete $cache->{'ResourceKeys'};
       }
   
     # Initialize state machine.  Set information pointing to top level map.      # Initialize state machine.  Set information pointing to top level map.
     my (@sequences, @currentResource, @finishResource);      my (@sequences, @currentResource, @finishResource);
     my ($currentSequence, $currentResourceID, $lastResourceID);      my ($currentSequence, $currentResourceID, $lastResourceID);
Line 320  sub ProcessTopResourceMap { Line 329  sub ProcessTopResourceMap {
     my $topLevelSequenceNumber = $currentSequence;      my $topLevelSequenceNumber = $currentSequence;
   
     my %sequenceRecord;      my %sequenceRecord;
       my %allkeys;
     while(1) {      while(1) {
         if($c->aborted()) {          if($c->aborted()) {
             last;              last;
Line 344  sub ProcessTopResourceMap { Line 354  sub ProcessTopResourceMap {
             } else {              } else {
                 $cache->{'orderedSequences'}.=':'.$currentSequence;                  $cache->{'orderedSequences'}.=':'.$currentSequence;
             }              }
               $allkeys{'orderedSequences'}++;
   
     $lastResourceID=$hash{'map_finish_'.      $lastResourceID=$hash{'map_finish_'.
   $hash{'src_'.$currentResourceID}};    $hash{'src_'.$currentResourceID}};
Line 378  sub ProcessTopResourceMap { Line 389  sub ProcessTopResourceMap {
  $currentResourceID}));   $currentResourceID}));
   
     $cache->{$currentResourceID.':problem'}=$Problem;      $cache->{$currentResourceID.':problem'}=$Problem;
               $allkeys{$currentResourceID.':problem'}++;
     if(!defined($cache->{$currentSequence.':problems'})) {      if(!defined($cache->{$currentSequence.':problems'})) {
  $cache->{$currentSequence.':problems'}=$currentResourceID;   $cache->{$currentSequence.':problems'}=$currentResourceID;
     } else {      } else {
  $cache->{$currentSequence.':problems'}.=   $cache->{$currentSequence.':problems'}.=
     ':'.$currentResourceID;      ':'.$currentResourceID;
     }      }
               $allkeys{$currentSequence.':problems'}++;
   
     my $meta=$hash{'src_'.$currentResourceID};      my $meta=$hash{'src_'.$currentResourceID};
 #            $cache->{$currentResourceID.':title'}=  #            $cache->{$currentResourceID.':title'}=
 #                &Apache::lonnet::metdata($meta,'title');  #                &Apache::lonnet::metdata($meta,'title');
             $cache->{$currentResourceID.':title'}=              $cache->{$currentResourceID.':title'}=
                 $hash{'title_'.$currentResourceID};                  $hash{'title_'.$currentResourceID};
               $allkeys{$currentResourceID.':title'}++;
             $cache->{$currentResourceID.':source'}=              $cache->{$currentResourceID.':source'}=
                 $hash{'src_'.$currentResourceID};                  $hash{'src_'.$currentResourceID};
               $allkeys{$currentResourceID.':source'}++;
   
             # Get Parts for problem              # Get Parts for problem
             my %beenHere;              my %beenHere;
Line 408  sub ProcessTopResourceMap { Line 423  sub ProcessTopResourceMap {
                             $cache->{$currentSequence.':'.$currentResourceID.                              $cache->{$currentSequence.':'.$currentResourceID.
                                      ':parts'}.=':'.$partId;                                       ':parts'}.=':'.$partId;
                         }                          }
                           $allkeys{$currentSequence.':'.$currentResourceID.
                                     ':parts'}++;
                     }                      }
                     if($beenHere{'r:'.$partId.':'.$responseId} == 0) {                      if($beenHere{'r:'.$partId.':'.$responseId} == 0) {
                         $beenHere{'r:'.$partId.':'.$responseId}++;                          $beenHere{'r:'.$partId.':'.$responseId}++;
Line 421  sub ProcessTopResourceMap { Line 438  sub ProcessTopResourceMap {
                                      ':'.$partId.':responseIDs'}.=':'.                                       ':'.$partId.':responseIDs'}.=':'.
                                                                   $responseId;                                                                    $responseId;
                         }                          }
                           $allkeys{$currentSequence.':'.$currentResourceID.':'.
                                        $partId.':responseIDs'}++;
                     }                      }
                     if(/^optionresponse/ &&                       if(/^optionresponse/ && 
                        $beenHere{'o:'.$partId.':'.$currentResourceID} == 0) {                         $beenHere{'o:'.$partId.':'.$currentResourceID} == 0) {
Line 434  sub ProcessTopResourceMap { Line 453  sub ProcessTopResourceMap {
                                 $currentResourceID.':'.                                  $currentResourceID.':'.
                                 $partId.':'.$responseId;                                  $partId.':'.$responseId;
                         }                          }
                           $allkeys{'OptionResponses'}++;
                     }                      }
                 }                  }
             }              }
Line 449  sub ProcessTopResourceMap { Line 469  sub ProcessTopResourceMap {
  # Capture sequence information here   # Capture sequence information here
  $cache->{$currentSequence.':title'}=   $cache->{$currentSequence.':title'}=
     $hash{'title_'.$currentResourceID};      $hash{'title_'.$currentResourceID};
                   $allkeys{$currentSequence.':title'}++;
                 $cache->{$currentSequence.':source'}=                  $cache->{$currentSequence.':source'}=
                     $hash{'src_'.$currentResourceID};                      $hash{'src_'.$currentResourceID};
                   $allkeys{$currentSequence.':source'}++;
   
                 my $totalProblems=0;                  my $totalProblems=0;
                 foreach my $currentProblem (split(/\:/,                  foreach my $currentProblem (split(/\:/,
Line 474  sub ProcessTopResourceMap { Line 496  sub ProcessTopResourceMap {
     $cache->{$currentSequence.':columnWidth'}=      $cache->{$currentSequence.':columnWidth'}=
                         (scalar @titleLength);                          (scalar @titleLength);
  }   }
                   $allkeys{$currentSequence.':columnWidth'}++;
     } else {      } else {
                 # Remove sequence from list, if it contains no problems to                  # Remove sequence from list, if it contains no problems to
                 # display.                  # display.
Line 510  sub ProcessTopResourceMap { Line 533  sub ProcessTopResourceMap {
  $currentResourceID=pop(@currentResource);   $currentResourceID=pop(@currentResource);
     }      }
   
       my @theKeys = keys(%allkeys);
       my $newkeys = join(':::', @theKeys);
       $cache->{'ResourceKeys'} = join(':::', $newkeys);
       if($newkeys ne $oldkeys) {
           $cache->{'ResourceUpdated'} = 'true';
       } else {
           $cache->{'ResourceUpdated'} = 'false';
       }
   
     unless (untie(%hash)) {      unless (untie(%hash)) {
         &Apache::lonnet::logthis("<font color=blue>WARNING: ".          &Apache::lonnet::logthis("<font color=blue>WARNING: ".
                                  "Could not untie coursemap $fn (browse)".                                   "Could not untie coursemap $fn (browse)".
Line 693  sub ProcessStudentData { Line 725  sub ProcessStudentData {
         return;          return;
     }      }
   
       # This little delete thing, should not be here.  Move some other
       # time though.
     if(defined($cache->{$name.':keys'})) {      if(defined($cache->{$name.':keys'})) {
  foreach (split(':::', $cache->{$name.':keys'})) {   foreach (split(':::', $cache->{$name.':keys'})) {
     delete $cache->{$name.':'.$_};      delete $cache->{$name.':'.$_};
  }   }
           delete $cache->{$name.':keys'};
     }      }
   
     my %courseKeys;      my %courseKeys;
Line 764  sub ExtractStudentData { Line 799  sub ExtractStudentData {
         return;          return;
     }      }
   
       # This little delete thing, should not be here.  Move some other
       # time though.
     my %allkeys;      my %allkeys;
     if(defined($output->{$name.':keys'})) {      if(defined($output->{$name.':keys'})) {
  foreach (split(':::', $output->{$name.':keys'})) {   foreach (split(':::', $output->{$name.':keys'})) {
     delete $output->{$name.':'.$_};      delete $output->{$name.':'.$_};
  }   }
           delete $output->{$name.':keys'};
     }      }
   
     my ($username,$domain)=split(':',$name);      my ($username,$domain)=split(':',$name);
Line 1160  sub DownloadStudentCourseData { Line 1198  sub DownloadStudentCourseData {
         }          }
   
         my $downloadTime='Not downloaded';          my $downloadTime='Not downloaded';
           my $needUpdate = 'false';
         if($checkDate eq 'true'  &&           if($checkDate eq 'true'  && 
            tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER(),0640)) {             tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER(),0640)) {
             $downloadTime = $cache{$_.':lastDownloadTime'};              $downloadTime = $cache{$_.':lastDownloadTime'};
               $needUpdate = $cache{'ResourceUpdated'};
             untie(%cache);              untie(%cache);
         }          }
   
         if($c->aborted()) { return 'Aborted'; }          if($c->aborted()) { return 'Aborted'; }
   
         #if($downloadTime ne 'Not downloaded') {          if($needUpdate eq 'true') {
  #    next;              $downloadTime = 'Not downloaded';
  #}   }
  my $courseData =    my $courseData = 
     &DownloadCourseInformation($_, $courseID, $downloadTime,       &DownloadCourseInformation($_, $courseID, $downloadTime, 
        $WhatIWant);         $WhatIWant);
Line 1230  sub DownloadStudentCourseDataSeparate { Line 1270  sub DownloadStudentCourseDataSeparate {
   
         my %cache;          my %cache;
         my $downloadTime='Not downloaded';          my $downloadTime='Not downloaded';
           my $needUpdate = 'false';
         if($checkDate eq 'true'  &&           if($checkDate eq 'true'  && 
            tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER(),0640)) {             tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER(),0640)) {
             $downloadTime = $cache{$_.':lastDownloadTime'};              $downloadTime = $cache{$_.':lastDownloadTime'};
               $needUpdate = $cache{'ResourceUpdated'};
             untie(%cache);              untie(%cache);
         }          }
   
Line 1240  sub DownloadStudentCourseDataSeparate { Line 1282  sub DownloadStudentCourseDataSeparate {
             return 'Aborted';              return 'Aborted';
         }          }
   
         #if($downloadTime eq 'Not downloaded') {          if($needUpdate eq 'true') {
             my $error = 0;              $downloadTime = 'Not downloaded';
             my $courseData =    }
                 &DownloadCourseInformation($_, $courseID, $downloadTime,  
                                            $WhatIWant);          my $error = 0;
             my %downloadData;          my $courseData = 
             unless(tie(%downloadData,'GDBM_File',$residualFile,              &DownloadCourseInformation($_, $courseID, $downloadTime,
                        &GDBM_WRCREAT(),0640)) {                                         $WhatIWant);
                 return 'Failed to tie temporary download hash.';          my %downloadData;
             }          unless(tie(%downloadData,'GDBM_File',$residualFile,
             foreach my $key (keys(%$courseData)) {                     &GDBM_WRCREAT(),0640)) {
                 $downloadData{$key} = $courseData->{$key};              return 'Failed to tie temporary download hash.';
                 if($key =~ /^(con_lost|error|no_such_host)/i) {          }
                     $error = 1;          foreach my $key (keys(%$courseData)) {
                     last;              $downloadData{$key} = $courseData->{$key};
                 }              if($key =~ /^(con_lost|error|no_such_host)/i) {
                   $error = 1;
                   last;
             }              }
             if($error) {          }
                 foreach my $deleteKey (keys(%$courseData)) {          if($error) {
                     delete $downloadData{$deleteKey};              foreach my $deleteKey (keys(%$courseData)) {
                 }                  delete $downloadData{$deleteKey};
                 $downloadData{$_.':error'} = 'No course data for '.$_;  
             }              }
             untie(%downloadData);              $downloadData{$_.':error'} = 'No course data for '.$_;
         #}          }
           untie(%downloadData);
     }      }
     if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r); }      if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r); }
   

Removed from v.1.27  
changed lines
  Added in v.1.28


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