--- loncom/lonnet/perl/lonnet.pm 2000/08/28 22:21:24 1.25 +++ loncom/lonnet/perl/lonnet.pm 2000/09/01 21:34:27 1.26 @@ -6,7 +6,7 @@ # plaintext(short) : plain text explanation of short term # fileembstyle(ext) : embed style in page for file extension # filedescription(ext) : descriptor text for file extension -# allowed(short,url) : returns codes for allowed actions F,R,S,C +# allowed(short,url) : returns codes for allowed actions F,R,S,X,C # definerole(rolename,sys,dom,cou) : define a custom role rolename # set priviledges in format of lonTabs/roles.tab for # system, domain and course level, @@ -29,6 +29,7 @@ # hash # repcopy(filename) : replicate file # dirlist(url) : gets a directory listing +# condval(index) : value of condition index based on state # # 6/1/99,6/2,6/10,6/11,6/12,6/14,6/26,6/28,6/29,6/30, # 7/1,7/2,7/9,7/10,7/12,7/14,7/15,7/19, @@ -40,7 +41,7 @@ # 06/26 Ben Tyszka # 06/30,07/15,07/17,07/18,07/20,07/21,07/22,07/25 Gerd Kortemeyer # 08/14 Ben Tyszka -# 08/22,08/28 Gerd Kortemeyer +# 08/22,08/28,08/31,09/01 Gerd Kortemeyer package Apache::lonnet; @@ -761,6 +762,43 @@ sub dirlist { } } +# -------------------------------------------------------- Value of a Condition + +sub condval { + my $condidx=shift; + my $result=0; + if ($ENV{'request.course'}) { + if ($ENV{'acc.cond.'.$ENV{'request.course'}.'.'.$condidx}) { + my $operand='|'; + my @stack; + map { + if ($_ eq '(') { + push @stack,($operand,$result) + } elsif ($_ eq ')') { + my $before=pop @stack; + if (pop @stack eq '&') { + $result=$result>$before?$before:$result; + } else { + $result=$result>$before?$result:$before; + } + } elsif (($_ eq '&') || ($_ eq '|')) { + $operand=$_; + } else { + my $new= + substr($ENV{'user.state.'.$ENV{'request.course'}},$_,1); + if ($operand eq '&') { + $result=$result>$new?$new:$result; + } else { + $result=$result>$new?$result:$new; + } + } + } ($ENV{'acc.cond.'.$ENV{'request.course'}.'.'.$condidx}=~ + /(\d+|\(|\)|\&|\|)/g); + } + } + return $result; +} + # -------------------------------------------------------- Escape Special Chars sub escape {