Diff for /rat/lonuserstate.pm between versions 1.149.2.5.2.1 and 1.164

version 1.149.2.5.2.1, 2022/01/02 16:30:29 version 1.164, 2021/07/19 15:48:25
Line 42  use Safe::Hole; Line 42  use Safe::Hole;
 use Opcode;  use Opcode;
 use Apache::lonenc;  use Apache::lonenc;
 use Fcntl qw(:flock);  use Fcntl qw(:flock);
 use LONCAPA qw(:DEFAULT :match);    use LONCAPA qw(:DEFAULT :match);
 use File::Basename;  use File::Basename;
   
     
Line 256  sub loadmap { Line 256  sub loadmap {
  push(@map_ids, $resource_id);   push(@map_ids, $resource_id);
                 if ($hash{'src_'.$lpc.'.'.$resource_id}) {                  if ($hash{'src_'.$lpc.'.'.$resource_id}) {
                     $rescount{$lpc} ++;                      $rescount{$lpc} ++;
                     if (($hash{'src_'.$lpc.'.'.$resource_id}=~/\.sequence$/) ||                      if (($hash{'src_'.$lpc.'.'.$resource_id}=~/\.sequence$/) || 
                         ($hash{'src_'.$lpc.'.'.$resource_id}=~/\.page$/)) {                          ($hash{'src_'.$lpc.'.'.$resource_id}=~/\.page$/)) {
                         $mapcount{$lpc} ++;                          $mapcount{$lpc} ++; 
                     }                      }
                 }                  }
                 unless ($codechecked) {                  unless ($codechecked) {
Line 950  sub traceroute { Line 950  sub traceroute {
             @deeplink = &Apache::lonnet::EXT('resource.0.deeplink',$symb,'','','','',$cid,\@recurseup);              @deeplink = &Apache::lonnet::EXT('resource.0.deeplink',$symb,'','','','',$cid,\@recurseup);
         }          }
         unless (@deeplink < 2) {          unless (@deeplink < 2) {
             $hash{'deeplinkonly_'.$rid}=join(':',map { &escape($_); } @deeplink);              my ($listed,$scope,$access) = split(/,/,$deeplink[0]);
               $hash{'deeplinkonly_'.$rid}=join(':',@deeplink);
         }          }
   
  if (defined($hash{'conditions_'.$rid})) {   if (defined($hash{'conditions_'.$rid})) {
Line 1495  sub readmap { Line 1496  sub readmap {
         if ($redirect) {          if ($redirect) {
             $retfurl = $url;              $retfurl = $url;
         }          }
     }       }
     return ($retfurl,$errtext);      return ($retfurl,$errtext);
 }  }
   
Line 1613  sub build_tmp_hashes { Line 1614  sub build_tmp_hashes {
             }              }
             my $deeplink;              my $deeplink;
             if ($hash{'deeplinkonly_'.$loginrid} ne '') {              if ($hash{'deeplinkonly_'.$loginrid} ne '') {
                 my @deeplinkinfo = map { &unescape($_); } split(/:/,$hash{'deeplinkonly_'.$loginrid});                  $deeplink = $hash{'deeplinkonly_'.$loginrid};
                 unless (@deeplinkinfo < 2) {  
                     $deeplink = $deeplinkinfo[0];  
                 }  
             }              }
             if ($deeplink) {              if ($deeplink) {
                 my $disallow;                  my ($listed,$scope,$access) = split(/,/,$deeplink);
                 my ($state,$others,$listed,$scope,$protect) = split(/,/,$deeplink);                  my $exclude = 1;
                 if (($protect ne 'none') && ($protect ne '')) {                  if ($exclude) {
                     my ($acctype,$item) = split(/:/,$protect);                      my @recfolders;
                     if ($acctype =~ /lti(c|d)$/) {                      if ($scope eq 'rec') {
                         unless ($env{'request.linkprot'} eq $item.$1.':'.$env{'request.deeplink.login'}) {                          foreach my $key (keys(%hash)) {
                             $disallow = 1;                              if ($key=~/^map_hierarchy_(\d+)$/) {
                         }                                  my $mpc = $1;
                     } elsif ($acctype eq 'key') {                                  my @ids = split(/,/,$hash{$key});
                         unless ($env{'request.linkkey'} eq $item) {                                  if (grep(/^$deeplink_login_pc$/,@ids)) {
                             $disallow = 1;                                      my $idx;
                         }                                      foreach my $mapid (@ids) {
                     }                                          if ($idx) {
                 }                                              push(@recfolders,$mapid);
                 if ($disallow) {                                          } elsif ($mapid == $deeplink_login_pc) {
                     &Apache::lonnet::delenv('request.deeplink.login');                                              push(@recfolders,$mapid);
                 } else {                                              $idx = $mapid;
                     if ($others eq 'hide') {  
                         my @recfolders;  
                         if ($scope eq 'rec') {  
                             foreach my $key (keys(%hash)) {  
                                 if ($key=~/^map_hierarchy_(\d+)$/) {  
                                     my $mpc = $1;  
                                     my @ids = split(/,/,$hash{$key});  
                                     if (grep(/^$deeplink_login_pc$/,@ids)) {  
                                         my $idx;  
                                         foreach my $mapid (@ids) {  
                                             if ($idx) {  
                                                 push(@recfolders,$mapid);  
                                             } elsif ($mapid == $deeplink_login_pc) {  
                                                 push(@recfolders,$mapid);  
                                                 $idx = $mapid;  
                                             }  
                                         }                                          }
                                         push(@recfolders,$mpc);  
                                     }                                      }
                                       push(@recfolders,$mpc);
                                 }                                  }
                             }                              }
                         }                          }
                         foreach my $key (keys(%hash)) {                      }
                             if ($key=~/^src_(.+)$/) {                      foreach my $key (keys(%hash)) {
                                 my $rid = $1;                          if ($key=~/^src_(.+)$/) {
                                 next if ($rid eq '0.0');                              my $rid = $1;
                                 next if ($rid eq $loginrid);                              next if ($rid eq '0.0');
                                 if ($scope ne 'res') {                              next if ($rid eq $loginrid);
                                     my $mapid = (split(/\./,$rid))[0];                              if ($scope ne 'res') {
                                     next if ($mapid eq $deeplink_login_pc);                                  my $mapid = (split(/\./,$rid))[0];
                                     if ($scope eq 'rec') {                                  next if ($mapid eq $deeplink_login_pc);
                                         next if (grep(/^$mapid$/,@recfolders));                                  if ($scope eq 'rec') {
                                     }                                      next if (grep(/^$mapid$/,@recfolders));
                                 }                                  }
                                 $deeplinkout{$rid} = 1;  
                             }                              }
                               $deeplinkout{$rid} = 1;
                         }                          }
                     }                      }
                 }                  }
                 &deeplinkouts();  
             }              }
               &deeplinkouts();
         }          }
     }      }
     &mapcrumbs();      &mapcrumbs();
