[LON-CAPA-cvs] cvs: rat / lonuserstate.pm
albertel
lon-capa-cvs-allow@mail.lon-capa.org
Tue, 28 Aug 2007 01:13:19 -0000
albertel Mon Aug 27 21:13:19 2007 EDT
Modified files:
/rat lonuserstate.pm
Log:
- count each usage of a specific mapalias, if the same one occurs multiple
times throw an error message out
Index: rat/lonuserstate.pm
diff -u rat/lonuserstate.pm:1.121 rat/lonuserstate.pm:1.122
--- rat/lonuserstate.pm:1.121 Mon Aug 27 21:09:14 2007
+++ rat/lonuserstate.pm Mon Aug 27 21:13:19 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.121 2007/08/28 01:09:14 albertel Exp $
+# $Id: lonuserstate.pm,v 1.122 2007/08/28 01:13:19 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -336,6 +336,7 @@
return if (!exists($hash{'src_'.$referid}));
if ($token->[2]->{'name'}=~/^parameter_(0_)*mapalias$/) {
+ &count_mapalias($token->[2]->{'value'},$referid);
$hash{'mapalias_'.$token->[2]->{'value'}}=$referid;
}
}
@@ -599,6 +600,7 @@
%parmhash=();
$errtext='';
$pc=0;
+ &clear_mapalias_count();
&processversionfile(%cenv);
my $furi=&Apache::lonnet::clutter($uri);
$hash{'src_0.0'}=&versiontrack($furi);
@@ -615,6 +617,7 @@
&accinit($uri,$short,$fn);
&hiddenurls();
}
+ $errtext .= &get_mapalias_errors();
# ------------------------------------------------------- Put versions into src
foreach my $key (keys(%hash)) {
if ($key=~/^src_/) {
@@ -746,6 +749,43 @@
return $state;
}
+{
+ my %mapalias_cache;
+ sub count_mapalias {
+ my ($value,$resid) = @_;
+ push(@{ $mapalias_cache{$value} }, $resid);
+ }
+
+ sub get_mapalias_errors {
+ my $error_text;
+ foreach my $mapalias (sort(keys(%mapalias_cache))) {
+ next if (scalar(@{ $mapalias_cache{$mapalias} } ) == 1);
+ my $count;
+ my $which =
+ join('</li><li>',
+ map {
+ my $id = $_;
+ if (exists($hash{'src_'.$id})) {
+ $count++;
+ }
+ my ($mapid) = split(/\./,$id);
+ &mt('[_1] in [_2]', $hash{'title_'.$id},
+
+ $hash{'title_'.$hash{'ids_'.$hash{'map_id_'.$mapid}}});
+ } (@{ $mapalias_cache{$mapalias} }));
+ next if ($count < 2);
+ $error_text .= '<div class="LC_error">'.
+ &mt('Error: Found the mapalias "[_1]" defined multiple times.',
+ $mapalias).
+ '</div><ul><li>'.$which.'</li></ul>';
+ }
+ &clear_mapalias_count();
+ return $error_text;
+ }
+ sub clear_mapalias_count {
+ undef(%mapalias_cache);
+ }
+}
1;
__END__