Diff for /loncom/lti/ltiutils.pm between versions 1.5 and 1.6

version 1.5, 2018/01/04 12:19:25 version 1.6, 2018/04/14 02:30:07
Line 458  sub release_tool_lock { Line 458  sub release_tool_lock {
     }      }
 }  }
   
   #
   # LON-CAPA as LTI Provider
   #
   # Use the part of the launch URL after /adm/lti to determine
   # the scope for the current session (i.e., restricted to a
   # single resource, to a single folder/map, or to an entire
   # course).
   #
   # Returns an array containing scope: resource, map, or course
   # and the LON-CAPA URL that is displayed post-launch, including
   # accommodation of URL encryption, and translation of a tiny URL
   # to the actual URL
   #
   
   sub lti_provider_scope {
       my ($tail,$cdom,$cnum) = @_;
       my ($scope,$realuri);
       if ($tail =~ m{^/uploaded/$cdom/$cnum/(?:default|supplemental)(?:|_\d+)\.(?:sequence|page)(|___\d+___.+)$}) {
           my $rest = $1;
           if ($rest eq '') {
               $scope = 'map';
               $realuri = $tail;
           } else {
               $scope = 'resource';
               my ($map,$resid,$url) = &Apache::lonnet::decode_symb($tail);
               $realuri = &Apache::lonnet::clutter($url);
               if (($url =~ /\.sequence$/) &&
                   ($env{'course.'.$env{'request.course.id'}.'.type'} ne 'Placement')) {
                   $realuri .= '?navmap=1';
               } else {
                   $realuri .= '?symb='.$tail;
               }
           }
       } elsif ($tail =~ m{^/tiny/$cdom/(\w+)$}) {
           my $key = $1;
           my $tinyurl;
           my ($result,$cached)=&Apache::lonnet::is_cached_new('tiny',$cdom."\0".$key);
           if (defined($cached)) {
               $tinyurl = $result;
           } else {
               my $configuname = &Apache::lonnet::get_domainconfiguser($cdom);
               my %currtiny = &Apache::lonnet::get('tiny',[$key],$cdom,$configuname);
               if ($currtiny{$key} ne '') {
                   $tinyurl = $currtiny{$key};
                   &Apache::lonnet::do_cache_new('tiny',$cdom."\0".$key,$currtiny{$key},600);
               }
           }
           if ($tinyurl ne '') {
               my ($cnum,$symb) = split(/\&/,$tinyurl,2);
               my ($map,$resid,$url) = &Apache::lonnet::decode_symb($symb);
               if ($url =~ /\.(page|sequence)$/) {
                   $scope = 'map';
               } else {
                   $scope = 'resource';
               }
               if ((&Apache::lonnet::EXT('resource.0.encrypturl',$symb) =~ /^yes$/i) &&
                   (!$env{'request.role.adv'})) {
                   $realuri = &Apache::lonenc::encrypted(&Apache::lonnet::clutter($url));
                   if (($url =~ /\.sequence$/) &&
                       ($env{'course.'.$env{'request.course.id'}.'.type'} ne 'Placement')) {
                       $realuri .= '?navmap=1';
                   } else {
                       $realuri .= '?symb='.&Apache::lonenc::encrypted($symb);
                   }
               } else {
                   $realuri = &Apache::lonnet::clutter($url);
                   if (($url =~ /\.sequence$/) &&
                       ($env{'course.'.$env{'request.course.id'}.'.type'} ne 'Placement')) {
                       $realuri .= '?navmap=1';
                   } else {
                       $realuri .= '?symb='.$symb;
                   }
               }
           }
       } elsif ($tail =~ m{^/$cdom/$cnum$}) {
           $scope = 'course';
           $realuri = '/adm/navmaps';
       }
       return ($scope,$realuri);
   }
   
 1;  1;

Removed from v.1.5  
changed lines
  Added in v.1.6


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