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

version 1.6, 2002/07/25 21:23:51 version 1.10, 2002/08/01 20:49:06
Line 106  sub DownloadClasslist { Line 106  sub DownloadClasslist {
     my ($courseDomain,$courseNumber)=split(/\_/,$courseID);      my ($courseDomain,$courseNumber)=split(/\_/,$courseID);
     my %classlist;      my %classlist;
   
 #    my $modifiedTime = &GetFileTimestamp($courseDomain, $courseNumber,      my $modifiedTime = &GetFileTimestamp($courseDomain, $courseNumber,
 #                                     'classlist.db',                                        'classlist.db', 
 #                                     $Apache::lonnet::perlvar{'lonUsersDir'});                                       $Apache::lonnet::perlvar{'lonUsersDir'});
   
 #    if($lastDownloadTime ne 'Not downloaded' &&      if($lastDownloadTime ne 'Not downloaded' &&
 #       $lastDownloadTime >= $modifiedTime && $modifiedTime >= 0) {         $lastDownloadTime >= $modifiedTime && $modifiedTime >= 0) {
 #        $classlist{'lastDownloadTime'}=time;          $classlist{'lastDownloadTime'}=time;
 #        $classlist{'UpToDate'} = 'true';          $classlist{'UpToDate'} = 'true';
 #        return \%classlist;          return \%classlist;
 #    }      }
   
     %classlist=&Apache::lonnet::dump('classlist',$courseDomain, $courseNumber);      %classlist=&Apache::lonnet::dump('classlist',$courseDomain, $courseNumber);
     my ($checkForError)=keys (%classlist);      my ($checkForError)=keys (%classlist);
Line 186  sub DownloadCourseInformation { Line 186  sub DownloadCourseInformation {
     my %courseData;      my %courseData;
     my ($name,$domain) = split(/\:/,$namedata);      my ($name,$domain) = split(/\:/,$namedata);
   
 #    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) {  
 #        $courseData{'lastDownloadTime'}=time;      if($lastDownloadTime >= $modifiedTime) {
 #        $courseData{'UpToDate'} = 'true';          $courseData{'lastDownloadTime'}=time;
 #        return \%courseData;          $courseData{'UpToDate'} = 'true';
 #    }          return \%courseData;
       }
   
     # Download course data      # Download course data
     %courseData=&Apache::lonnet::dump($courseID, $domain, $name);      %courseData=&Apache::lonnet::dump($courseID, $domain, $name);
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';              $cache->{$name.':updateTime'}=' Not updated';
Line 559  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 769  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.6  
changed lines
  Added in v.1.10


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