--- loncom/interface/lonparmset.pm 2005/06/02 13:15:05 1.198 +++ loncom/interface/lonparmset.pm 2005/06/02 13:34:14 1.199 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.198 2005/06/02 13:15:05 www Exp $ +# $Id: lonparmset.pm,v 1.199 2005/06/02 13:34:14 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -66,12 +66,12 @@ use Apache::lonnavmaps; # --- Caches local to lonparmset -my $courseoptid=''; -my %courseopt=(); -my $useroptid=''; -my %useropt=(); -my $parmhashid=''; -my %parmhash=(); +my $courseoptid; +my %courseopt; +my $useroptid; +my %useropt; +my $parmhashid; +my %parmhash; # --- end local caches @@ -121,6 +121,8 @@ sub parmval { my ($what,$id,$def,$uname,$udom,$csec)=@_; # load caches &cacheparmhash(); + &cacheuseropt($uname,$udom); + &cachecourseopt(); my $result=''; my @outpar=(); @@ -218,11 +220,29 @@ sub cacheparmhash { } } +sub resetuseropt { + $useroptid=''; +} + sub cacheuseropt { my ($uname,$udom)=@_; + unless ($uname) { return; } + if ($useroptid eq $uname.'@'.$udom) { return; } + %useropt=&Apache::lonnet::dump('resourcedata',$udom,$uname); + $useroptid=$uname.'@'.$udom; +} + +sub resetcourseopt { + $courseoptid=''; } sub cachecourseopt { + if ($courseoptid eq $env{'request.course.id'}) { return; }; + %courseopt = &Apache::lonnet::dump + ('resourcedata', + $env{'course.'.$env{'request.course.id'}.'.domain'}, + $env{'course.'.$env{'request.course.id'}.'.num'}); + $courseoptid=$env{'request.course.id'}; } ################################################## @@ -305,6 +325,7 @@ sub storeparm_by_symb { } else { &Apache::lonnet::expirespread('','','assesscalc'); } + &resetcourseopt(); # Store parameter if ($delete) { $reply=&Apache::lonnet::del @@ -331,6 +352,7 @@ sub storeparm_by_symb { } else { &Apache::lonnet::expirespread($uname,$udom,'assesscalc'); } + &resetuseropt(); # Store parameter if ($delete) { $reply=&Apache::lonnet::del @@ -859,8 +881,6 @@ sub assessparms { my %allparts; my %defp; - %courseopt=(); - %useropt=(); @ids=(); %symbp=(); @@ -982,15 +1002,6 @@ sub assessparms { $env{'course.'.$env{'request.course.id'}.'.num'}, $env{'course.'.$env{'request.course.id'}.'.domain'}); #&Apache::lonnet::clear_EXT_cache_status(); -# -------------------------------------------------------------- Get coursedata - %courseopt = &Apache::lonnet::dump - ('resourcedata', - $env{'course.'.$env{'request.course.id'}.'.domain'}, - $env{'course.'.$env{'request.course.id'}.'.num'}); -# --------------------------------------------------- Get userdata (if present) - if ($uname) { - %useropt=&Apache::lonnet::dump('resourcedata',$udom,$uname); - } # ------------------------------------------------------------------- Sort this @@ -2207,9 +2218,6 @@ sub handler { # ----------------------------------------------------------- Clear out garbage - %courseopt=(); - %useropt=(); - %parmhash=(); @ids=(); %symbp=();