Line 1809  sub get_mapparam { Line 1791  sub get_mapparam {
                     last;                      last;
                 }                  }
             }              }
               my $recursechk=$usercourseprefix.'.'.$item.'___(rec).'.$what;
               if (defined($$useropt{$recursechk})) {
                   return $$useropt{$recursechk};
               }
         }          }
     }      }
   
Line 1830  sub get_mapparam { Line 1816  sub get_mapparam {
                     last;                      last;
                 }                  }
             }              }
               my $recursechk=$usercourseprefix.'.['.$cgroup.'].'.$item.'___(rec).'.$what;
               if (defined($$courseopt{$recursechk})) {
                   return $$courseopt{$recursechk};
               }
         }          }
     }      }
   
Line 1851  sub get_mapparam { Line 1841  sub get_mapparam {
                     last;                      last;
                 }                  }
             }              }
               my $recursechk=$usercourseprefix.'.['.$csec.'].'.$item.'___(rec).'.$what;
               if (defined($$courseopt{$recursechk})) {
                   return $$courseopt{$recursechk};
               }
         }          }
     }      }
   
Line 1894  sub get_mapparam { Line 1888  sub get_mapparam {
                         last;                          last;
                     }                      }
                 }                  }
                   my $recursechk=$usercourseprefix.'.'.$item.'___(rec).'.$what;
                   if (defined($$courseopt{$recursechk})) {
                       return $$courseopt{$recursechk};
                   }
             }              }
         }          }
     }      }

Removed from v.1.149.2.5.2.1  
changed lines
  Added in v.1.164


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