--- loncom/auth/lonroles.pm 2009/02/26 16:17:33 1.217 +++ loncom/auth/lonroles.pm 2009/04/11 21:42:58 1.218 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # User Roles Screen # -# $Id: lonroles.pm,v 1.217 2009/02/26 16:17:33 schafran Exp $ +# $Id: lonroles.pm,v 1.218 2009/04/11 21:42:58 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -236,7 +236,8 @@ sub handler { if (my ($domain,$coursenum) = ($envkey =~ m-^form\.cc\./($match_domain)/($match_courseid)$-)) { if ($dcroles{$domain}) { - &check_privs($domain,$coursenum,$then,$now,'cc'); + &Apache::lonnet::check_adhoc_privs($domain,$coursenum, + $then,$now,'cc'); } last; } @@ -276,7 +277,8 @@ sub handler { if ($dcroles{$domain}) { my ($server_status,$home) = &check_author_homeserver($user,$domain); if (($server_status eq 'ok') || ($server_status eq 'switchserver')) { - &check_privs($domain,$user,$then,$now,'ca'); + &Apache::lonnet::check_adhoc_privs($domain,$user,$then, + $now,'ca'); if ($server_status eq 'switchserver') { my $trolecode = 'ca./'.$domain.'/'.$user; my $switchserver = '/adm/switchserver?' @@ -297,7 +299,8 @@ sub handler { foreach $envkey (keys %env) { next if ($envkey!~/^user\.role\./); my ($where,$trolecode,$role,$tstatus,$tend,$tstart); - &role_status($envkey,$then,$now,\$role,\$where,\$trolecode,\$tstatus,\$tstart,\$tend); + &Apache::lonnet::role_status($envkey,$then,$now,\$role,\$where, + \$trolecode,\$tstatus,\$tstart,\$tend); if ($env{'form.'.$trolecode}) { if ($tstatus eq 'is') { $where=~s/^\///; @@ -654,7 +657,8 @@ ENDHEADER my $sortkey; if ($envkey=~/^user\.role\./) { my ($role,$where,$trolecode,$tstart,$tend,$tremark,$tstatus,$tpstart,$tpend); - &role_status($envkey,$then,$now,\$role,\$where,\$trolecode,\$tstatus,\$tstart,\$tend); + &Apache::lonnet::role_status($envkey,$then,$now,\$role,\$where, + \$trolecode,\$tstatus,\$tstart,\$tend); next if (!defined($role) || $role eq '' || $role =~ /^gr/); my $timezone = &role_timezone($where,\%timezones); $tremark=''; @@ -1181,31 +1185,6 @@ sub privileges_info { return $output; } -sub role_status { - my ($rolekey,$then,$now,$role,$where,$trolecode,$tstatus,$tstart,$tend) = @_; - my @pwhere = (); - if (exists($env{$rolekey}) && $env{$rolekey} ne '') { - (undef,undef,$$role,@pwhere)=split(/\./,$rolekey); - unless (!defined($$role) || $$role eq '') { - $$where=join('.',@pwhere); - $$trolecode=$$role.'.'.$$where; - ($$tstart,$$tend)=split(/\./,$env{$rolekey}); - $$tstatus='is'; - if ($$tstart && $$tstart>$then) { - $$tstatus='future'; - if ($$tstart<$now) { $$tstatus='will'; } - } - if ($$tend) { - if ($$tend<$then) { - $$tstatus='expired'; - } elsif ($$tend<$now) { - $$tstatus='will_not'; - } - } - } - } -} - sub build_roletext { my ($trolecode,$tdom,$trest,$tstatus,$tryagain,$advanced,$tremark,$tbg,$trole,$twhere,$tpstart,$tpend,$nochoose,$button,$switchserver,$reinit) = @_; my $roletext=&Apache::loncommon::start_data_table_row(); @@ -1310,20 +1289,6 @@ sub check_author_homeserver { } } -sub check_privs { - my ($cdom,$cnum,$then,$now,$checkrole) = @_; - my $cckey = 'user.role.'.$checkrole.'./'.$cdom.'/'.$cnum; - if ($env{$cckey}) { - my ($role,$where,$trolecode,$tstart,$tend,$tremark,$tstatus,$tpstart,$tpend); - &role_status($cckey,$then,$now,\$role,\$where,\$trolecode,\$tstatus,\$tstart,\$tend); - unless (($tstatus eq 'is') || ($tstatus eq 'will_not')) { - &set_privileges($cdom,$cnum,$checkrole); - } - } else { - &set_privileges($cdom,$cnum,$checkrole); - } -} - sub check_fordc { my ($dcroles,$then) = @_; my $numdc = 0; @@ -1535,32 +1500,6 @@ sub recent_filename { return 'nohist_recent_'.&escape($area); } -sub set_privileges { -# role can be cc or ca - my ($dcdom,$pickedcourse,$role) = @_; - my $area = '/'.$dcdom.'/'.$pickedcourse; - my $spec = $role.'.'.$area; - my %userroles = &Apache::lonnet::set_arearole($role,$area,'','', - $env{'user.domain'}, - $env{'user.name'}); - my %ccrole = (); - &Apache::lonnet::standard_roleprivs(\%ccrole,$role,$dcdom,$spec,$pickedcourse,$area); - my ($author,$adv)= &Apache::lonnet::set_userprivs(\%userroles,\%ccrole); - &Apache::lonnet::appenv(\%userroles,[$role,'cm']); - - &Apache::lonnet::log($env{'user.domain'}, - $env{'user.name'}, - $env{'user.home'}, - "Role ".$role); - &Apache::lonnet::appenv( - {'request.role' => $spec, - 'request.role.domain' => $dcdom, - 'request.course.sec' => ''}); - my $tadv=0; - if (&Apache::lonnet::allowed('adv') eq 'F') { $tadv=1; } - &Apache::lonnet::appenv({'request.role.adv' => $tadv}); -} - sub courseloadpage { my ($courseid) = @_; my $startpage;