Diff for /loncom/interface/spreadsheet/assesscalc.pm between versions 1.21 and 1.22

version 1.21, 2003/09/10 18:33:35 version 1.22, 2003/09/12 19:00:54
Line 90  use Time::HiRes; Line 90  use Time::HiRes;
 ########################################################  ########################################################
   
 my %Exportrows;  my %Exportrows;
   my %newExportrows;
   
 my $current_name;  my $current_name;
 my $current_domain;  my $current_domain;
Line 99  my %parmhash; Line 100  my %parmhash;
 my %nice_parameter_name;  my %nice_parameter_name;
   
 my %useropt;  my %useropt;
   my %userdata;
 my %courseopt;  my %courseopt;
   
 ########################################################  ########################################################
Line 110  my %courseopt; Line 112  my %courseopt;
   
 =item &clear_package()  =item &clear_package()
   
 Reset all package variables.    Reset all package variables and clean up caches.
   
 =cut  =cut
   
 ########################################################  ########################################################
 ########################################################  ########################################################
 sub clear_package {  sub clear_package {
       if (defined($current_name) &&
           defined($current_domain) &&
           defined($current_course) &&
           $current_course eq $ENV{'request.course.id'} &&
           %newExportrows) {
           &save_cached_export_rows($current_name,$current_domain);
       }
     undef(%Exportrows);      undef(%Exportrows);
       undef(%newExportrows);
     undef($current_name);      undef($current_name);
     undef($current_domain);      undef($current_domain);
     undef($current_course);      undef($current_course);
     undef(%useropt);      undef(%useropt);
       undef(%userdata);
     undef(%courseopt);      undef(%courseopt);
 }  }
   
   sub save_cached_export_rows {
       my ($sname,$sdomain) = @_;
       my $start = Time::HiRes::time;
       my $result = &Apache::lonnet::put
           ('nohist_calculatedsheets_'.$ENV{'request.course.id'},
            $newExportrows{$sname.':'.$sdomain},
            $sdomain,$sname);
       delete($newExportrows{$sname.':'.$sdomain});
   }
   
 sub initialize {  sub initialize {
     &clear_package();      &clear_package();
 }  }
Line 145  sub initialize_package { Line 166  sub initialize_package {
     $current_name   = $sname;      $current_name   = $sname;
     $current_domain = $sdomain;      $current_domain = $sdomain;
     undef(%useropt);      undef(%useropt);
       undef(%userdata);
     if ($current_course ne $ENV{'request.course.id'}) {      if ($current_course ne $ENV{'request.course.id'}) {
         $current_course = $ENV{'request.course.id'};          $current_course = $ENV{'request.course.id'};
         undef(%courseopt);          undef(%courseopt);
Line 153  sub initialize_package { Line 175  sub initialize_package {
     &load_parameter_caches();      &load_parameter_caches();
 }  }
   
   
 ########################################################  ########################################################
 ########################################################  ########################################################
   
Line 194  sub load_parameter_caches { Line 217  sub load_parameter_caches {
         }          }
         $useropt{'loadtime'} = time;          $useropt{'loadtime'} = time;
     }      }
       if (! %userdata) {
           %userdata = &Apache::loncoursedata::get_current_state($current_name,
                                                                 $current_domain);
           $userdata{'loadtime'} = time;
       }
       return;
 }  }
   
 ########################################################  ########################################################
