Diff for /loncom/interface/loncoursedata.pm between versions 1.48 and 1.55

version 1.48, 2003/02/14 21:45:19 version 1.55, 2003/03/03 21:52:24
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),
   contents     => [ {},{},{},{} ], # only for container    num_assess   => 2,               # 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 311  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,
                   num_assess_parts => 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 357  sub get_sequence_assessment_data { Line 369  sub get_sequence_assessment_data {
                            src   => $src,                             src   => $src,
                            symb  => $symb,                             symb  => $symb,
                            type  => 'assessment',                             type  => 'assessment',
                              parts => $parts,
                              num_parts => scalar(@$parts),
                        };                         };
           push(@Assessments,$assessment);
         push(@{$currentmap->{'contents'}},$assessment);          push(@{$currentmap->{'contents'}},$assessment);
         $currentmap->{'num_assess'}++;          $currentmap->{'num_assess'}++;
           $currentmap->{'num_assess_parts'}+= scalar(@$parts);
     }      }
     return $top;      return ($top,\@Sequences,\@Assessments);
 }  }
   
   #################################################
   #################################################
   
 =pod  =pod
   
 =item &ProcessTopResourceMap()  =item &ProcessTopResourceMap()
Line 1289  sub DownloadStudentCourseData { Line 1308  sub DownloadStudentCourseData {
     $WhatIWant .= ')';      $WhatIWant .= ')';
 #    $WhatIWant = '.';  #    $WhatIWant = '.';
   
       my %prog_state;
     if($status eq 'true') {      if($status eq 'true') {
         &Apache::lonhtmlcommon::Create_PrgWin($r, $title, $heading);          %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r, $title,
          $heading,($#$students)+1);
     }      }
   
     my $displayString;  
     my $count=0;  
     foreach (@$students) {      foreach (@$students) {
         my %cache;          my %cache;
   
         if($c->aborted()) { return 'Aborted'; }          if($c->aborted()) { return 'Aborted'; }
   
         if($status eq 'true') {          if($status eq 'true') {
             $count++;              &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
             my $displayString = $count.'/'.$studentCount.': '.$_;    'last student '.$_);
             &Apache::lonhtmlcommon::Update_PrgWin($displayString, $r);  
         }          }
   
         my $downloadTime='Not downloaded';          my $downloadTime='Not downloaded';
Line 1340  sub DownloadStudentCourseData { Line 1358  sub DownloadStudentCourseData {
     next;      next;
  }   }
     }      }
     if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r); }      if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); }
   
     return 'OK';      return 'OK';
 }  }
Line 1361  sub DownloadStudentCourseDataSeparate { Line 1379  sub DownloadStudentCourseDataSeparate {
     &CheckForResidualDownload($cacheDB, 'true', 'true', $courseID, $r, $c);      &CheckForResidualDownload($cacheDB, 'true', 'true', $courseID, $r, $c);
   
     my $studentCount = scalar(@$students);      my $studentCount = scalar(@$students);
       my %prog_state;
     if($status eq 'true') {      if($status eq 'true') {
         &Apache::lonhtmlcommon::Create_PrgWin($r, $title, $heading);          %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r, $title,
        $heading,($#$students)+1);
     }      }
     my $count=0;  
     my $displayString='';      my $displayString='';
     foreach (@$students) {      foreach (@$students) {
         if($c->aborted()) {          if($c->aborted()) {
Line 1372  sub DownloadStudentCourseDataSeparate { Line 1391  sub DownloadStudentCourseDataSeparate {
         }          }
   
         if($status eq 'true') {          if($status eq 'true') {
             $count++;              &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
             $displayString = $count.'/'.$studentCount.': '.$_;    'last student '.$_);
             &Apache::lonhtmlcommon::Update_PrgWin($displayString, $r);  
         }          }
   
         my %cache;          my %cache;
Line 1419  sub DownloadStudentCourseDataSeparate { Line 1437  sub DownloadStudentCourseDataSeparate {
         }          }
         untie(%downloadData);          untie(%downloadData);
     }      }
     if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r); }      if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r,
     \%prog_state); }
   
     return &CheckForResidualDownload($cacheDB, 'true', 'true',       return &CheckForResidualDownload($cacheDB, 'true', 'true', 
                                      $courseID, $r, $c);                                       $courseID, $r, $c);
Line 1458  sub CheckForResidualDownload { Line 1477  sub CheckForResidualDownload {
     my $heading = 'Process Course Data';      my $heading = 'Process Course Data';
     my $title = 'LON-CAPA Statistics';      my $title = 'LON-CAPA Statistics';
     my $studentCount = scalar(@students);      my $studentCount = scalar(@students);
       my %prog_state;
     if($status eq 'true') {      if($status eq 'true') {
         &Apache::lonhtmlcommon::Create_PrgWin($r, $title, $heading);          %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r, $title,
         $heading,$#students+1);
     }      }
   
     my $count=1;      my $count=1;
Line 1467  sub CheckForResidualDownload { Line 1488  sub CheckForResidualDownload {
         last if($c->aborted());          last if($c->aborted());
   
         if($status eq 'true') {          if($status eq 'true') {
             my $displayString = $count.'/'.$studentCount.': '.$name;      &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
             &Apache::lonhtmlcommon::Update_PrgWin($displayString, $r);       'last student '.$name);
         }          }
   
         if($extract eq 'true') {          if($extract eq 'true') {
Line 1479  sub CheckForResidualDownload { Line 1500  sub CheckForResidualDownload {
         $count++;          $count++;
     }      }
   
     if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r); }      if($status eq 'true') { &Apache::lonhtmlcommon::Close_PrgWin($r,
      \%prog_state); }
   
     untie(%cache);      untie(%cache);
     untie(%downloadData);      untie(%downloadData);
Line 1668  $ENV{'course.'.$cid.'.domain'}, and $ENV Line 1690  $ENV{'course.'.$cid.'.domain'}, and $ENV
   
 Returns a reference to a hash which contains:  Returns a reference to a hash which contains:
  keys    '$sname:$sdom'   keys    '$sname:$sdom'
  values  [$end,$start,$id,$section,$fullname]   values  [$sdom,$sname,$end,$start,$id,$section,$fullname,$status]
   
   The constant values CL_SDOM, CL_SNAME, CL_END, etc. can be used
   as indices into the returned list to future-proof clients against
   changes in the list order.
   
 =cut  =cut
   
 ################################################  ################################################
 ################################################  ################################################
   
   sub CL_SDOM     { return 0; }
   sub CL_SNAME    { return 1; }
   sub CL_END      { return 2; }
   sub CL_START    { return 3; }
   sub CL_ID       { return 4; }
   sub CL_SECTION  { return 5; }
   sub CL_FULLNAME { return 6; }
   sub CL_STATUS   { return 7; }
   
 sub get_classlist {  sub get_classlist {
     my ($cid,$cdom,$cnum) = @_;      my ($cid,$cdom,$cnum) = @_;
     $cid = $cid || $ENV{'request.course.id'};      $cid = $cid || $ENV{'request.course.id'};

Removed from v.1.48  
changed lines
  Added in v.1.55


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