[LON-CAPA-cvs] cvs: rat / lonuserstate.pm
albertel
lon-capa-cvs-allow@mail.lon-capa.org
Tue, 28 Aug 2007 01:09:15 -0000
albertel Mon Aug 27 21:09:15 2007 EDT
Modified files:
/rat lonuserstate.pm
Log:
- appears advanced rat can leaving <param> deifitions for deleted resources
hanging around, ignore any mapalias that are set to apply to resources
that don't exist
Index: rat/lonuserstate.pm
diff -u rat/lonuserstate.pm:1.120 rat/lonuserstate.pm:1.121
--- rat/lonuserstate.pm:1.120 Mon Aug 27 21:06:15 2007
+++ rat/lonuserstate.pm Mon Aug 27 21:09:14 2007
@@ -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 @@
} 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 @@
} else {
$errtext.=&mt('<br />Map not loaded: The file <tt>[_1]</tt> 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