Line 207  sub load_parameter_caches { Line 236  sub load_parameter_caches {
   
 ########################################################  ########################################################
 ########################################################  ########################################################
 sub ensure_current_parameter_caches {  sub ensure_current_caches {
     my $self = shift;      my $self = shift;
     ##      ##
     ## Check for a modified parameters      ## Check for a modified parameters
Line 216  sub ensure_current_parameter_caches { Line 245  sub ensure_current_parameter_caches {
         $current_course ne $ENV{'request.course.id'} ) {          $current_course ne $ENV{'request.course.id'} ) {
         $current_course = $ENV{'request.course.id'};          $current_course = $ENV{'request.course.id'};
         undef(%courseopt);           undef(%courseopt); 
           undef(%useropt);
           undef(%userdata);
     }      }
     ##      ##
     ## Check for new user      ## Check for new user
Line 225  sub ensure_current_parameter_caches { Line 256  sub ensure_current_parameter_caches {
         $current_domain = $self->{'domain'};          $current_domain = $self->{'domain'};
         $current_name   = $self->{'name'};          $current_name   = $self->{'name'};
         undef(%useropt);          undef(%useropt);
           undef(%userdata);
     }      }
     &load_parameter_caches();      &load_parameter_caches();
 }  }
Line 587  sub deal_with_export_row { Line 619  sub deal_with_export_row {
     return;      return;
 }  }
   
   sub get_problem_state {
       my $self = shift;
       my %student_parameters;
       if (exists($userdata{$self->{'symb'}}) && 
           ref($userdata{$self->{'symb'}}) eq 'HASH') {
           %student_parameters = %{$userdata{$self->{'symb'}}};
       }
       return %student_parameters;
   }
   
 sub compute {  sub compute {
     my $self = shift;      my $self = shift;
     my ($r) = @_;      my ($r) = @_;
     my $connection = $r->connection();      my $connection = $r->connection();
     if ($connection->aborted()) { $self->cleanup(); return; }      if ($connection->aborted()) { $self->cleanup(); return; }
 #    $self->logthis('computing');  
     $self->initialize_safe_space();      $self->initialize_safe_space();
     #########################################      #########################################
     #########################################      #########################################
Line 622  sub compute { Line 662  sub compute {
     #      #
     # Get the values of the metadata fields      # Get the values of the metadata fields
     if ($connection->aborted()) { $self->cleanup(); return; }      if ($connection->aborted()) { $self->cleanup(); return; }
     $self->ensure_current_parameter_caches();      $self->ensure_current_caches();
     if ($connection->aborted()) { $self->cleanup(); return; }      if ($connection->aborted()) { $self->cleanup(); return; }
     %parameters = $self->get_parameter_values(keys(%parameters));      %parameters = $self->get_parameter_values(keys(%parameters));
     if ($connection->aborted()) { $self->cleanup(); return; }      if ($connection->aborted()) { $self->cleanup(); return; }
Line 633  sub compute { Line 673  sub compute {
     }      }
     #      #
     # Get the students performance data      # Get the students performance data
     my %student_parameters =       my %student_parameters = $self->get_problem_state();
         &Apache::loncoursedata::get_current_state($self->{'name'},  
                                                   $self->{'domain'},  
                                                   $self->{'symb'},  
                                                   $self->{'cid'});  
     while (my ($parm,$value) = each(%student_parameters)) {      while (my ($parm,$value) = each(%student_parameters)) {
         $parm =~ s/^resource\./stores_/;          $parm =~ s/^resource\./stores_/;
         $parm =~ s/\./_/g;          $parm =~ s/\./_/g;
Line 840  sub save_export_data { Line 876  sub save_export_data {
     }      }
     my $key = join(':',($self->{'name'},$self->{'domain'},'assesscalc',$symb));      my $key = join(':',($self->{'name'},$self->{'domain'},'assesscalc',$symb));
     my $timekey = $key.'.time';      my $timekey = $key.'.time';
     my $newstore= join('___;___',@{$Exportrows{$symb}->{$self->{'filename'}}});      my $newstore= join('___;___',
                          map {s/[^[:print:]]//g;$_;} # strip out unprintable
                                   @{$Exportrows{$symb}->{$self->{'filename'}}});
     $newstore = $self->{'filename'}.'___=___'.$newstore;      $newstore = $self->{'filename'}.'___=___'.$newstore;
     my $result = &Apache::lonnet::put      $newExportrows{$student}->{$key} = $newstore;
         ('nohist_calculatedsheets_'.$ENV{'request.course.id'},      $newExportrows{$student}->{$timekey} = $Exportrows{$symb}->{'time'};
          { $key     => $newstore,  
            $timekey => $Exportrows{$symb}->{'time'} },  
          $self->{'domain'},  
          $self->{'name'});  
   
     return;      return;
 }  }
   

Removed from v.1.21  
changed lines
  Added in v.1.22


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