--- rat/lonuserstate.pm 2007/08/28 01:06:15 1.120
+++ rat/lonuserstate.pm 2007/08/28 01:09:14 1.121
@@ -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.120 2007/08/28 01:06:15 albertel Exp $
+# $Id: lonuserstate.pm,v 1.121 2007/08/28 01:09:14 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -293,9 +293,6 @@ sub loadmap {
} else {
$hash{'param_'.$referid}=''.$newparam;
}
- if ($token->[2]->{'name'}=~/^parameter_(0_)*mapalias$/) {
- $hash{'mapalias_'.$token->[2]->{'value'}}=$referid;
- }
if ($token->[2]->{'name'}=~/^parameter_(0_)*randompick$/) {
$randompick{$referid}=$token->[2]->{'value'};
}
@@ -320,6 +317,27 @@ sub loadmap {
} else {
$errtext.=&mt('
Map not loaded: The file [_1] does not exist.',$fn);
}
+
+ my $parser = HTML::TokeParser->new(\$instr);
+ $parser->attr_encoded(1);
+ # last parse out the mapalias params so as to ignore anything
+ # refering to non-existant resources
+ while (my $token = $parser->get_token) {
+ next if ($token->[0] ne 'S');
+ if ($token->[1] eq 'param') {
+ &parse_mapalias_param($token,$lpc);
+ }
+ }
+}
+
+sub parse_mapalias_param {
+ my ($token,$lpc) = @_;
+ my $referid=$lpc.'.'.$token->[2]->{'to'};
+ return if (!exists($hash{'src_'.$referid}));
+
+ if ($token->[2]->{'name'}=~/^parameter_(0_)*mapalias$/) {
+ $hash{'mapalias_'.$token->[2]->{'value'}}=$referid;
+ }
}
# --------------------------------------------------------- Simplify expression