Diff for /rat/lonuserstate.pm between versions 1.79 and 1.84

version 1.79, 2004/10/26 15:10:42 version 1.84, 2005/02/17 09:09:11
Line 150  sub loadmap { Line 150  sub loadmap {
     $hash{'version_'.$turi}=$1;      $hash{'version_'.$turi}=$1;
  }   }
     }      }
     &Apache::lonnet::do_cache(\%Apache::lonnet::titlecache,      my $title=$token->[2]->{'title'};
        &Apache::lonnet::encode_symb($uri,$token->[2]->{'id'},      $title=~s/\&colon\;/\:/gs;
     $turi),  #    my $symb=&Apache::lonnet::encode_symb($uri,
       $token->[2]->{'title'},'title');  #  $token->[2]->{'id'},
   #  $turi);
   #    &Apache::lonnet::do_cache_new('title',$symb,$title);
                     unless ($ispage) {                      unless ($ispage) {
                         $turi=~/\.(\w+)$/;                          $turi=~/\.(\w+)$/;
                         my $embstyle=&Apache::loncommon::fileembstyle($1);                          my $embstyle=&Apache::loncommon::fileembstyle($1);
Line 303  sub loadmap { Line 305  sub loadmap {
         }          }
   
     } else {      } else {
         $errtext.='Map not loaded: The file does not exist. ';          $errtext.='Map not loaded: The file ('.$fn.') does not exist. ';
     }      }
 }  }
   
Line 332  sub simplify { Line 334  sub simplify {
   
 sub traceroute {  sub traceroute {
     my ($sofar,$rid,$beenhere,$encflag,$hdnflag)=@_;      my ($sofar,$rid,$beenhere,$encflag,$hdnflag)=@_;
     $sofar=simplify($sofar);      my $newsofar=$sofar=simplify($sofar);
     unless ($beenhere=~/\&$rid\&/) {      unless ($beenhere=~/\&$rid\&/) {
        $beenhere.=$rid.'&';           $beenhere.=$rid.'&';  
        my ($mapid,$resid)=split(/\./,$rid);         my ($mapid,$resid)=split(/\./,$rid);
        my $symb=&Apache::lonnet::encode_symb($hash{'map_id_'.$mapid},$resid,$hash{'src_'.$rid});         my $symb=&Apache::lonnet::encode_symb($hash{'map_id_'.$mapid},$resid,$hash{'src_'.$rid});
        my $encrypt=&Apache::lonnet::EXT('resource.0.hiddenresource',$symb);         my $hidden=&Apache::lonnet::EXT('resource.0.hiddenresource',$symb);
        if ($hdnflag || lc($encrypt) eq 'yes') { $hiddenurl{$rid}=1; }         if ($hdnflag || lc($hidden) eq 'yes') { $hiddenurl{$rid}=1; }
        my $encrypt=&Apache::lonnet::EXT('resource.0.encrypturl',$symb);         my $encrypt=&Apache::lonnet::EXT('resource.0.encrypturl',$symb);
        if ($encflag || lc($encrypt) eq 'yes') { $encurl{$rid}=1; }         if ($encflag || lc($encrypt) eq 'yes') { $encurl{$rid}=1; }
        if (($retfurl eq '') && ($hash{'src_'.$rid})         if (($retfurl eq '') && ($hash{'src_'.$rid})
Line 352  sub traceroute { Line 354  sub traceroute {
        } else {         } else {
            $hash{'conditions_'.$rid}=$sofar;             $hash{'conditions_'.$rid}=$sofar;
        }         }
          $newsofar=$hash{'conditions_'.$rid};
        if (defined($hash{'is_map_'.$rid})) {         if (defined($hash{'is_map_'.$rid})) {
            if (defined($hash{'map_start_'.$hash{'src_'.$rid}})) {             if (defined($hash{'map_start_'.$hash{'src_'.$rid}})) {
        &traceroute($sofar,$hash{'map_start_'.$hash{'src_'.$rid}},'&',         $sofar=$newsofar=
    $encflag || $encurl{$rid},     &traceroute($sofar,
    $hdnflag || $hiddenurl{$rid});         $hash{'map_start_'.$hash{'src_'.$rid}},'&',
                if (defined($hash{'map_finish_'.$hash{'src_'.$rid}})) {         $encflag || $encurl{$rid},
    $sofar=         $hdnflag || $hiddenurl{$rid});
                   $hash{'conditions_'.$hash{'map_finish_'.$hash{'src_'.$rid}}};  
                }  
            }             }
        }         }
        if (defined($hash{'to_'.$rid})) {         if (defined($hash{'to_'.$rid})) {
Line 375  sub traceroute { Line 376  sub traceroute {
                                  .$hash{'undercond_'.$_}.'. ';                                   .$hash{'undercond_'.$_}.'. ';
                    }                     }
                 }                  }
                 &traceroute($further,$hash{'goesto_'.$_},$beenhere,$encflag,$hdnflag);                  $newsofar=&traceroute($further,$hash{'goesto_'.$_},$beenhere,
         $encflag,$hdnflag);
           }            }
        }         }
     }      }
       return $newsofar;
 }  }
   
 # ------------------------------ Cascading conditions, quick access, parameters  # ------------------------------ Cascading conditions, quick access, parameters
