--- loncom/interface/loncommon.pm 2021/08/04 19:59:10 1.1363 +++ loncom/interface/loncommon.pm 2021/08/07 20:49:11 1.1364 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.1363 2021/08/04 19:59:10 raeburn Exp $ +# $Id: loncommon.pm,v 1.1364 2021/08/07 20:49:11 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -9188,29 +9188,41 @@ sub deeplink_login_symb { my ($cnum,$cdom) = @_; my $login_symb; if ($env{'request.deeplink.login'}) { - if ($env{'request.deeplink.login'} =~ m{^\Q/tiny/$cdom/\E(\w+)$}) { - my $key = $1; - my ($tinyurl,$login); - 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); - } + $login_symb = &symb_from_tinyurl($env{'request.deeplink.login'},$cnum,$cdom); + } + return $login_symb; +} + +sub symb_from_tinyurl { + my ($url,$cnum,$cdom) = @_; + if ($url =~ m{^\Q/tiny/$cdom/\E(\w+)$}) { + my $key = $1; + my ($tinyurl,$login); + 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 ($cnumreq,$posslogin) = split(/\&/,$tinyurl); - if ($cnumreq eq $cnum) { - $login_symb = $posslogin; - } + } + if ($tinyurl ne '') { + my ($cnumreq,$symb) = split(/\&/,$tinyurl); + if (wantarray) { + return ($cnumreq,$symb); + } elsif ($cnumreq eq $cnum) { + return $symb; } } } - return $login_symb; + if (wantarray) { + return (); + } else { + return; + } } sub wishlist_window {