--- rat/lonuserstate.pm 2004/04/23 15:23:35 1.73 +++ rat/lonuserstate.pm 2005/01/19 20:18:44 1.78.2.1 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Construct and maintain state and binary representation of course for user # -# $Id: lonuserstate.pm,v 1.73 2004/04/23 15:23:35 www Exp $ +# $Id: lonuserstate.pm,v 1.78.2.1 2005/01/19 20:18:44 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -160,12 +160,11 @@ sub loadmap { if ($token->[2]->{'external'} eq 'true') { # external $turi=~s/^http\:\/\//\/adm\/wrapper\/ext\//; } elsif ($turi=~/^\/*uploaded\//) { # uploaded - if (($embstyle eq 'img') || ($embstyle eq 'emb') - || ($embstyle eq 'ssi')) { - unless ($turi =~/\.page$/) { - $turi='/adm/wrapper'.$turi; - } - } elsif ($turi!~/\.(sequence|page)$/) { + if (($embstyle eq 'img') || ($embstyle eq 'emb')) { + $turi='/adm/wrapper'.$turi; + } elsif ($embstyle eq 'ssi') { + #do nothing with these + } elsif ($turi!~/\.(sequence|page)$/) { $turi='/adm/coursedocs/showdoc'.$turi; } } elsif ($turi=~/\S/) { # normal non-empty internal resource @@ -279,20 +278,24 @@ sub loadmap { } else { $hash{'param_'.$referid}=''.$newparam; } - if ($token->[2]->{'name'} eq 'parameter_mapalias') { + if ($token->[2]->{'name'}=~/^parameter_(0_)*mapalias$/) { $hash{'mapalias_'.$token->[2]->{'value'}}=$referid; } - if ($token->[2]->{'name'} eq 'parameter_randompick') { + if ($token->[2]->{'name'}=~/^parameter_(0_)*randompick$/) { $randompick{$referid}=$token->[2]->{'value'}; } - if ($token->[2]->{'name'} eq 'parameter_randompickseed') { + if ($token->[2]->{'name'}=~/^parameter_(0_)*randompickseed$/) { $randompick{$referid}=$token->[2]->{'value'}; } - if ($token->[2]->{'name'} eq 'parameter_encrypturl') { - $encurl{$referid}=$token->[2]->{'value'}; + if ($token->[2]->{'name'}=~/^parameter_(0_)*encrypturl$/) { + if ($token->[2]->{'value'}=~/^yes$/i) { + $hiddenurl{$referid}=1; + } } - if ($token->[2]->{'name'} eq 'parameter_hiddenresource') { - $hiddenurl{$referid}=$token->[2]->{'value'}; + if ($token->[2]->{'name'}=~/^parameter_(0_)*hiddenresource$/) { + if ($token->[2]->{'value'}=~/^yes$/i) { + $hiddenurl{$referid}=1; + } } } @@ -328,10 +331,16 @@ sub simplify { # -------------------------------------------------------- Build condition hash sub traceroute { - my ($sofar,$rid,$beenhere)=@_; + my ($sofar,$rid,$beenhere,$encflag,$hdnflag)=@_; $sofar=simplify($sofar); unless ($beenhere=~/\&$rid\&/) { $beenhere.=$rid.'&'; + if ($hdnflag) { + $hiddenurl{$rid}=1; + } + if ($encflag) { + $encurl{$rid}=1; + } if (($retfurl eq '') && ($hash{'src_'.$rid}) && ($hash{'src_'.$rid}!~/\.sequence$/)) { my ($mapid,$resid)=split(/\./,$rid); @@ -350,7 +359,9 @@ sub traceroute { } if (defined($hash{'is_map_'.$rid})) { if (defined($hash{'map_start_'.$hash{'src_'.$rid}})) { - &traceroute($sofar,$hash{'map_start_'.$hash{'src_'.$rid}},'&'); + &traceroute($sofar,$hash{'map_start_'.$hash{'src_'.$rid}},'&', + $encflag || $encurl{$rid}, + $hdnflag || $hiddenurl{$rid}); if (defined($hash{'map_finish_'.$hash{'src_'.$rid}})) { $sofar= $hash{'conditions_'.$hash{'map_finish_'.$hash{'src_'.$rid}}}; @@ -369,7 +380,7 @@ sub traceroute { .$hash{'undercond_'.$_}.'. '; } } - &traceroute($further,$hash{'goesto_'.$_},$beenhere); + &traceroute($further,$hash{'goesto_'.$_},$beenhere,$encflag,$hdnflag); } } } @@ -438,9 +449,9 @@ sub accinit { /(\&\Q$urifile\E\:[^\&]*)/) { my $replace=$1; my $regexp=$replace; - $regexp=~s/\|/\\\|/g; + #$regexp=~s/\|/\\\|/g; $acchash{'acc.res.'.$short.'.'.$uripath} - =~s/$regexp/$replace\|$uricond/; + =~s/\Q$regexp\E/$replace\|$uricond/; } else { $acchash{'acc.res.'.$short.'.'.$uripath}.= $urifile.':'.$uricond.'&'; @@ -571,10 +582,17 @@ sub readmap { $hash{$_}=&putinversion($hash{$_}); } } +# ---------------------------------------------------------------- Encrypt URLs + foreach (keys %encurl) { + $hash{'src_'.$_}=&Apache::lonenc::encrypted($hash{'src_'.$_}); + } +# ----------------------------------------------- Close hashes to finally store +# --------------------------------- Routine must pass this point, no early outs unless ((untie(%hash)) && (untie(%parmhash))) { &Apache::lonnet::logthis("WARNING: ". "Could not untie coursemap $fn for $uri."); } +# ---------------------------------------------------- Store away initial state { my $cfh; if ($cfh=Apache::File->new(">$fn.state")) {