--- loncom/interface/lontiny.pm 2025/01/16 21:42:12 1.8.2.7 +++ loncom/interface/lontiny.pm 2024/02/10 14:12:32 1.22 @@ -2,7 +2,7 @@ # Extract domain, courseID, and symb from a shortened URL, # and switch role to a role in designated course. # -# $Id: lontiny.pm,v 1.8.2.7 2025/01/16 21:42:12 raeburn Exp $ +# $Id: lontiny.pm,v 1.22 2024/02/10 14:12:32 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -99,7 +99,7 @@ sub handler { } if ($env{'request.course.id'} eq $cdom.'_'.$cnum) { # Check for ttoken - my $newlauncher = &launch_check($r->uri,$symb,$cdom,$cnum); + my $newlauncher = &launch_check($r->uri,$symb); my ($map,$resid,$url) = &Apache::lonnet::decode_symb($symb); if (&Apache::lonnet::is_on_map($url)) { my $realuri; @@ -307,7 +307,7 @@ sub handler { } sub launch_check { - my ($linkuri,$symb,$cdom,$cnum) = @_; + my ($linkuri,$symb) = @_; my ($linkprotector,$linkproturi,$linkprotexit,$linkprotpbid,$linkprotpburl, $linkkey,$newlauncher,$prevlaunch); if ($env{'form.ttoken'}) { @@ -447,11 +447,6 @@ sub launch_check { } if ($linkprotector) { &Apache::lonnet::appenv({'request.linkprot' => $linkprotector.':'.$linkproturi}); - if ($linkprotpburl && $linkprotpbid) { - my ($res,$error) = &store_passback_info($cdom,$cnum,$linkuri,$linkprotector, - $scope,$symb,$linkprotpbid,$linkprotpburl, - $currdeeplinklogin); - } } elsif ($env{'request.linkprot'}) { &Apache::lonnet::delenv('request.linkprot'); } @@ -530,68 +525,6 @@ sub launch_check { return $newlauncher; } -# -# Store linkprotpburl and linkprotpbid in user's nohist_$cid_linkprot_pb.db -# $linkuri\0$linkprotector\0$scope = [$linkprotpbid,$linkprotpburl] -# Separately store $symb in course's nohist_linkprot_passback.db -# which should trigger passback: -# $symb => {$linkuri\0$linkprotector\0$scope => 1}; -# - -sub store_passback_info { - my ($cdom,$cnum,$linkuri,$linkprotector,$scope,$symb, - $linkprotpbid,$linkprotpburl,$currdeeplinklogin) = @_; - my $key = join("\0",($linkuri,$linkprotector,$scope)); - my $namespace = 'nohist_'.$cdom.'_'.$cnum.'_linkprot_pb'; - if ($linkuri eq $currdeeplinklogin) { - my %pbinfo = &Apache::lonnet::get($namespace,[$key]); - if (ref($pbinfo{$key}) eq 'ARRAY') { - if (($pbinfo{$key}[0] eq $linkprotpbid) && - ($pbinfo{$key}[1] eq $linkprotpburl)) { - return ('ok'); - } - } - } - my $now = time; - my $result = &Apache::lonnet::cput($namespace,{$key => [$linkprotpbid,$linkprotpburl]}); - my $error; - if (($result eq 'ok') || ($result eq 'con_delayed')) { - $namespace = 'nohist_linkprot_passback'; - my %triggers = &Apache::lonnet::get($namespace,[$symb],$cdom,$cnum); - my $newtrigger; - if ((exists($triggers{$symb})) && (ref($triggers{$symb}) eq 'HASH')) { - unless (exists($triggers{$symb}{$key})) { - $newtrigger = 1; - } - } else { - $newtrigger = 1; - } - if ($newtrigger) { - my ($lockhash,$tries,$gotlock); - $lockhash = { - lock => $env{'user.name'}. - ':'.$env{'user.domain'}, - }; - $tries = 0; - $gotlock = &Apache::lonnet::newput($namespace,$lockhash,$cdom,$cnum); - while (($gotlock ne 'ok') && ($tries<10)) { - $tries ++; - sleep (0.1); - $gotlock = &Apache::lonnet::newput($namespace,$lockhash,$cdom,$cnum); - } - if ($gotlock eq 'ok') { - %triggers = &Apache::lonnet::get($namespace,[$symb],$cdom,$cnum); - $triggers{$symb}{$key} = 1; - $result = &Apache::lonnet::cput($namespace,{$symb => $triggers{$symb}},$cdom,$cnum); - my $dellockoutcome = &Apache::lonnet::del($namespace,['lock'],$cdom,$cnum); - } else { - $error = 'nolock'; - } - } - } - return ($result,$error); -} - sub do_redirect { my ($r,$destination,$linkprot) = @_; my $windowname = 'loncapaclient';