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

version 1.14, 2000/10/31 19:31:42 version 1.15, 2000/11/01 22:21:36
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 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 352  sub readmap { Line 355  sub readmap {
                        "Could not tie coursemap $fn for $uri.</font>");                          "Could not tie coursemap $fn for $uri.</font>"); 
    }     }
    &Apache::lonmsg::author_res_msg($ENV{'request.course.uri'},$errtext);     &Apache::lonmsg::author_res_msg($ENV{'request.course.uri'},$errtext);
      &evalstate();
    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',['&varval']);
          map {
      my $line=$_;
              chomp($line);
      my ($condition,$weight)=split(/\:/,$_);
              $condition=~s/\&([\w\.]+)/\&varval\(\'$1\'\)/g;
              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.15


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