Diff for /rat/lonuserstate.pm between versions 1.36 and 1.51

version 1.36, 2002/07/30 20:01:40 version 1.51, 2003/02/25 15:58:51
Line 40 Line 40
 # 11/1,11/2,11/14,11/16,11/22,12/28,  # 11/1,11/2,11/14,11/16,11/22,12/28,
 # YEAR=2001  # YEAR=2001
 # 07/05/01,08/30,08/31 Gerd Kortemeyer  # 07/05/01,08/30,08/31 Gerd Kortemeyer
 # 12/16 Scott Harrison  
 #  #
 ###  ###
   
Line 68  my @cond;    # Array with all of the con Line 67  my @cond;    # Array with all of the con
 my $errtext; # variable with all errors  my $errtext; # variable with all errors
 my $retfurl; # variable with the very first URL in the course  my $retfurl; # variable with the very first URL in the course
 my %randompick; # randomly picked resources  my %randompick; # randomly picked resources
   my %randompickseed; # optional seed for randomly picking resources
   my %actualversion; # version of resource as loaded now
   my %setversion; # forced version of resource
   my %lastversion; # version when CC came in last
   my $versionmode; # how versioning is handled in this course
   
 # --------------------------------------------------------- Loads map from disk  # --------------------------------------------------------- Loads map from disk
   
 sub loadmap {   sub loadmap { 
Line 79  sub loadmap { Line 84  sub loadmap {
     $hash{'map_pc_'.$uri}=$lpc;      $hash{'map_pc_'.$uri}=$lpc;
     $hash{'map_id_'.$lpc}=$uri;      $hash{'map_id_'.$lpc}=$uri;
   
     my $fn='/home/httpd/html'.$uri;  # Determine and check filename
       my $fn=&Apache::lonnet::filelocation('',$uri);
   
       my $ispage=($fn=~/\.page$/);
   
     unless (($fn=~/\.sequence$/) ||      unless (($fn=~/\.sequence$/) ||
             ($fn=~/\.page$/)) {               ($fn=~/\.page$/)) { 
Line 87  sub loadmap { Line 95  sub loadmap {
        return OK;          return OK; 
     }      }
   
     my $ispage=($fn=~/\.page$/);      my $instr=&Apache::lonnet::getfile($fn);
   
     unless (-e $fn) {      unless ($instr == -1) {
  my $returned=Apache::lonnet::repcopy($fn);  
         unless ($returned eq OK) {  # Successfully got file, parse it
            $errtext.="Could not import: $fn - ";  
            if ($returned eq HTTP_SERVICE_UNAVAILABLE) {  
       $errtext.="Server unavailable\n";  
            }  
            if ($returned eq HTTP_NOT_FOUND) {  
       $errtext.="File not found\n";  
            }  
            if ($returned eq FORBIDDEN) {  
       $errtext.="Access forbidden\n";  
            }  
            return OK;  
        }  
     }  
   
     if (-e $fn) {  
         my @content;  
         {  
     my $fh=Apache::File->new($fn);  
             @content=<$fh>;  
         }  
         my $instr=join('',@content);  
         my $parser = HTML::TokeParser->new(\$instr);          my $parser = HTML::TokeParser->new(\$instr);
         my $token;          my $token;
   
Line 132  sub loadmap { Line 120  sub loadmap {
                     $hash{'kind_'.$rid}='res';                      $hash{'kind_'.$rid}='res';
                     $hash{'title_'.$rid}=$token->[2]->{'title'};                      $hash{'title_'.$rid}=$token->[2]->{'title'};
                     my $turi=$token->[2]->{'src'};                      my $turi=$token->[2]->{'src'};
                       $Apache::lonnet::titlecache{
        &Apache::lonnet::symbclean(
                         &Apache::lonnet::declutter($uri).'___'.
                         $token->[2]->{'id'}.'___'.
         &Apache::lonnet::declutter($turi))}=
                             $token->[2]->{'title'};
                     unless ($ispage) {                      unless ($ispage) {
                         $turi=~/\.(\w+)$/;                          $turi=~/\.(\w+)$/;
                         my $embstyle=&Apache::loncommon::fileembstyle($1);                          my $embstyle=&Apache::loncommon::fileembstyle($1);
                         if ($token->[2]->{'external'} eq 'true') {                          if ($token->[2]->{'external'} eq 'true') { # external
                             $turi=~s/^http\:\/\//\/adm\/wrapper\/ext\//;                              $turi=~s/^http\:\/\//\/adm\/wrapper\/ext\//;
                         } else {                          } elsif ($turi=~/^\/*uploaded\//) { # uploaded
                            my $embstyle=&Apache::loncommon::fileembstyle($1);      if (($embstyle eq 'img') || ($embstyle eq 'emb')
                            if (($embstyle eq 'img') || ($embstyle eq 'emb')) {                               || ($embstyle eq 'ssi')) {
                                   $turi='/adm/wrapper'.$turi;
                               } elsif ($turi!~/\.(sequence|page)$/) {
    $turi='/adm/coursedocs/showdoc'.$turi;
                               }
                           } else { # normal internal resource
                              if (($embstyle eq 'img') || ($embstyle eq 'emb')
                || ($turi=~/\/(syllabus|aboutme|navmaps|smppg|bulletinboard)$/)) {
        $turi='/adm/wrapper'.$turi;         $turi='/adm/wrapper'.$turi;
                            }                             }
                         }                          }
Line 239  sub loadmap { Line 240  sub loadmap {
                     if ($token->[2]->{'name'} eq 'parameter_randompick') {                      if ($token->[2]->{'name'} eq 'parameter_randompick') {
  $randompick{$referid}=$token->[2]->{'value'};   $randompick{$referid}=$token->[2]->{'value'};
                     }                      }
                       if ($token->[2]->{'name'} eq 'parameter_randompickseed') {
    $randompick{$referid}=$token->[2]->{'value'};
                       }
                 }                   } 
   
             }              }
Line 277  sub traceroute { Line 281  sub traceroute {
     $sofar=simplify($sofar);      $sofar=simplify($sofar);
     unless ($beenhere=~/\&$rid\&/) {      unless ($beenhere=~/\&$rid\&/) {
        $beenhere.=$rid.'&';           $beenhere.=$rid.'&';  
        if (($retfurl eq '') && ($hash{'src_'.$rid})) {         if (($retfurl eq '') && ($hash{'src_'.$rid})
           && ($hash{'src_'.$rid}!~/\.sequence$/)) {
            my ($mapid,$resid)=split(/\./,$rid);             my ($mapid,$resid)=split(/\./,$rid);
            $retfurl=$hash{'src_'.$rid}.             $retfurl=$hash{'src_'.$rid}.
            (($hash{'src_'.$rid}=~/\?/)?'&':'?').'symb='.             (($hash{'src_'.$rid}=~/\?/)?'&':'?').'symb='.
Line 416  sub pickrandom { Line 421  sub pickrandom {
         my $mpc=$hash{'map_pc_'.$hash{'src_'.$rid}};          my $mpc=$hash{'map_pc_'.$hash{'src_'.$rid}};
 # ------------------------------------------- put existing resources into array  # ------------------------------------------- put existing resources into array
         my @currentrids=();          my @currentrids=();
         foreach (keys %hash) {          foreach (sort(keys(%hash))) {
     if ($_=~/^src_($mpc\.\d+)/) {      if ($_=~/^src_($mpc\.\d+)/) {
  if ($hash{'src_'.$1}) { push @currentrids, $1; }   if ($hash{'src_'.$1}) { push @currentrids, $1; }
             }              }
         }          }
    # rids are number.number and we want to numercially sort on 
           # the second number
    @currentrids=sort {
       my (undef,$aid)=split(/\./,$a);
       my (undef,$bid)=split(/\./,$b);
       $aid <=> $bid;
    } @currentrids;
         next if ($#currentrids<$rndpick);          next if ($#currentrids<$rndpick);
 # -------------------------------- randomly eliminate the ones that should stay  # -------------------------------- randomly eliminate the ones that should stay
  srand(&Apache::lonnet::rndseed($rid)); # use rid instead of symb   my (undef,$id)=split(/\./,$rid);
         for (my $i=1;$i<=$rndpick;$i++) {          if ($randompickseed{$rid}) { $id=$randompickseed{$rid}; }
             while (1) {   my $rndseed=&Apache::lonnet::rndseed($id); # use id instead of symb
  my $randomidx=int(rand($#currentrids+1));   &Math::Random::random_set_seed_from_phrase($rndseed);
                 if ($currentrids[$randomidx]) {   my @whichids=&Math::Random::random_permuted_index($#currentrids+1);
     $currentrids[$randomidx]='';          for (my $i=1;$i<=$rndpick;$i++) { $currentrids[$whichids[$i]]=''; }
                     last;   #&Apache::lonnet::logthis("$id,$rndseed,".join(':',@whichids));
                 }  
             }  
         }  
 # -------------------------------------------------------- delete the leftovers  # -------------------------------------------------------- delete the leftovers
         for (my $k=0; $k<=$#currentrids; $k++) {          for (my $k=0; $k<=$#currentrids; $k++) {
             if ($currentrids[$k]) {              if ($currentrids[$k]) {
Line 479  sub readmap { Line 488  sub readmap {
     %parmhash=();      %parmhash=();
     $errtext='';      $errtext='';
     $pc=0;      $pc=0;
     my $furi='/res/'.&Apache::lonnet::declutter($uri);      my $furi=&Apache::lonnet::clutter($uri);
     $hash{'src_0.0'}=$furi;      $hash{'src_0.0'}=$furi;
     $hash{'title_0.0'}=&Apache::lonnet::metadata($uri,'title');      $hash{'title_0.0'}=&Apache::lonnet::metadata($uri,'title');
     $hash{'ids_'.$furi}='0.0';      $hash{'ids_'.$furi}='0.0';
Line 490  sub readmap { Line 499  sub readmap {
         &accinit($uri,$short,$fn);          &accinit($uri,$short,$fn);
         &pickrandom();          &pickrandom();
     }      }
   # ------------------------------------------------------------ Version tracking
   #    if (&Apache::lonnet::allowed('srm',$ENV{'request.course.id'})) {
   # &Apache::lonnet::logthis('Will be version tracking');
   #    }
     unless ((untie(%hash)) && (untie(%parmhash))) {      unless ((untie(%hash)) && (untie(%parmhash))) {
       &Apache::lonnet::logthis("<font color=blue>WARNING: ".        &Apache::lonnet::logthis("<font color=blue>WARNING: ".
                        "Could not untie coursemap $fn for $uri.</font>");                          "Could not untie coursemap $fn for $uri.</font>"); 
Line 508  sub readmap { Line 521  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);
   # ------------------------------------------------- Check for critical messages
   
       my @what=&Apache::lonnet::dump('critical',$ENV{'user.domain'},
                                                 $ENV{'user.name'});
       if ($what[0]) {
    if (($what[0] ne 'con_lost') && ($what[0]!~/^error\:/)) {
       $retfurl='/adm/email?critical=display';
           }
       }
    return ($retfurl,$errtext);     return ($retfurl,$errtext);
 }  }
   

Removed from v.1.36  
changed lines
  Added in v.1.51


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.