--- rat/lonuserstate.pm 2022/10/05 22:54:00 1.149.2.5.2.3
+++ rat/lonuserstate.pm 2022/10/05 16:11:25 1.170
@@ -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.170 2022/10/05 16:11:25 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) {
@@ -530,10 +542,15 @@ sub error_detail {
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);
$errinfo .= ': '.&mt('Edit the map').'';
@@ -1713,7 +1730,7 @@ sub readmap {
if ($redirect) {
$retfurl = $url;
}
- }
+ }
return ($retfurl,$errtext);
}
@@ -2030,6 +2047,10 @@ sub get_mapparam {
last;
}
}
+ my $recursechk=$usercourseprefix.'.'.$item.'___(rec).'.$what;
+ if (defined($$useropt{$recursechk})) {
+ return $$useropt{$recursechk};
+ }
}
}
@@ -2051,6 +2072,10 @@ sub get_mapparam {
last;
}
}
+ my $recursechk=$usercourseprefix.'.['.$cgroup.'].'.$item.'___(rec).'.$what;
+ if (defined($$courseopt{$recursechk})) {
+ return $$courseopt{$recursechk};
+ }
}
}
@@ -2072,6 +2097,10 @@ sub get_mapparam {
last;
}
}
+ my $recursechk=$usercourseprefix.'.['.$csec.'].'.$item.'___(rec).'.$what;
+ if (defined($$courseopt{$recursechk})) {
+ return $$courseopt{$recursechk};
+ }
}
}
@@ -2115,6 +2144,10 @@ sub get_mapparam {
last;
}
}
+ my $recursechk=$usercourseprefix.'.'.$item.'___(rec).'.$what;
+ if (defined($$courseopt{$recursechk})) {
+ return $$courseopt{$recursechk};
+ }
}
}
}