Diff for /loncom/interface/loncoursedata.pm between versions 1.4 and 1.10

version 1.4, 2002/07/24 14:52:32 version 1.10, 2002/08/01 20:49:06
Line 189  sub DownloadCourseInformation { Line 189  sub DownloadCourseInformation {
     my $modifiedTime = &GetFileTimestamp($domain, $name,      my $modifiedTime = &GetFileTimestamp($domain, $name,
                                       $courseID.'.db',                                         $courseID.'.db', 
                                       $Apache::lonnet::perlvar{'lonUsersDir'});                                        $Apache::lonnet::perlvar{'lonUsersDir'});
   
     if($lastDownloadTime >= $modifiedTime) {      if($lastDownloadTime >= $modifiedTime) {
         $courseData{'lastDownloadTime'}=time;          $courseData{'lastDownloadTime'}=time;
         $courseData{'UpToDate'} = 'true';          $courseData{'UpToDate'} = 'true';
Line 245  smoothly. Line 246  smoothly.
 =cut  =cut
   
 sub ProcessTopResourceMap {  sub ProcessTopResourceMap {
     my ($cache,$c)=@_;      my ($cache,$c,$r)=@_;
     my %hash;      my %hash;
     my $fn=$ENV{'request.course.fn'};      my $fn=$ENV{'request.course.fn'};
     if(-e "$fn.db") {      if(-e "$fn.db") {
Line 254  sub ProcessTopResourceMap { Line 255  sub ProcessTopResourceMap {
             if($c->aborted()) {              if($c->aborted()) {
                 return;                  return;
             }              }
     if(tie(%hash,'GDBM_File',"$fn.db",&GDBM_READER,0640)) {      if(tie(%hash,'GDBM_File',"$fn.db",&GDBM_READER(),0640)) {
  last;   last;
     }      }
     $tieTries++;      $tieTries++;
Line 341  sub ProcessTopResourceMap { Line 342  sub ProcessTopResourceMap {
 #                &Apache::lonnet::metdata($meta,'title');  #                &Apache::lonnet::metdata($meta,'title');
             $cache->{$currentResourceID.':title'}=              $cache->{$currentResourceID.':title'}=
                 $hash{'title_'.$currentResourceID};                  $hash{'title_'.$currentResourceID};
               $cache->{$currentResourceID.':source'}=
                   $hash{'src_'.$currentResourceID};
   
             # Get Parts for problem              # Get Parts for problem
     foreach (split(/\,/,&Apache::lonnet::metadata($meta,'keys'))) {              my %beenHere;
  if($_=~/^stores\_(\d+)\_tries$/) {              foreach (split(/\,/,&Apache::lonnet::metadata($meta,'packages'))) {
     my $Part=&Apache::lonnet::metadata($meta,$_.'.part');                  if(/^\w+response_\d+.*/) {
                     if(!defined($cache->{$currentSequence.':'.                      my (undef, $partId, $responseId) = split(/_/,$_);
                                           $currentResourceID.':parts'})) {                      if($beenHere{'p:'.$partId} ==  0) {
                         $cache->{$currentSequence.':'.$currentResourceID.                          $beenHere{'p:'.$partId}++;
                                    ':parts'}=$Part;                          if(!defined($cache->{$currentSequence.':'.
                     } else {                                              $currentResourceID.':parts'})) {
                         $cache->{$currentSequence.':'.$currentResourceID.                              $cache->{$currentSequence.':'.$currentResourceID.
                                    ':parts'}.=':'.$Part;                                       ':parts'}=$partId;
                           } else {
                               $cache->{$currentSequence.':'.$currentResourceID.
                                        ':parts'}.=':'.$partId;
                           }
                     }                      }
                     foreach (split(/\,/,                      if($beenHere{'r:'.$partId.':'.$responseId} == 0) {
                              &Apache::lonnet::metadata($meta,'packages'))) {                          $beenHere{'r:'.$partId.':'.$responseId}++;
                         if($_=~/^optionresponse\_($Part)\_(\w+)$/) {                          if(!defined($cache->{$currentSequence.':'.
                             if(defined($cache->{'OptionResponses'})) {                                               $currentResourceID.':'.$partId.
                                 $cache->{'OptionResponses'}.= ':::'.                                               ':responseIDs'})) {
                                     $hash{'src_'.$currentResourceID}.'::'.                              $cache->{$currentSequence.':'.$currentResourceID.
                                     $hash{'title_'.$currentResourceID}.'::'.                                       ':'.$partId.':responseIDs'}=$responseId;
                                     $Part.'::'.$Problem;                          } else {
                             } else {                              $cache->{$currentSequence.':'.$currentResourceID.
                                 $cache->{'OptionResponses'}=                                       ':'.$partId.':responseIDs'}.=':'.
                                     $hash{'src_'.$currentResourceID}.'::'.                                                                    $responseId;
                                     $hash{'title_'.$currentResourceID}.'::'.                          }
                                     $Part.'::'.$Problem;                      }
                             }                      if(/^optionresponse/ && 
                          $beenHere{'o:'.$partId.':'.$currentResourceID} == 0) {
                           $beenHere{'o:'.$partId.$currentResourceID}++;
                           if(defined($cache->{'OptionResponses'})) {
                               $cache->{'OptionResponses'}.= ':::'.
                                   $currentResourceID.':'.
                                   $partId.':'.$responseId;
                           } else {
                               $cache->{'OptionResponses'}= $currentResourceID.
                                   ':'.$partId.':'.$responseId;
                         }                          }
                     }                      }
                 }                  }
     }              }
  }          }
   
  # if resource == finish resource, then it is the end of a sequence/page   # if resource == finish resource, then it is the end of a sequence/page
  if($currentResourceID eq $lastResourceID) {   if($currentResourceID eq $lastResourceID) {
Line 513  sub ProcessClasslist { Line 529  sub ProcessClasslist {
   
         $cache->{$name.':username'}=$studentName;          $cache->{$name.':username'}=$studentName;
         $cache->{$name.':domain'}=$studentDomain;          $cache->{$name.':domain'}=$studentDomain;
           # Initialize timestamp for student
         if(!defined($cache->{$name.':lastDownloadTime'})) {          if(!defined($cache->{$name.':lastDownloadTime'})) {
             $cache->{$name.':lastDownloadTime'}='Not downloaded';              $cache->{$name.':lastDownloadTime'}='Not downloaded';
               $cache->{$name.':updateTime'}=' Not updated';
         }          }
   
         my ($checkForError)=keys(%$studentInformation);          my ($checkForError)=keys(%$studentInformation);
Line 558  sub ProcessClasslist { Line 576  sub ProcessClasslist {
         }          }
         $cache->{$name.':Status'}=$status;          $cache->{$name.':Status'}=$status;
         $cache->{$name.':section'}=$sec;          $cache->{$name.':section'}=$sec;
   
           if($sec eq '' || !defined($sec) || $sec eq ' ') {
               $sec = 'none';
           }
           if(defined($cache->{'sectionList'})) {
               if($cache->{'sectionList'} !~ /(^$sec:|^$sec$|:$sec$|:$sec:)/) {
                   $cache->{'sectionList'} .= ':'.$sec;
               }
           } else {
               $cache->{'sectionList'} = $sec;
           }
     }      }
   
     $cache->{'ClasslistTimestamp'}=time;      $cache->{'ClasslistTimestamp'}=time;
Line 604  sub ProcessStudentData { Line 633  sub ProcessStudentData {
   
     if($courseData->{'UpToDate'} eq 'true') {      if($courseData->{'UpToDate'} eq 'true') {
         $cache->{$name.':lastDownloadTime'}=$courseData->{'lastDownloadTime'};          $cache->{$name.':lastDownloadTime'}=$courseData->{'lastDownloadTime'};
           if($courseData->{'lastDownloadTime'} eq 'Not downloaded') {
               $cache->{$name.':updateTime'} = ' Not updated';
           } else {
               $cache->{$name.':updateTime'}=
                   localtime($courseData->{'lastDownloadTime'});
           }
         return;          return;
     }      }
   
Line 617  sub ProcessStudentData { Line 652  sub ProcessStudentData {
     }      }
   
     $cache->{$name.':lastDownloadTime'}=$courseData->{'lastDownloadTime'};      $cache->{$name.':lastDownloadTime'}=$courseData->{'lastDownloadTime'};
       if($courseData->{'lastDownloadTime'} eq 'Not downloaded') {
           $cache->{$name.':updateTime'} = ' Not updated';
       } else {
           $cache->{$name.':updateTime'}=
               localtime($courseData->{'lastDownloadTime'});
       }
     foreach (@courseKeys) {      foreach (@courseKeys) {
         $cache->{$name.':'.$_}=$courseData->{$_};          $cache->{$name.':'.$_}=$courseData->{$_};
     }      }
Line 625  sub ProcessStudentData { Line 666  sub ProcessStudentData {
 }  }
   
 sub LoadDiscussion {  sub LoadDiscussion {
 #    my $symb=shift;      my ( $courseID)=@_;
 #    $r->print('<br>$cid ... '.$symb);      my %Discuss=();
 #    my %contrib=&Apache::lonnet::dump('msu_2964385f9033c63msul1','msu','2964385f9033c63msul1');      my %contrib=&Apache::lonnet::dump(
     my ($name, $courseID, $Discuss)=@_;                  $courseID,
     my %contrib=&DownloadCourseInformation($name, $courseID, 0);                  $ENV{'course.'.$courseID.'.domain'},
                                               $ENV{'course.'.$courseID.'.num'});
     
       #my %contrib=&DownloadCourseInformation($name, $courseID, 0);
   
     foreach my $temp(keys %contrib) {      foreach my $temp(keys %contrib) {
  if ($temp=~/^version/) {   if ($temp=~/^version/) {
     my $ver=$contrib{$temp};      my $ver=$contrib{$temp};
     my ($dummy,$prb)=split(':',$temp);      my ($dummy,$prb)=split(':',$temp);
     for (my $idx=1; $idx<=$ver; $idx++ ) {      for (my $idx=1; $idx<=$ver; $idx++ ) {
  my $name=$contrib{"$idx:$prb:sendername"};   my $name=$contrib{"$idx:$prb:sendername"};
  $Discuss->{"$name:$prb"}=$idx;   $Discuss{"$name:$prb"}=$idx;
     }      }
  }   }
     }             }       
 #   $r->print('<br>cid='.$cid);  
 #    my %contrib=&Apache::lonnet::restore($symb,$cid,      return \%Discuss;
 # $ENV{$cid.'.domain'},  
 # $ENV{'course.'.$cid.'.num'});  
   
 #    $Apache::lonxml::debug=1;  
 #    &Apache::lonhomework::showhash(%Discuss);  
 #    $Apache::lonxml::debug=0;  
 }  }
   
 # ----- END PROCESSING FUNCTIONS ---------------------------------------  # ----- END PROCESSING FUNCTIONS ---------------------------------------
Line 759  sub TestCacheData { Line 797  sub TestCacheData {
     while($tieTries < $totalDelay) {      while($tieTries < $totalDelay) {
         my $result=0;          my $result=0;
         if($isCached) {          if($isCached) {
             $result=tie(%testData,'GDBM_File',$ChartDB,&GDBM_READER,0640);              $result=tie(%testData,'GDBM_File',$ChartDB,&GDBM_READER(),0640);
         } else {          } else {
             $result=tie(%testData,'GDBM_File',$ChartDB,&GDBM_NEWDB,0640);              $result=tie(%testData,'GDBM_File',$ChartDB,&GDBM_NEWDB(),0640);
         }          }
         if($result) {          if($result) {
             last;              last;

Removed from v.1.4  
changed lines
  Added in v.1.10


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