version 1.22, 2021/08/07 20:11:53
|
version 1.28, 2022/02/01 19:47:20
|
Line 197 sub handler {
|
Line 197 sub handler {
|
delete($env{'form.'.$key}); |
delete($env{'form.'.$key}); |
} |
} |
my $ltoken = &Apache::lonnet::tmpput({'linkprot' => $itemid.$ltitype.':'.$tail}, |
my $ltoken = &Apache::lonnet::tmpput({'linkprot' => $itemid.$ltitype.':'.$tail}, |
$lonhost); |
$lonhost,'link'); |
if ($ltoken) { |
if ($ltoken) { |
$r->internal_redirect($tail.'?ltoken='.$ltoken); |
$r->internal_redirect($tail.'?ltoken='.$ltoken); |
$r->set_handlers('PerlHandler'=> undef); |
$r->set_handlers('PerlHandler'=> undef); |
Line 495 sub handler {
|
Line 495 sub handler {
|
if ($sourcecrs ne '') { |
if ($sourcecrs ne '') { |
%consumers = &Apache::lonnet::get_dom('lticonsumers',[$sourcecrs],$cdom); |
%consumers = &Apache::lonnet::get_dom('lticonsumers',[$sourcecrs],$cdom); |
if (exists($consumers{$sourcecrs})) { |
if (exists($consumers{$sourcecrs})) { |
if ($consumers{$sourcecrs} =~ /^$match_courseid$/) { |
if ($consumers{$sourcecrs} =~ /^\Q$itemid:\E($match_courseid)$/) { |
my $crshome = &Apache::lonnet::homeserver($consumers{$sourcecrs},$cdom); |
$storedcnum = $1; |
|
my $crshome = &Apache::lonnet::homeserver($storedcnum,$cdom); |
if ($crshome =~ /(con_lost|no_host|no_such_host)/) { |
if ($crshome =~ /(con_lost|no_host|no_such_host)/) { |
&invalid_request($r,20); |
&invalid_request($r,20); |
return OK; |
return OK; |
} else { |
} else { |
$posscnum = $consumers{$sourcecrs}; |
$posscnum = $storedcnum; |
} |
} |
} |
} |
} |
} |
Line 613 sub handler {
|
Line 614 sub handler {
|
|
|
my $reqcrs; |
my $reqcrs; |
if ($cnum eq '') { |
if ($cnum eq '') { |
if ((@ltiroles) && ($lti{$itemid}{'mapcrs'}) && |
if ($lti{$itemid}{'crsinc'}) { |
($ltiroles[0] eq 'Instructor') && ($lcroles[0] eq 'cc') && ($lti{$itemid}{'makecrs'})) { |
if ((@ltiroles) && ($lti{$itemid}{'mapcrs'}) && |
my (%can_request,%request_domains); |
($ltiroles[0] eq 'Instructor') && ($lcroles[0] eq 'cc') && ($lti{$itemid}{'makecrs'})) { |
&Apache::lonnet::check_can_request($cdom,\%can_request,\%request_domains,$uname,$udom); |
my (%can_request,%request_domains); |
if ($can_request{'lti'}) { |
&Apache::lonnet::check_can_request($cdom,\%can_request,\%request_domains,$uname,$udom); |
$reqcrs = 1; |
if ($can_request{'lti'}) { |
<i_session($r,$itemid,$uname,$udom,$uhome,$lonhost,undef,$mapurl,$tail, |
$reqcrs = 1; |
$symb,$cdom,$cnum,$params,\@ltiroles,$lti{$itemid},\@lcroles, |
<i_session($r,$itemid,$uname,$udom,$uhome,$lonhost,undef,$mapurl,$tail, |
$reqcrs,$sourcecrs); |
$symb,$cdom,$cnum,$params,\@ltiroles,$lti{$itemid},\@lcroles, |
|
$reqcrs,$sourcecrs); |
|
} else { |
|
&invalid_request($r,27); |
|
} |
} else { |
} else { |
&invalid_request($r,27); |
&invalid_request($r,28); |
} |
} |
} else { |
} else { |
&invalid_request($r,28); |
<i_session($r,$itemid,$uname,$udom,$uhome,$lonhost,undef,$mapurl,$tail, |
|
$symb,$cdom,$cnum,$params,\@ltiroles,$lti{$itemid},\@lcroles, |
|
$reqcrs,$sourcecrs); |
} |
} |
return OK; |
return OK; |
} |
} |
Line 634 sub handler {
|
Line 641 sub handler {
|
# |
# |
# If LON-CAPA course is a Community, and LON-CAPA role |
# If LON-CAPA course is a Community, and LON-CAPA role |
# indicated is cc, change role indicated to co. |
# indicated is cc, change role indicated to co. |
# |
# |
|
|
my %crsenv; |
my %crsenv; |
if ($lcroles[0] eq 'cc') { |
if ($lcroles[0] eq 'cc') { |
Line 739 sub handler {
|
Line 746 sub handler {
|
} |
} |
|
|
# |
# |
# Store consumer-to-LON-CAPA course mapping |
# Retrieve course type of LON-CAPA course to check if mapping from a Consumer |
|
# course identifier permitted for this type of course (one of: official, |
|
# unofficial, community, textbook, placement or lti. |
|
# |
|
|
|
unless (%crsenv) { |
|
%crsenv = &Apache::lonnet::coursedescription($cdom.'_'.$cnum); |
|
} |
|
my $crstype = lc($crsenv{'type'}); |
|
if ($crstype eq '') { |
|
$crstype = 'course'; |
|
} |
|
if ($crstype eq 'course') { |
|
if ($crsenv{'internal.coursecode'}) { |
|
$crstype = 'official'; |
|
} elsif ($crsenv{'internal.textbook'}) { |
|
$crstype = 'textbook'; |
|
} elsif ($crsenv{'internal.lti'}) { |
|
$crstype = 'lti'; |
|
} else { |
|
$crstype = 'unofficial'; |
|
} |
|
} |
|
|
|
# |
|
# Store consumer-to-LON-CAPA course mapping if permitted |
# |
# |
|
|
if (($sourcecrs ne '') && ($consumers{$sourcecrs} eq '') && ($cnum ne '')) { |
if (($lti{$itemid}{'storecrs'}) && ($sourcecrs ne '') && |
&Apache::lonnet::put_dom('lticonsumers',{ $sourcecrs => $cnum },$cdom); |
($consumers{$sourcecrs} eq '') && ($cnum ne '')) { |
|
if (ref($lti{$itemid}{'mapcrstype'}) eq 'ARRAY') { |
|
if (grep(/^$crstype$/,@{$lti{$itemid}{'mapcrstype'}})) { |
|
&Apache::lonnet::put_dom('lticonsumers',{ $sourcecrs => $itemid.':'.$cnum },$cdom); |
|
} |
|
} |
} |
} |
|
|
# |
# |
Line 854 sub lti_session {
|
Line 891 sub lti_session {
|
my $lowest_load; |
my $lowest_load; |
($otherserver,undef,undef,undef,$lowest_load) = &Apache::lonnet::choose_server($udom); |
($otherserver,undef,undef,undef,$lowest_load) = &Apache::lonnet::choose_server($udom); |
if ($lowest_load > 100) { |
if ($lowest_load > 100) { |
$otherserver = &Apache::lonnet::spareserver($lowest_load,$lowest_load,1,$udom); |
$otherserver = &Apache::lonnet::spareserver($r,$lowest_load,$lowest_load,1,$udom); |
} |
} |
} |
} |
if ($otherserver ne '') { |
if ($otherserver ne '') { |
Line 894 sub lti_session {
|
Line 931 sub lti_session {
|
$env{'request.lti.uri'} = $tail; |
$env{'request.lti.uri'} = $tail; |
} else { |
} else { |
unless ($tail eq '/adm/roles') { |
unless ($tail eq '/adm/roles') { |
$env{'form.origurl'} = '/adm/navmaps'; |
if ($cnum) { |
|
$env{'form.origurl'} = '/adm/navmaps'; |
|
} |
} |
} |
} |
} |
} |
} |
Line 930 sub lti_session {
|
Line 969 sub lti_session {
|
if ($params->{'launch_presentation_document_target'}) { |
if ($params->{'launch_presentation_document_target'}) { |
$env{'request.lti.target'} = $params->{'launch_presentation_document_target'}; |
$env{'request.lti.target'} = $params->{'launch_presentation_document_target'}; |
} |
} |
foreach my $key (%{$params}) { |
foreach my $key (keys(%{$params})) { |
delete($env{'form.'.$key}); |
delete($env{'form.'.$key}); |
} |
} |
my $redirecturl = '/adm/switchserver'; |
my $redirecturl = '/adm/switchserver'; |
Line 942 sub lti_session {
|
Line 981 sub lti_session {
|
} else { |
} else { |
# need to login them in, so generate the need data that |
# need to login them in, so generate the need data that |
# migrate expects to do login |
# migrate expects to do login |
foreach my $key (%{$params}) { |
foreach my $key (keys(%{$params})) { |
delete($env{'form.'.$key}); |
delete($env{'form.'.$key}); |
} |
} |
if (($ltihash->{'callback'}) && ($params->{$ltihash->{'callback'}})) { |
if (($ltihash->{'callback'}) && ($params->{$ltihash->{'callback'}})) { |
Line 1002 sub lti_session {
|
Line 1041 sub lti_session {
|
$info{'origurl'} = $tail; |
$info{'origurl'} = $tail; |
} else { |
} else { |
unless ($tail eq '/adm/roles') { |
unless ($tail eq '/adm/roles') { |
$info{'origurl'} = '/adm/navmaps'; |
if ($cnum) { |
|
$info{'origurl'} = '/adm/navmaps'; |
|
} |
} |
} |
} |
} |
} |
} |