--- rat/lonuserstate.pm 2009/11/16 20:26:04 1.128.2.3 +++ rat/lonuserstate.pm 2010/03/25 17:38:52 1.135 @@ -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.128.2.3 2009/11/16 20:26:04 raeburn Exp $ +# $Id: lonuserstate.pm,v 1.135 2010/03/25 17:38:52 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -62,6 +62,12 @@ my %hiddenurl; # this URL (or complete f # ----------------------------------- Remove version from URL and store in hash +sub versionerror { + my ($uri,$usedversion,$unusedversion)=@_; + return '
'.&mt('Version discrepancy: resource [_1] included in both version [_2] and version [_3]. Using version [_2].', + $uri,$usedversion,$unusedversion).'
'; +} + sub versiontrack { my $uri=shift; if ($uri=~/\.(\d+)\.\w+$/) { @@ -69,7 +75,9 @@ sub versiontrack { $uri=~s/\.\d+\.(\w+)$/\.$1/; unless ($hash{'version_'.$uri}) { $hash{'version_'.$uri}=$version; - } + } elsif ($version!=$hash{'version_'.$uri}) { + $errtext.=&versionerror($uri,$hash{'version_'.$uri},$version); + } } return $uri; } @@ -278,7 +286,7 @@ sub parse_resource { $hash{'ids_'.$idsuri}=''.$rid; } - if ($turi=~/\/(syllabus|aboutme|navmaps|smppg|bulletinboard)$/) { + if ($turi=~/\/(syllabus|aboutme|navmaps|smppg|bulletinboard|viewclasslist)$/) { $turi.='?register=1'; } @@ -688,9 +696,9 @@ sub readmap { 'Could not untie coursemap hash '.$fn.' for '.$uri.'.'); } } - flock(LOCKFILE,LOCK_UN); + flock(LOCKFILE,LOCK_UN); } - unless ($lock && $tiedhash && $tiedparmhash) { + unless ($lock && $tiedhash && $tiedparmhash) { # if we are here it is likely because we are already trying to # initialize the course in another child, busy wait trying to # tie the hashes for the next 90 seconds, if we succeed forward @@ -703,7 +711,7 @@ sub readmap { } if ($tiedhash) { unless($untiedhash) { - untie(%hash); + untie(%hash); } } if ($tiedparmhash) { @@ -711,8 +719,8 @@ sub readmap { untie(%parmhash); } } - &Apache::lonnet::logthis('WARNING: '. - "Could not tie coursemap $fn for $uri."); + &Apache::lonnet::logthis('WARNING: '. + "Could not tie coursemap $fn for $uri."); $tiedhash = ''; $tiedparmhash = ''; my $i=0; @@ -728,18 +736,18 @@ sub readmap { if (-e "$fn.state") { $retfurl='/adm/navmaps'; &Apache::lonnet::appenv({"request.course.id" => $short, - "request.course.fn" => $fn, + "request.course.fn" => $fn, "request.course.uri" => $uri}); - $untiedhash = untie(%hash); - $untiedparmhash = untie(%parmhash); + $untiedhash = untie(%hash); + $untiedparmhash = untie(%parmhash); $gotstate = 1; last; - } + } $untiedparmhash = untie(%parmhash); - } - $untiedhash = untie(%hash); - } - } + } + $untiedhash = untie(%hash); + } + } } if ($lock) { flock(LOCKFILE,LOCK_UN); @@ -1002,37 +1010,33 @@ of course for user. This is part of the LearningOnline Network with CAPA project described at http://www.lon-capa.org. -=head1 HANDLER SUBROUTINE - -There is no handler subroutine. - -=head1 OTHER SUBROUTINES +=head1 SUBROUTINES -=over 4 +=over -=item * +=item loadmap() -loadmap() : Loads map from disk +Loads map from disk -=item * +=item simplify() -simplify() : Simplify expression +Simplify expression -=item * +=item traceroute() -traceroute() : Build condition hash +Build condition hash -=item * +=item accinit() -accinit() : Cascading conditions, quick access, parameters +Cascading conditions, quick access, parameters -=item * +=item readmap() -readmap() : Read map and all submaps +Read map and all submaps -=item * +=item evalstate() -evalstate() : Evaluate state string +Evaluate state string =back