Diff for /loncom/interface/Attic/lonspreadsheet.pm between versions 1.35 and 1.36

version 1.35, 2001/01/20 12:29:37 version 1.36, 2001/01/20 22:57:05
Line 6 Line 6
 # 01/01/01,02/01,03/01,19/01,20/01 Gerd Kortemeyer  # 01/01/01,02/01,03/01,19/01,20/01 Gerd Kortemeyer
   
 package Apache::lonspreadsheet;  package Apache::lonspreadsheet;
               
 use strict;  use strict;
 use Safe;  use Safe;
 use Safe::Hole;  use Safe::Hole;
Line 40  my %parmhash; Line 40  my %parmhash;
 my $includedir;  my $includedir;
 my $tmpdir;  my $tmpdir;
   
   
   sub mdeb {
       my $msg=shift;
       my $mem='';
       {
    my $mfh=Apache::File->new('/proc/'.$$.'/status');
           my $line;
           while ($line=<$mfh>) {
               my ($name,$value)=split(/\:/,$line);
       if ($name eq 'VmSize') { $mem=$value; }
           }
           $mfh->close();
       }
       print $msg.$mem."<br>\n";
   }
   
   
   
   
 # =============================================================================  # =============================================================================
 # ===================================== Implements an instance of a spreadsheet  # ===================================== Implements an instance of a spreadsheet
   
 sub initsheet {  sub initsheet {
     my $safeeval = new Safe;      my $safeeval = new Safe(shift);
     my $safehole = new Safe::Hole;      my $safehole = new Safe::Hole;
     $safeeval->permit("entereval");      $safeeval->permit("entereval");
     $safeeval->permit(":base_math");      $safeeval->permit(":base_math");
Line 61  sub initsheet { Line 80  sub initsheet {
 # c: preloaded constants (A-column)  # c: preloaded constants (A-column)
 # rl: row label  # rl: row label
   
 %v=();   undef %v; 
 %t=();  undef %t;
 %f=();  undef %f;
 %c=();  undef %c;
 %rl=();  undef %rl;
   
 $maxrow=0;  $maxrow=0;
 $sheettype='';  $sheettype='';
Line 779  sub readsheet { Line 798  sub readsheet {
   
 sub makenewsheet {  sub makenewsheet {
     my ($uname,$udom,$stype,$usymb)=@_;      my ($uname,$udom,$stype,$usymb)=@_;
     my $safeeval=initsheet();      my $safeeval=initsheet($stype);
     $safeeval->reval(      $safeeval->reval(
        '$uname="'.$uname.         '$uname="'.$uname.
       '";$udom="'.$udom.        '";$udom="'.$udom.
Line 1116  sub updatestudentassesssheet { Line 1135  sub updatestudentassesssheet {
         }          }
         $updatedata{$ENV{'request.course.fn'}.'_'.$stype}=          $updatedata{$ENV{'request.course.fn'}.'_'.$stype}=
     join('___;___',%current);      join('___;___',%current);
         undef %allkeys;  
         undef %allassess;  
     } else {      } else {
         return 'Could not access course data';          return 'Could not access course data';
     }      }
Line 1171  sub loadstudent { Line 1188  sub loadstudent {
     my $safeeval=shift;      my $safeeval=shift;
     my %c=();      my %c=();
     my %f=&getformulas($safeeval);      my %f=&getformulas($safeeval);
       my @assessdata=();
     map {      map {
  if ($_=~/^A(\d+)/) {   if ($_=~/^A(\d+)/) {
    my $row=$1;     my $row=$1;
            unless ($f{$_}=~/^\!/) {             unless ($f{$_}=~/^\!/) {
       my @assessdata=&exportsheet(&getuname($safeeval),        @assessdata=&exportsheet(&getuname($safeeval),
                                           &getudom($safeeval),                                         &getudom($safeeval),
                                           'assesscalc',$f{$_});                                         'assesscalc',$f{$_});
               my $index=0;                my $index=0;
               map {                map {
                   if ($assessdata[$index]) {                    if ($assessdata[$index]) {
Line 1205  sub loadcourse { Line 1223  sub loadcourse {
     map {      map {
  if ($_=~/^A(\d+)/) {   if ($_=~/^A(\d+)/) {
    my $row=$1;     my $row=$1;
            unless (($f{$_}=~/^\!/)             unless ($f{$_}=~/^\!/) {
 || ($row>200))  
  {  
       my @studentdata=&exportsheet(&getuname($safeeval),        my @studentdata=&exportsheet(&getuname($safeeval),
                                            &getudom($safeeval),                                             &getudom($safeeval),
                                            'studentcalc');                                             'studentcalc');
Line 1287  sub loadassessment { Line 1303  sub loadassessment {
          my ($name,$value)=split(/\=/,$_);           my ($name,$value)=split(/\=/,$_);
          $courseopt{$userprefix.&Apache::lonnet::unescape($name)}=           $courseopt{$userprefix.&Apache::lonnet::unescape($name)}=
                     &Apache::lonnet::unescape($value);                        &Apache::lonnet::unescape($value);  
       } split(/\&/,$courserdatas{$ENV{'request.course.id'}});        } split(/\&/,$courserdatas{$cid});
 # --------------------------------------------------- Get userdata (if present)  # --------------------------------------------------- Get userdata (if present)
       unless        unless
         ((time-$userrdatas{$uname.'___'.$udom.'.last_cache'})<240) {          ((time-$userrdatas{$uname.'___'.$udom.'.last_cache'})<240) {
Line 1394  sub loadrows() { Line 1410  sub loadrows() {
 #  #
   
 sub exportsheet {  sub exportsheet {
    
     my ($uname,$udom,$stype,$usymb,$fn)=@_;      my ($uname,$udom,$stype,$usymb,$fn)=@_;
     my $thissheet=&makenewsheet($uname,$udom,$stype,$usymb);      my $thissheet=&makenewsheet($uname,$udom,$stype,$usymb);
     &readsheet($thissheet,$fn);      &readsheet($thissheet,$fn);
     &updatesheet($thissheet);      &updatesheet($thissheet);
     &loadrows($thissheet);      &loadrows($thissheet);
     &calcsheet($thissheet);      &calcsheet($thissheet);
     my @returnthis=&exportdata($thissheet);      return &exportdata($thissheet);
     undef $thissheet;  
     return @returnthis;  
 }  }
   
 # ================================================================ Main handler  # ================================================================ Main handler
Line 1576  ENDSCRIPT Line 1591  ENDSCRIPT
   
 # ----------------------------------------------------- Update sheet, load rows  # ----------------------------------------------------- Update sheet, load rows
   
       $r->print("Loaded sheet, updating rows ...<br>\n");
       $r->rflush();
   
     &updatesheet($asheet);      &updatesheet($asheet);
   
       $r->print("Updated rows, loading row data ...<br>\n");
       $r->rflush();
   
     &loadrows($asheet);      &loadrows($asheet);
   
       $r->print("Loaded row data, calculating sheet ...<br>\n");
       $r->rflush();
   
     my $calcoutput=&calcsheet($asheet);      my $calcoutput=&calcsheet($asheet);
     $r->print('<h3><font color=red>'.$calcoutput.'</h3></font>');      $r->print('<h3><font color=red>'.$calcoutput.'</h3></font>');

Removed from v.1.35  
changed lines
  Added in v.1.36


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