--- loncom/interface/Attic/lonspreadsheet.pm 2001/01/02 22:35:30 1.30 +++ loncom/interface/Attic/lonspreadsheet.pm 2001/01/20 01:07:03 1.34 @@ -3,7 +3,7 @@ # # 11/11,11/15,11/27,12/04,12/05,12/06,12/07, # 12/08,12/09,12/11,12/12,12/15,12/16,12/18,12/19,12/30, -# 01/01/01,02/01 Gerd Kortemeyer +# 01/01/01,02/01,03/01,19/01 Gerd Kortemeyer package Apache::lonspreadsheet; @@ -20,7 +20,11 @@ use HTML::TokeParser; # These cache hashes need to be independent of user, resource and course # (user and course can/should be in the keys) # -use vars qw(%spreadsheets %courserdatas %userrdatas %defaultsheets); + +my %spreadsheets; +my %courserdatas; +my %userrdatas; +my %defaultsheets; # # These global hashes are dependent on user, course and resource, @@ -423,22 +427,22 @@ ENDDEFS # ------------------------------------------------ Add or change formula values sub setformulas { - my ($safeeval,@f)=@_; - $safeeval->reval('%f='."('".join("','",@f)."');"); + my ($safeeval,%f)=@_; + %{$safeeval->varglob('f')}=%f; } # ------------------------------------------------ Add or change formula values sub setconstants { - my ($safeeval,@c)=@_; - $safeeval->reval('%c='."('".join("','",@c)."');"); + my ($safeeval,%c)=@_; + %{$safeeval->varglob('c')}=%c; } # ------------------------------------------------ Add or change formula values sub setrowlabels { - my ($safeeval,@rl)=@_; - $safeeval->reval('%rl='."('".join("','",@rl)."');"); + my ($safeeval,%rl)=@_; + %{$safeeval->varglob('rl')}=%rl; } # ------------------------------------------------------- Calculate spreadsheet @@ -459,7 +463,7 @@ sub getvalues { sub getformulas { my $safeeval=shift; - return $safeeval->reval('%f'); + return %{$safeeval->varglob('f')}; } # -------------------------------------------------------------------- Get type @@ -1191,12 +1195,13 @@ sub loadcourse { my $row=$1; unless (($f{$_}=~/^\!/) -|| ($row>5)) +|| ($row>200)) { my @studentdata=&exportsheet(&getuname($safeeval), &getudom($safeeval), 'studentcalc'); + undef %userrdatas; my $index=0; map { if ($studentdata[$index]) { @@ -1252,15 +1257,15 @@ sub loadassessment { # ----------------------------- returnhash now has all stores for this resource # ---------------------------- initialize coursedata and userdata for this user - %courseopt=(); - %useropt=(); + undef %courseopt; + undef %useropt; my $userprefix=$uname.'_'.$udom.'_'; unless ($uhome eq 'no_host') { # -------------------------------------------------------------- Get coursedata unless - ((time-$courserdatas{$cid.'.last_cache'})<120) { + ((time-$courserdatas{$cid.'.last_cache'})<240) { my $reply=&Apache::lonnet::reply('dump:'.$cdom.':'.$cnum. ':resourcedata',$chome); if ($reply!~/^error\:/) { @@ -1275,7 +1280,7 @@ sub loadassessment { } split(/\&/,$courserdatas{$ENV{'request.course.id'}}); # --------------------------------------------------- Get userdata (if present) unless - ((time-$userrdatas{$uname.'___'.$udom.'.last_cache'})<120) { + ((time-$userrdatas{$uname.'___'.$udom.'.last_cache'})<240) { my $reply= &Apache::lonnet::reply('dump:'.$udom.':'.$uname.':resourcedata',$uhome); if ($reply!~/^error\:/) { @@ -1385,7 +1390,9 @@ sub exportsheet { &updatesheet($thissheet); &loadrows($thissheet); &calcsheet($thissheet); - return &exportdata($thissheet); + my @returnthis=&exportdata($thissheet); + undef $thissheet; + return @returnthis; } # ================================================================ Main handler @@ -1569,6 +1576,9 @@ ENDSCRIPT &outsheet($r,$asheet); $r->print(''); +# --------------------------------- We know this leaks, so terminate this child + + $r->child_terminate(); # ------------------------------------------------------------------------ Done } else {