version 1.71, 2006/09/19 19:03:27
|
version 1.73, 2006/10/20 22:03:24
|
Line 87 sub hash_src {
|
Line 87 sub hash_src {
|
} |
} |
|
|
sub move { |
sub move { |
|
my ($next,$endupmap,$direction) = @_; |
|
my $safecount=0; |
|
my $allowed=0; |
|
do { |
|
($next,$endupmap)=&get_next_possible_move($next,$endupmap,$direction); |
|
|
|
my $url = $hash{'src_'.$next}; |
|
my ($mapid,$resid)=split(/\./,$next); |
|
my $symb = &Apache::lonnet::encode_symb($hash{'map_id_'.$mapid}, |
|
$resid,$url); |
|
if ($url eq '' || $symb eq '') { |
|
$allowed = 0; |
|
} else { |
|
my $priv = &Apache::lonnet::allowed('bre',$url,$symb); |
|
$allowed = (($priv eq 'F') || ($priv eq '2')); |
|
} |
|
$safecount++; |
|
} while ( ($next) |
|
&& ($next!~/\,/) |
|
&& ( |
|
(!$hash{'src_'.$next}) |
|
|| ( |
|
(!$env{'request.role.adv'}) |
|
&& $hash{'randomout_'.$next} |
|
) |
|
|| (!$allowed) |
|
) |
|
&& ($safecount<10000)); |
|
|
|
return ($next,$endupmap); |
|
} |
|
|
|
sub get_next_possible_move { |
my ($rid,$mapurl,$direction)=@_; |
my ($rid,$mapurl,$direction)=@_; |
my $startoutrid=$rid; |
my $startoutrid=$rid; |
|
|
Line 211 sub first_accessible_resource {
|
Line 244 sub first_accessible_resource {
|
# Wow, we cannot see this ... move forward to the next one that we can see |
# Wow, we cannot see this ... move forward to the next one that we can see |
my ($newrid,$newmap)=&move($hash{'first_rid'},$hash{'first_mapurl'},'forward'); |
my ($newrid,$newmap)=&move($hash{'first_rid'},$hash{'first_mapurl'},'forward'); |
# Build the new URL |
# Build the new URL |
my ($newresid,$newmapid)=split(/\./,$newrid); |
my ($newmapid,$newresid)=split(/\./,$newrid); |
my $symb=&Apache::lonnet::encode_symb($newmap,$newresid,$hash{'src_'.$newrid}); |
my $symb=&Apache::lonnet::encode_symb($newmap,$newresid,$hash{'src_'.$newrid}); |
$furl=&add_get_param($hash{'src_'.$newrid},{ 'symb' => $symb }); |
$furl=&add_get_param($hash{'src_'.$newrid},{ 'symb' => $symb }); |
if ($hash{'encrypted_'.$newrid}) { |
if ($hash{'encrypted_'.$newrid}) { |
Line 342 sub handler {
|
Line 375 sub handler {
|
my $endupmap; |
my $endupmap; |
($next,$endupmap)=&move($rid,$startoutmap,$direction); |
($next,$endupmap)=&move($rid,$startoutmap,$direction); |
# -------------------------------------- Do we have one and only one empty URL? |
# -------------------------------------- Do we have one and only one empty URL? |
my $safecount=0; |
|
while (($next) && ($next!~/\,/) && |
|
((!$hash{'src_'.$next}) || |
|
((!$env{'request.role.adv'}) && $hash{'randomout_'.$next})) |
|
&& ($safecount<10000)) { |
|
($next,$endupmap)=&move($next,$endupmap,$direction); |
|
$safecount++; |
|
} |
|
# We are now at at least one non-empty URL |
# We are now at at least one non-empty URL |
# ----------------------------------------------------- Check out possibilities |
# ----------------------------------------------------- Check out possibilities |
if ($next) { |
if ($next) { |