Diff for /rat/lonuserstate.pm between versions 1.14 and 1.18

version 1.14, 2000/10/31 19:31:42 version 1.18, 2000/11/14 11:13:12
Line 11 Line 11
 # 7/1,7/3,7/4,7/7,7/8,7/10 Gerd Kortemeyer)  # 7/1,7/3,7/4,7/7,7/8,7/10 Gerd Kortemeyer)
 #  #
 # 7/15,7/17,7/18,8/1,8/2,8/4,8/5,8/21,8/22,8/23,8/30,  # 7/15,7/17,7/18,8/1,8/2,8/4,8/5,8/21,8/22,8/23,8/30,
 # 9/2,9/4,9/29,9/30,10/2,10/11,10/30,10/31 Gerd Kortemeyer  # 9/2,9/4,9/29,9/30,10/2,10/11,10/30,10/31,11/1,11/2,11/14 Gerd Kortemeyer
   
 package Apache::lonuserstate;  package Apache::lonuserstate;
   
Line 22  use HTML::TokeParser; Line 22  use HTML::TokeParser;
 use Apache::lonnet();  use Apache::lonnet();
 use GDBM_File;  use GDBM_File;
 use Apache::lonmsg;  use Apache::lonmsg;
   use Safe;
   use Opcode;
   
 # ---------------------------------------------------- Globals for this package  # ---------------------------------------------------- Globals for this package
   
Line 165  sub loadmap { Line 167  sub loadmap {
                     } else {                      } else {
                         $hash{'from_'.$goesto}=''.$linkid;                          $hash{'from_'.$goesto}=''.$linkid;
                     }                      }
                   } elsif ($token->[1] eq 'param') {
   # ------------------------------------------------------------------- Parameter
   
                       my $referid=$lpc.'.'.$token->[2]->{'to'};
                       my $newparam=
    &Apache::lonnet::escape($token->[2]->{'type'}).':'.
    &Apache::lonnet::escape($token->[2]->{'name'}).'='.
    &Apache::lonnet::escape($token->[2]->{'value'});
                       if (defined($hash{'param_'.$referid})) {
                           $hash{'param_'.$referid}.='&'.$newparam;
                       } else {
                           $hash{'param_'.$referid}=''.$newparam;
                       }
   
                 }                   } 
   
             }              }
Line 300  sub accinit { Line 316  sub accinit {
     } keys %hash;      } keys %hash;
     my $courseuri=$uri;      my $courseuri=$uri;
     $courseuri=~s/^\/res\///;      $courseuri=~s/^\/res\///;
     &Apache::lonnet::delenv('(acc\.|httpref\.)');      &Apache::lonnet::delenv('(acc\.|httpref\.|resource\.parms)');
     &Apache::lonnet::appenv(%acchash,      &Apache::lonnet::appenv(%acchash,
                             "request.course.id"  => $short,                              "request.course.id"  => $short,
                             "request.course.fn"  => $fn,                              "request.course.fn"  => $fn,
Line 354  sub readmap { Line 370  sub readmap {
    &Apache::lonmsg::author_res_msg($ENV{'request.course.uri'},$errtext);     &Apache::lonmsg::author_res_msg($ENV{'request.course.uri'},$errtext);
    return $errtext;     return $errtext;
 }  }
    
   # ------------------------------------------------------- Evaluate state string
   
   sub evalstate {
       my $safeeval = new Safe;
       my $fn=$ENV{'request.course.fn'}.'.state';
       my $state='2';
       if (-e $fn) {
          my @conditions=();
          {
           my $fh=Apache::File->new($fn);
           @conditions=<$fh>;
          }  
          $safeeval->permit("entereval");
          $safeeval->permit(":base_math");
          $safeeval->deny(":base_io");
          $safeeval->share_from('Apache::lonnet',['&EXT']);
          map {
      my $line=$_;
              chomp($line);
      my ($condition,$weight)=split(/\:/,$_);
              if ($safeeval->reval($condition)) {
          if ($weight eq 'force') {
      $state.='3';
                  } else {
                      $state.='2';
                  }
              } else {
                  if ($weight eq 'stop') {
      $state.='0';
                  } else {
                      $state.='1';
                  }
              }
          } @conditions;
       }
       &Apache::lonnet::appenv('user.state.'.$ENV{'request.course.id'} => $state);
       return $state;
   }
   
 1;  1;
 __END__  __END__
   

Removed from v.1.14  
changed lines
  Added in v.1.18


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