Diff for /loncom/interface/loncoursedata.pm between versions 1.47 and 1.52

version 1.47, 2003/02/14 21:02:05 version 1.52, 2003/02/25 20:36:29
Line 1 Line 1
 # The LearningOnline Network with CAPA  # The LearningOnline Network with CAPA
 # (Publication Handler  
 #  #
 # $Id$  # $Id$
 #  #
Line 120  sub DownloadClasslist { Line 119  sub DownloadClasslist {
     my ($courseDomain,$courseNumber)=split(/\_/,$courseID);      my ($courseDomain,$courseNumber)=split(/\_/,$courseID);
     my %classlist;      my %classlist;
   
     my $modifiedTime = &Apache::lonnet::GetFileTimestamp($courseDomain, $courseNumber,      my $modifiedTime = &Apache::lonnet::GetFileTimestamp($courseDomain, 
                                                            $courseNumber,
                                                          'classlist.db',                                                            'classlist.db', 
                                                          $Apache::lonnet::perlvar{'lonUsersDir'});                                   $Apache::lonnet::perlvar{'lonUsersDir'});
   
     # Always download the information if lastDownloadTime is set to      # Always download the information if lastDownloadTime is set to
     # Not downloaded, otherwise it is only downloaded if the file      # Not downloaded, otherwise it is only downloaded if the file
Line 261  with stopping downloading then can not t Line 261  with stopping downloading then can not t
   
 # ----- PROCESSING FUNCTIONS ---------------------------------------  # ----- PROCESSING FUNCTIONS ---------------------------------------
   
   ####################################################
   ####################################################
   
 =pod  =pod
   
Line 278  The returned structure is a hash referen Line 279  The returned structure is a hash referen
   symb   => 'symb',    symb   => 'symb',
   source => '/s/o/u/r/c/e',    source => '/s/o/u/r/c/e',
   type  => (container|assessment),    type  => (container|assessment),
     num_assess   => 2,               # only for container
   contents     => [ {},{},{},{} ], # only for container    contents     => [ {},{},{},{} ], # only for container
   parts        => [11,13,15],      # only for assessment    parts        => [11,13,15],      # only for assessment
   response_ids => [12,14,16]       # only for assessment    response_ids => [12,14,16],      # only for assessment
     contents     => [........]       # only for container
 }  }
   
 $hash->{'contents'} is a reference to an array of hashes of the same structure.  $hash->{'contents'} is a reference to an array of hashes of the same structure.
   
   Also returned are array references to the sequences and assessments contained
   in the course.
   
   
 =cut  =cut
   
   ####################################################
   ####################################################
 sub get_sequence_assessment_data {  sub get_sequence_assessment_data {
     return undef;  
     my $fn=$ENV{'request.course.fn'};      my $fn=$ENV{'request.course.fn'};
     &Apache::lonnet::logthis('filename = '.$fn);  
     ##      ##
     ## use navmaps      ## use navmaps
     my $navmap = Apache::lonnavmaps::navmap->new($fn.".db",$fn."_parms.db",      my $navmap = Apache::lonnavmaps::navmap->new($fn.".db",$fn."_parms.db",
Line 305  sub get_sequence_assessment_data { Line 312  sub get_sequence_assessment_data {
     ## We are going to loop until we run out of sequences/pages to explore for      ## We are going to loop until we run out of sequences/pages to explore for
     ## resources.  This means we have to start out with something to look      ## resources.  This means we have to start out with something to look
     ## at.      ## at.
     my $curRes = $iterator->next(); # BEGIN_MAP      my $title = $ENV{'course.'.$ENV{'request.course.id'}.'.description'};
     $curRes = $iterator->next(); # The sequence itself      my $symb  = 'top';
     #      my $src   = 'not applicable';
     my $title = $curRes->title();  
     my $symb  = $curRes->symb();  
     my $src   = $curRes->src();  
     #      #
       my @Sequences; 
       my @Assessments;
     my @Nested_Sequences = ();   # Stack of sequences, keeps track of depth      my @Nested_Sequences = ();   # Stack of sequences, keeps track of depth
     my $top = { title    => $title,      my $top = { title    => $title,
                   src      => $src,
                 symb     => $symb,                  symb     => $symb,
                 type     => 'container',                  type     => 'container',
                 num_assess => 0,                  num_assess => 0,
                 contents   => [], };                  contents   => [], };
       push (@Sequences,$top);
     push (@Nested_Sequences, $top);      push (@Nested_Sequences, $top);
     #      #
     # We need to keep track of which sequences contain homework problems      # We need to keep track of which sequences contain homework problems
     #       # 
       my $previous;
       my $curRes = $iterator->next(); # BEGIN_MAP
       $curRes = $iterator->next(); # The first item in the top level map.
     while (scalar(@Nested_Sequences)) {      while (scalar(@Nested_Sequences)) {
           $previous = $curRes;
         $curRes = $iterator->next();          $curRes = $iterator->next();
         my $currentmap = $Nested_Sequences[-1]; # Last one on the stack          my $currentmap = $Nested_Sequences[-1]; # Last one on the stack
         if ($curRes == $iterator->BEGIN_MAP()) {          if ($curRes == $iterator->BEGIN_MAP()) {
             # get the map itself, instead of BEGIN_MAP              # get the map itself, instead of BEGIN_MAP
             $curRes = $iterator->next();               $title = $previous->title();
             $title = $curRes->title();              $symb  = $previous->symb();
             $symb  = $curRes->symb();              $src   = $previous->src();
             $src   = $curRes->src();  
             my $newmap = { title    => $title,              my $newmap = { title    => $title,
                            src      => $src,                             src      => $src,
                            symb     => $symb,                             symb     => $symb,
Line 339  sub get_sequence_assessment_data { Line 350  sub get_sequence_assessment_data {
                            contents   => [],                             contents   => [],
                        };                         };
             push (@{$currentmap->{'contents'}},$newmap); # this is permanent              push (@{$currentmap->{'contents'}},$newmap); # this is permanent
               push (@Sequences,$newmap);
             push (@Nested_Sequences, $newmap); # this is a stack              push (@Nested_Sequences, $newmap); # this is a stack
             next;              next;
         }          }
Line 347  sub get_sequence_assessment_data { Line 359  sub get_sequence_assessment_data {
             next;              next;
         }          }
         next if (! ref($curRes));          next if (! ref($curRes));
         next if (! $curRes->is_problem() && !$curRes->randomout);          next if (! $curRes->is_problem());# && !$curRes->randomout);
         # Okay, from here on out we only deal with assessments          # Okay, from here on out we only deal with assessments
         $title = $curRes->title();          $title = $curRes->title();
         $symb  = $curRes->symb();          $symb  = $curRes->symb();
Line 358  sub get_sequence_assessment_data { Line 370  sub get_sequence_assessment_data {
                            symb  => $symb,                             symb  => $symb,
                            type  => 'assessment',                             type  => 'assessment',
                        };                         };
           push(@Assessments,$assessment);
         push(@{$currentmap->{'contents'}},$assessment);          push(@{$currentmap->{'contents'}},$assessment);
         $currentmap->{'num_assess'}++;          $currentmap->{'num_assess'}++;
     }      }
     return $top;      return ($top,\@Sequences,\@Assessments);
 }  }
   
   #################################################
   #################################################
   
 =pod  =pod
   
 =item &ProcessTopResourceMap()  =item &ProcessTopResourceMap()
Line 1611  sub get_current_state { Line 1627  sub get_current_state {
                 my $value = join(':',map { &Apache::lonnet::escape($_); }                   my $value = join(':',map { &Apache::lonnet::escape($_); } 
                                  @Parameters);                                   @Parameters);
                 # Store away the values                  # Store away the values
                 $cache{$key.&Apache::lonnet::escape($symb)}=$value;                  $cache{$key.&Apache::lonnet::escape($current_symb)}=$value;
             }              }
             $cache{$key.'time'}=$time_of_retrieval;              $cache{$key.'time'}=$time_of_retrieval;
             untie(%cache);              untie(%cache);
         }          }
     } else {      } else {
 #        &Apache::lonnet::logthis('retrieving cached data ');          &Apache::lonnet::logthis('retrieving cached data ');
         if (tie(%cache,'GDBM_File',$cachefilename,&GDBM_READER(),0640)) {          if (tie(%cache,'GDBM_File',$cachefilename,&GDBM_READER(),0640)) {
             if (defined($symb)) {              if (defined($symb)) {
                 my  $searchkey = $key.&Apache::lonnet::escape($symb);                  my  $searchkey = $key.&Apache::lonnet::escape($symb);
Line 1628  sub get_current_state { Line 1644  sub get_current_state {
                 my $searchkey = '^'.$key.'(.*)$';#'                  my $searchkey = '^'.$key.'(.*)$';#'
                 while (my ($testkey,$params)=each(%cache)) {                  while (my ($testkey,$params)=each(%cache)) {
                     if ($testkey =~ /$searchkey/) { # \Q \E?  May be necc.                      if ($testkey =~ /$searchkey/) { # \Q \E?  May be necc.
                         $student_data{&Apache::lonnet::unescape($1)} =                           my $tmpsymb = $1;
                           next if ($tmpsymb =~ 'time');
   #                        &Apache::lonnet::logthis('found '.$tmpsymb.':');
                           $student_data{&Apache::lonnet::unescape($tmpsymb)} = 
                             &make_into_hash($params);                              &make_into_hash($params);
                     }                      }
                 }                  }

Removed from v.1.47  
changed lines
  Added in v.1.52


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