version 1.85, 2005/03/15 17:21:42
|
version 1.88, 2005/03/18 21:55:49
|
Line 32 package Apache::lonuserstate;
|
Line 32 package Apache::lonuserstate;
|
# ------------------------------------------------- modules used by this module |
# ------------------------------------------------- modules used by this module |
use strict; |
use strict; |
use Apache::Constants qw(:common :http); |
use Apache::Constants qw(:common :http); |
use Apache::File; |
|
use HTML::TokeParser; |
use HTML::TokeParser; |
use Apache::lonnet(); |
use Apache::lonnet(); |
use Apache::loncommon(); |
use Apache::loncommon(); |
Line 413 sub accinit {
|
Line 412 sub accinit {
|
$acchash{'acc.cond.'.$short.'.'.$condcounter}=$expr; |
$acchash{'acc.cond.'.$short.'.'.$condcounter}=$expr; |
} |
} |
} elsif ($_=~/^param_(\d+)\.(\d+)/) { |
} elsif ($_=~/^param_(\d+)\.(\d+)/) { |
my $prefix=&Apache::lonnet::declutter($hash{'map_id_'.$1}). |
my $prefix=&Apache::lonnet::encode_symb($hash{'map_id_'.$1},$2, |
'___'.$2.'___'.&Apache::lonnet::declutter($hash{'src_'.$1.'.'.$2}); |
$hash{'src_'.$1.'.'.$2}); |
foreach (split(/\&/,$hash{$_})) { |
foreach (split(/\&/,$hash{$_})) { |
my ($typename,$value)=split(/\=/,$_); |
my ($typename,$value)=split(/\=/,$_); |
my ($type,$name)=split(/\:/,$typename); |
my ($type,$name)=split(/\:/,$typename); |
Line 504 sub hiddenurls {
|
Line 503 sub hiddenurls {
|
$hash{'randomout_'.$currentrids[$k]}=1; |
$hash{'randomout_'.$currentrids[$k]}=1; |
my ($mapid,$resid)=split(/\./,$currentrids[$k]); |
my ($mapid,$resid)=split(/\./,$currentrids[$k]); |
$randomoutentry.='&'. |
$randomoutentry.='&'. |
&Apache::lonnet::symbclean( |
&Apache::lonnet::encode_symb($hash{'map_id_'.$mapid}, |
&Apache::lonnet::declutter($hash{'map_id_'.$mapid}). |
$resid, |
'___'.$resid.'___'. |
$hash{'src_'.$currentrids[$k]} |
&Apache::lonnet::declutter($hash{'src_'.$currentrids[$k]}) |
).'&'; |
).'&'; |
|
} |
} |
} |
} |
} |
} |
Line 517 sub hiddenurls {
|
Line 515 sub hiddenurls {
|
$hash{'randomout_'.$rid}=1; |
$hash{'randomout_'.$rid}=1; |
my ($mapid,$resid)=split(/\./,$rid); |
my ($mapid,$resid)=split(/\./,$rid); |
$randomoutentry.='&'. |
$randomoutentry.='&'. |
&Apache::lonnet::symbclean( |
&Apache::lonnet::encode_symb($hash{'map_id_'.$mapid},$resid, |
&Apache::lonnet::declutter($hash{'map_id_'.$mapid}). |
$hash{'src_'.$rid}).'&'; |
'___'.$resid.'___'. |
|
&Apache::lonnet::declutter($hash{'src_'.$rid}) |
|
).'&'; |
|
} |
} |
# --------------------------------------- append randomout entry to environment |
# --------------------------------------- append randomout entry to environment |
if ($randomoutentry) { |
if ($randomoutentry) { |
Line 544 sub readmap {
|
Line 539 sub readmap {
|
return 'No course data available.'; |
return 'No course data available.'; |
} |
} |
@cond=('true:normal'); |
@cond=('true:normal'); |
unlink($fn.'.db'); |
#unlink($fn.'.db'); |
unlink($fn.'_symb.db'); |
#unlink($fn.'_symb.db'); |
unlink($fn.'.state'); |
unlink($fn.'.state'); |
unlink($fn.'parms.db'); |
unlink($fn.'parms.db'); |
undef %randompick; |
undef %randompick; |
Line 593 sub readmap {
|
Line 588 sub readmap {
|
# ---------------------------------------------------- Store away initial state |
# ---------------------------------------------------- Store away initial state |
{ |
{ |
my $cfh; |
my $cfh; |
if ($cfh=Apache::File->new(">$fn.state")) { |
if (open($cfh,">$fn.state")) { |
print $cfh join("\n",@cond); |
print $cfh join("\n",@cond); |
} else { |
} else { |
&Apache::lonnet::logthis("<font color=blue>WARNING: ". |
&Apache::lonnet::logthis("<font color=blue>WARNING: ". |
Line 601 sub readmap {
|
Line 596 sub readmap {
|
} |
} |
} |
} |
} else { |
} else { |
|
# 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 |
|
# them on to navmaps, if we fail, throw up the Could not init |
|
# course screen |
|
untie(%hash); |
|
untie(%parmhash); |
&Apache::lonnet::logthis("<font color=blue>WARNING: ". |
&Apache::lonnet::logthis("<font color=blue>WARNING: ". |
"Could not tie coursemap $fn for $uri.</font>"); |
"Could not tie coursemap $fn for $uri.</font>"); |
|
my $i=0; |
|
while($i<90) { |
|
$i++; |
|
sleep(1); |
|
if ((tie(%hash,'GDBM_File',"$fn.db",&GDBM_READER(),0640))) { |
|
if (tie(%parmhash,'GDBM_File',$fn.'_parms.db',&GDBM_READER(),0640)) { |
|
$retfurl='/adm/navmaps'; |
|
&Apache::lonnet::appenv("request.course.id" => $short, |
|
"request.course.fn" => $fn, |
|
"request.course.uri" => $uri); |
|
untie(%hash); |
|
untie(%parmhash); |
|
last; |
|
} |
|
} |
|
untie(%hash); |
|
untie(%parmhash); |
|
} |
} |
} |
&Apache::lonmsg::author_res_msg($ENV{'request.course.uri'},$errtext); |
&Apache::lonmsg::author_res_msg($ENV{'request.course.uri'},$errtext); |
# ------------------------------------------------- Check for critical messages |
# ------------------------------------------------- Check for critical messages |