\E}{
}gs; if (wantarray) { return ($output, $response); } else { @@ -6749,7 +6753,7 @@ sub store { # -------------------------------------------------------------- Critical Store sub cstore { - my ($storehash,$symb,$namespace,$domain,$stuname,$laststore,$ip,$nolog) = @_; + my ($storehash,$symb,$namespace,$domain,$stuname,$laststore) = @_; my $home=''; if ($stuname) { $home=&homeserver($stuname,$domain); } @@ -6774,11 +6778,7 @@ sub cstore { } if (!$home) { $home=$env{'user.home'}; } - if ($ip ne '') { - $$storehash{'ip'} = $ip; - } else { - $$storehash{'ip'} = &get_requestor_ip(); - } + $$storehash{'ip'} = &get_requestor_ip(); $$storehash{'host'}=$perlvar{'lonHostID'}; my $namevalue=''; @@ -6786,9 +6786,7 @@ sub cstore { $namevalue.=&escape($key).'='.&freeze_escape($$storehash{$key}).'&'; } $namevalue=~s/\&$//; - unless ($nolog) { - &courselog($symb.':'.$stuname.':'.$domain.':CSTORE:'.$namevalue); - } + &courselog($symb.':'.$stuname.':'.$domain.':CSTORE:'.$namevalue); return critical ("store:$domain:$stuname:$namespace:$symb:$namevalue:$laststore","$home"); } @@ -7530,6 +7528,27 @@ sub set_adhoc_privileges { if (&allowed('adv') eq 'F') { $tadv=1; } &appenv({'request.role.adv' => $tadv}); } + if ($role eq 'ca') { + my @ca_settings = ('authoreditors','coauthorlist'); + my %info = &userenvironment($dcdom,$pickedcourse,@ca_settings); + foreach my $item (@ca_settings) { + if (exists($info{$item})) { + my $name = $item; + if ($item eq 'authoreditors') { + $name = 'editors'; + unless ($info{'authoreditors'}) { + my %domdefs = &get_domain_defaults($dcdom); + if ($domdefs{$name} ne '') { + $info{'authoreditors'} = $domdefs{$name}; + } else { + $info{'authoreditors'} = 'edit,xml'; + } + } + } + &appenv({"environment.internal.$name./$dcdom/$pickedcourse" => $info{$item}}); + } + } + } } # --------------------------------------------------------------- get interface @@ -11690,7 +11709,7 @@ sub is_course { } sub store_userdata { - my ($storehash,$datakey,$namespace,$udom,$uname) = @_; + my ($storehash,$datakey,$namespace,$udom,$uname,$ip) = @_; my $result; if ($datakey ne '') { if (ref($storehash) eq 'HASH') { @@ -11702,7 +11721,11 @@ sub store_userdata { if (($uhome eq '') || ($uhome eq 'no_host')) { $result = 'error: no_host'; } else { - $storehash->{'ip'} = &get_requestor_ip(); + if ($ip ne '') { + $storehash->{'ip'} = $ip; + } else { + $storehash->{'ip'} = &get_requestor_ip(); + } $storehash->{'host'} = $perlvar{'lonHostID'}; my $namevalue=''; @@ -15094,6 +15117,9 @@ sub whichuser { $courseid=$tmp_courseid; ($domain)=&get_env_multiple('form.grade_domain'); ($name)=&get_env_multiple('form.grade_username'); + if ($name eq 'public' && $domain eq 'public') { + $publicuser = 1; + } return ($symb,$courseid,$domain,$name,$publicuser); } } @@ -15110,6 +15136,7 @@ sub whichuser { $env{'form.username'}.=time.rand(10000000); } $name.=$env{'form.username'}; + $publicuser = 1; } return ($symb,$courseid,$domain,$name,$publicuser);