Diff for /loncom/interface/spreadsheet/assesscalc.pm between versions 1.18 and 1.20

version 1.18, 2003/09/05 01:06:45 version 1.20, 2003/09/09 18:46:28
Line 208  sub load_parameter_caches { Line 208  sub load_parameter_caches {
 ########################################################  ########################################################
 sub ensure_current_parameter_caches {  sub ensure_current_parameter_caches {
     my $self = shift;      my $self = shift;
       ##
       ## Check for a modified parameters
       ##
     if (! defined($current_course) ||       if (! defined($current_course) || 
         $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); 
     }      }
       ##
       ## Check for new user
       ##
     if (! defined($current_name)   || $current_name ne $self->{'name'} ||      if (! defined($current_name)   || $current_name ne $self->{'name'} ||
         ! defined($current_domain) || $current_domain ne $self->{'domain'}) {          ! defined($current_domain) || $current_domain ne $self->{'domain'}) {
         $current_domain = $self->{'domain'};          $current_domain = $self->{'domain'};
Line 257  sub parmval { Line 263  sub parmval {
     my $result='';      my $result='';
     #      #
     # This should be a       # This should be a 
     my ($mapname,$id,$fn)=split(/___/,$symb);      my ($mapname,$id,$fn)=&Apache::lonnet::decode_symb($symb);
     # Cascading lookup scheme      # Cascading lookup scheme
     my $rwhat=$what;      my $rwhat=$what;
     $what =~ s/^parameter\_//;      $what =~ s/^parameter\_//;
Line 518  sub excel_rows { Line 524  sub excel_rows {
   
 sub compute {  sub compute {
     my $self = shift;      my $self = shift;
       my ($r) = @_;
       my $connection = $r->connection();
       if ($connection->aborted()) { $self->cleanup(); return; }
 #    $self->logthis('computing');  #    $self->logthis('computing');
     $self->initialize_safe_space();      $self->initialize_safe_space();
     #########################################      #########################################
Line 539  sub compute { Line 548  sub compute {
     my %parameters;   # holds underscored parameters by name      my %parameters;   # holds underscored parameters by name
     #      #
     # Get the metadata fields and determine their proper names      # Get the metadata fields and determine their proper names
     my ($symap,$syid,$srcf)=split(/___/,$self->{'symb'});      my ($symap,$syid,$srcf)=&Apache::lonnet::decode_symb($self->{'symb'});
     my @Metadata = split(/\,/,&Apache::lonnet::metadata($srcf,'keys'));      my @Metadata = split(/\,/,&Apache::lonnet::metadata($srcf,'keys'));
     foreach my $parm (@Mandatory_parameters,@Metadata) {      foreach my $parm (@Mandatory_parameters,@Metadata) {
         next if ($parm !~ /^(resource\.|stores|parameter)_/);          next if ($parm !~ /^(resource\.|stores|parameter)_/);
Line 556  sub compute { Line 565  sub compute {
     }      }
     #      #
     # Get the values of the metadata fields      # Get the values of the metadata fields
       if ($connection->aborted()) { $self->cleanup(); return; }
     $self->ensure_current_parameter_caches();      $self->ensure_current_parameter_caches();
       if ($connection->aborted()) { $self->cleanup(); return; }
     my $filename = $self->{'coursefilename'}.'_parms.db';      my $filename = $self->{'coursefilename'}.'_parms.db';
     if (tie(%parmhash,'GDBM_File',      if (tie(%parmhash,'GDBM_File',
             $self->{'coursefilename'}.'_parms.db',&GDBM_READER(),0640)) {              $self->{'coursefilename'}.'_parms.db',&GDBM_READER(),0640)) {
Line 568  sub compute { Line 579  sub compute {
     } else {      } else {
         $self->logthis('unable to tie '.$filename);          $self->logthis('unable to tie '.$filename);
     }      }
       if ($connection->aborted()) { $self->cleanup(); return; }
     #      #
     # Clean out unnecessary parameters      # Clean out unnecessary parameters
     foreach (keys(%parameters)) {      foreach (keys(%parameters)) {
Line 602  sub compute { Line 614  sub compute {
             }              }
         }          }
     }      }
       if ($connection->aborted()) { $self->cleanup(); return; }
     #      #
     # Move the parameters into the spreadsheet      # Move the parameters into the spreadsheet
       if ($connection->aborted()) { $self->cleanup(); return; }
     while (my ($parm,$value) = each(%parameters)) {      while (my ($parm,$value) = each(%parameters)) {
         my $cell = 'A'.$self->get_row_number_from_key($parm);          my $cell = 'A'.$self->get_row_number_from_key($parm);
         $f{$cell} = $parm;          $f{$cell} = $parm;
Line 612  sub compute { Line 626  sub compute {
     }      }
     $self->formulas(\%f);      $self->formulas(\%f);
     $self->constants(\%c);      $self->constants(\%c);
       if ($connection->aborted()) { $self->cleanup(); return; }
     $self->calcsheet();      $self->calcsheet();
     #      #
     # Store export row in cache      # Store export row in cache
Line 622  sub compute { Line 637  sub compute {
     # Save the export data      # Save the export data
     $self->save_export_data();      $self->save_export_data();
     $self->save() if ($self->need_to_save());      $self->save() if ($self->need_to_save());
       if ($connection->aborted()) { $self->cleanup(); return; }
     return;      return;
 }  }
   
Line 731  spreadsheet only if necessary. Line 747  spreadsheet only if necessary.
 #############################################  #############################################
 sub export_data {  sub export_data {
     my $self = shift;      my $self = shift;
       my ($r) = @_;
       my $connection = $r->connection();
     my $symb = $self->{'symb'};      my $symb = $self->{'symb'};
     if (! exists($ENV{'request.role.adv'}) || ! $ENV{'request.role.adv'} ||      if (! exists($ENV{'request.role.adv'}) || ! $ENV{'request.role.adv'} ||
         ! exists($Exportrows{$symb}) || ! defined($Exportrows{$symb})  ||          ! exists($Exportrows{$symb}) || ! defined($Exportrows{$symb})  ||
Line 739  sub export_data { Line 757  sub export_data {
         ! defined($Exportrows{$symb}->{$self->{'filename'}}) ||          ! defined($Exportrows{$symb}->{$self->{'filename'}}) ||
         ! ref($Exportrows{$symb}->{$self->{'filename'}})           ! ref($Exportrows{$symb}->{$self->{'filename'}}) 
         ) {          ) {
         $self->compute();          $self->compute($r);
     }      }
       if ($connection->aborted()) { $self->cleanup(); return; }
     my @Data = @{$Exportrows{$symb}->{$self->{'filename'}}};      my @Data = @{$Exportrows{$symb}->{$self->{'filename'}}};
     if ($Data[0] =~ /^(.*)___=___/) {      if ($Data[0] =~ /^(.*)___=___/) {
         $self->{'sheetname'} = $1;          $self->{'sheetname'} = $1;

Removed from v.1.18  
changed lines
  Added in v.1.20


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