Line 579  sub readmap { Line 582  sub readmap {
     }      }
 # ---------------------------------------------------------------- Encrypt URLs  # ---------------------------------------------------------------- Encrypt URLs
     foreach (keys %encurl) {      foreach (keys %encurl) {
  $hash{'src_'.$_}=&Apache::lonenc::encrypted($hash{'src_'.$_});  # $hash{'src_'.$_}=&Apache::lonenc::encrypted($hash{'src_'.$_});
    $hash{'encrypted_'.$_}=1;
     }      }
 # ----------------------------------------------- Close hashes to finally store  # ----------------------------------------------- Close hashes to finally store
 # --------------------------------- Routine must pass this point, no early outs  # --------------------------------- Routine must pass this point, no early outs
Line 617  sub readmap { Line 621  sub readmap {
 # ------------------------------------------------------- Evaluate state string  # ------------------------------------------------------- Evaluate state string
   
 sub evalstate {  sub evalstate {
   
     my $fn=$ENV{'request.course.fn'}.'.state';      my $fn=$ENV{'request.course.fn'}.'.state';
     my $state='2';      my $state='';
     if (-e $fn) {      if (-e $fn) {
        my @conditions=();   my @conditions=();
        {   {
         my $fh=Apache::File->new($fn);      my $fh=Apache::File->new($fn);
         @conditions=<$fh>;      @conditions=<$fh>;
        }     }  
        my $safeeval = new Safe;   my $safeeval = new Safe;
        my $safehole = new Safe::Hole;   my $safehole = new Safe::Hole;
        $safeeval->permit("entereval");   $safeeval->permit("entereval");
        $safeeval->permit(":base_math");   $safeeval->permit(":base_math");
        $safeeval->deny(":base_io");   $safeeval->deny(":base_io");
        $safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT');   $safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT');
        foreach (@conditions) {   foreach my $line (@conditions) {
    my $line=$_;      chomp($line);
            chomp($line);      my ($condition,$weight)=split(/\:/,$line);
    my ($condition,$weight)=split(/\:/,$_);      if ($safeeval->reval($condition)) {
            if ($safeeval->reval($condition)) {   if ($weight eq 'force') {
        if ($weight eq 'force') {      $state.='3';
    $state.='3';   } else {
                } else {      $state.='2';
                    $state.='2';   }
                }      } else {
            } else {   if ($weight eq 'stop') {
                if ($weight eq 'stop') {      $state.='0';
    $state.='0';   } else {
                } else {      $state.='1';
                    $state.='1';   }
                }      }
            }   }
        }  
     }      }
     &Apache::lonnet::appenv('user.state.'.$ENV{'request.course.id'} => $state);      &Apache::lonnet::appenv('user.state.'.$ENV{'request.course.id'} => $state);
     return $state;      return $state;

Removed from v.1.79  
changed lines
  Added in v.1.84


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>