--- rat/lonuserstate.pm 2022/10/05 22:54:00 1.149.2.5.2.3 +++ rat/lonuserstate.pm 2022/10/04 20:39:57 1.169 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Construct and maintain state and binary representation of course for user # -# $Id: lonuserstate.pm,v 1.149.2.5.2.3 2022/10/05 22:54:00 raeburn Exp $ +# $Id: lonuserstate.pm,v 1.169 2022/10/04 20:39:57 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -42,7 +42,7 @@ use Safe::Hole; use Opcode; use Apache::lonenc; use Fcntl qw(:flock); -use LONCAPA qw(:DEFAULT :match); +use LONCAPA qw(:DEFAULT :match); use File::Basename; @@ -260,9 +260,9 @@ sub loadmap { push(@map_ids, $resource_id); if ($hash{'src_'.$lpc.'.'.$resource_id}) { $rescount{$lpc} ++; - if (($hash{'src_'.$lpc.'.'.$resource_id}=~/\.sequence$/) || + if (($hash{'src_'.$lpc.'.'.$resource_id}=~/\.sequence$/) || ($hash{'src_'.$lpc.'.'.$resource_id}=~/\.page$/)) { - $mapcount{$lpc} ++; + $mapcount{$lpc} ++; } } unless ($codechecked) { @@ -405,6 +405,12 @@ sub error_detail { if (($parent_pc eq '0') && ($hash{'map_id_1'} =~ m{^/res/($match_domain)/($match_username)/.+\.(sequence|page)$})) { ($audomfile,$aunamefile) = ($1,$2); ($editfile,$filerole,$fileswitch) = &canedit_published($audomfile,$aunamefile); + if ($fileswitch) { + unless ((&Apache::lonnet::will_trust('othcoau',$env{'user.domain'},$audomfile)) && + (&Apache::lonnet::will_trust('coaurem',$audomfile,$env{'user.domain'}))) { + undef($editfile); + } + } $errinfo = &mt('Top level published sequence file is missing.'); } else { if ($parent_pc eq '1') { @@ -478,6 +484,12 @@ sub error_detail { if ($uri =~ m{^/res/($match_domain)/($match_username)/.+\.(sequence|page)$}) { ($audomfile,$aunamefile) = ($1,$2); ($editfile,$filerole,$fileswitch) = &canedit_published($audomfile,$aunamefile); + if ($fileswitch) { + unless ((&Apache::lonnet::will_trust('othcoau',$env{'user.domain'},$audomfile)) && + (&Apache::lonnet::will_trust('coaurem',$audomfile,$env{'user.domain'}))) { + undef($editfile); + } + } } } if ($errinfo) { @@ -492,8 +504,6 @@ sub error_detail { } else { $errinfo .= &mt('To rectify this problem, create and publish the missing file'); } - my $fileurl = $uri; - $fileurl =~s{^/res/}{/priv/}; if ($fileswitch) { my $rolename = &Apache::lonnet::plaintext($filerole); my $rolecode; @@ -503,10 +513,10 @@ sub error_detail { $rolecode = $filerole.'./'.$audomfile.'/'.$aunamefile; } $errinfo .= '.
'.&mt('You will need to [_1]switch server[_2].', - '',''); + '',''); } else { - &js_escape(\$fileurl); + my $fileurl = $uri; + $fileurl =~s{^/res/}{/priv/}; $errinfo .= ': '.&mt('Create the missing file').''; } } @@ -527,15 +537,18 @@ sub error_detail { } else { $errinfo .= &mt('To rectify this problem edit the parent map to remove the reference to the missing file'); } - my $mapurl = $hash{'map_id_'.$parent_pc}; - $mapurl =~s{^/res/}{/priv/}; if ($switchserver) { - $errinfo .= '.
'. - &mt('You will need to [_1]switch server[_2].', - '',''); + $errinfo .= '.
'; + if ((&Apache::lonnet::will_trust('othcoau',$env{'user.domain'},$audom)) && + (&Apache::lonnet::will_trust('coaurem',$audom,$env{'user.domain'}))) { + $errinfo .= &mt('You will need to [_1]switch server[_2].', + '',''); + } else { + $errinfo .= &mt('Session switch required but prohibited.'); + } } else { - &js_escape(\$mapurl); + my $mapurl = $hash{'map_id_'.$parent_pc}; + $mapurl =~s{^/res/}{/priv/}; $errinfo .= ': '.&mt('Edit the map').''; } } elsif ($uploaded && $courseid) { @@ -1713,7 +1726,7 @@ sub readmap { if ($redirect) { $retfurl = $url; } - } + } return ($retfurl,$errtext); } @@ -2030,6 +2043,10 @@ sub get_mapparam { last; } } + my $recursechk=$usercourseprefix.'.'.$item.'___(rec).'.$what; + if (defined($$useropt{$recursechk})) { + return $$useropt{$recursechk}; + } } } @@ -2051,6 +2068,10 @@ sub get_mapparam { last; } } + my $recursechk=$usercourseprefix.'.['.$cgroup.'].'.$item.'___(rec).'.$what; + if (defined($$courseopt{$recursechk})) { + return $$courseopt{$recursechk}; + } } } @@ -2072,6 +2093,10 @@ sub get_mapparam { last; } } + my $recursechk=$usercourseprefix.'.['.$csec.'].'.$item.'___(rec).'.$what; + if (defined($$courseopt{$recursechk})) { + return $$courseopt{$recursechk}; + } } } @@ -2115,6 +2140,10 @@ sub get_mapparam { last; } } + my $recursechk=$usercourseprefix.'.'.$item.'___(rec).'.$what; + if (defined($$courseopt{$recursechk})) { + return $$courseopt{$recursechk}; + } } } }