Diff for /loncom/lonnet/perl/lonnet.pm between versions 1.1457 and 1.1460

version 1.1457, 2021/06/06 23:18:59 version 1.1460, 2021/06/15 20:52:28
Line 8441  sub allowed { Line 8441  sub allowed {
                =~/\Q$priv\E\&([^\:]*)/) {                 =~/\Q$priv\E\&([^\:]*)/) {
                my $value = $1;                 my $value = $1;
                if ($priv eq 'bre') {                 if ($priv eq 'bre') {
                    if ($noblockcheck) {                     my $deeplinkblock = &deeplink_check($priv,$symb,$uri);
                      if ($deeplinkblock) {
                          $thisallowed = 'D';
                      } elsif ($noblockcheck) {
                        $thisallowed.=$value;                         $thisallowed.=$value;
                    } else {                     } else {
                        my @blockers = &has_comm_blocking($priv,$symb,$uri,$ignorecache);                         my @blockers = &has_comm_blocking($priv,$symb,$uri,$ignorecache);
Line 9062  sub deeplink_check { Line 9065  sub deeplink_check {
                         if ($symb eq $login) {                          if ($symb eq $login) {
                             $allow = 1;                              $allow = 1;
                         }                          }
                     } elsif ($scope eq 'map') {                      } elsif (($scope eq 'map') || ($scope eq 'rec')) {
 #FIXME Compare map for $env{'request.deeplink.login'} with map for $symb                          my ($map_from_symb) = &deversion((&decode_symb($symb))[0]);
                     } elsif ($scope eq 'rec') {                          my ($map_from_login) = &deversion((&decode_symb($login))[0]);
 #FIXME Recurse up for $env{'request.deeplink.login'} with map for $symb                          if (($map_from_symb) && ($map_from_login)) {
                               if ($map_from_symb eq $map_from_login) {
                                   $allow = 1;
                               } elsif ($scope eq 'rec') {
                                   my @recurseup = &get_map_hierarchy($map_from_symb,$env{'request.course.id'});
                                   if (grep(/^\Q$map_from_login\E$/,@recurseup)) {
                                       $allow = 1;
                                   }
                               }
                           }
                     }                      }
                 } else {                  } else {
                     my ($acctype,$item) = split(/:/,$access);                      my ($acctype,$item) = split(/:/,$access);
Line 9776  sub auto_validate_class_sec { Line 9788  sub auto_validate_class_sec {
     return $response;      return $response;
 }  }
   
   sub auto_instsec_reformat {
       my ($cdom,$action,$instsecref) = @_;
       return unless(($action eq 'clutter') || ($action eq 'declutter'));
       my @homeservers;
       if (defined(&domain($cdom,'primary'))) {
           push(@homeservers,&domain($cdom,'primary'));
       } else {
           my %servers = &get_servers($cdom,'library');
           foreach my $tryserver (keys(%servers)) {
               if (!grep(/^\Q$tryserver\E$/,@homeservers)) {
                   push(@homeservers,$tryserver);
               }
           }
       }
       my $response;
       my %reformatted = %{$instsecref};
       foreach my $server (@homeservers) {
           if (ref($instsecref) eq 'HASH') {
               my $info = &freeze_escape($instsecref);
               my $response=&reply('autoinstsecreformat:'.$cdom.':'.
                                   $action.':'.$info,$server);
               next if ($response =~ /(con_lost|error|no_such_host|refused|unknown_command)/);
               my @items = split(/&/,$response);
               foreach my $item (@items) {
                   my ($key,$value) = split(/=/,$item);
                   $reformatted{&unescape($key)} = &thaw_unescape($value);
               }
           }
       }
       return %reformatted;
   }
   
 sub auto_validate_instclasses {  sub auto_validate_instclasses {
     my ($cdom,$cnum,$owners,$classesref) = @_;      my ($cdom,$cnum,$owners,$classesref) = @_;
     my ($homeserver,%validations);      my ($homeserver,%validations);

Removed from v.1.1457  
changed lines
  Added in v.1.1460


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