version 1.174, 2006/12/14 20:49:23
|
version 1.175, 2006/12/20 20:46:18
|
Line 604 ENDHEADER
|
Line 604 ENDHEADER
|
} |
} |
} |
} |
if ($tsection) { |
if ($tsection) { |
$twhere.='<br />'.&mt('Section/Group').': '.$tsection; |
$twhere.='<br />'.&mt('Section').': '.$tsection; |
} |
} |
if ($role ne 'st') { $twhere.="<br />".&mt('Domain').":".$tdom; } |
if ($role ne 'st') { $twhere.="<br />".&mt('Domain').":".$tdom; } |
} elsif ($tdom) { |
} elsif ($tdom) { |
Line 741 ENDHEADER
|
Line 741 ENDHEADER
|
# ------------------------------------------------------------ Privileges Info |
# ------------------------------------------------------------ Privileges Info |
if (($advanced) && (($env{'user.error.msg'}) || ($error))) { |
if (($advanced) && (($env{'user.error.msg'}) || ($error))) { |
$r->print('<hr /><h2>Current Privileges</h2>'); |
$r->print('<hr /><h2>Current Privileges</h2>'); |
|
$r->print(&privileges_info()); |
foreach $envkey (sort keys %env) { |
|
if ($envkey=~/^user\.priv\.$env{'request.role'}\./) { |
|
my $where=$envkey; |
|
$where=~s/^user\.priv\.$env{'request.role'}\.//; |
|
my $ttype; |
|
my $twhere; |
|
my ($tdom,$trest,$tsec)= |
|
split(/\//,Apache::lonnet::declutter($where)); |
|
if ($trest) { |
|
if ($env{'course.'.$tdom.'_'.$trest.'.description'} eq 'ca') { |
|
$ttype='Construction Space'; |
|
$twhere='User: '.$trest.', Domain: '.$tdom; |
|
} else { |
|
$ttype= |
|
&Apache::loncommon::course_type($tdom.'_'.$trest); |
|
$twhere=$env{'course.'.$tdom.'_'.$trest.'.description'}; |
|
if ($tsec) { |
|
$twhere.=' (Section: '.$tsec.')'; |
|
} |
|
} |
|
} elsif ($tdom) { |
|
$ttype='Domain'; |
|
$twhere=$tdom; |
|
} else { |
|
$ttype='System'; |
|
$twhere='/'; |
|
} |
|
$r->print("\n<h3>".$ttype.': '.$twhere.'</h3><ul>'); |
|
foreach (sort split(/:/,$env{$envkey})) { |
|
if ($_) { |
|
my ($prv,$restr)=split(/\&/,$_); |
|
my $trestr=''; |
|
if ($restr ne 'F') { |
|
my $i; |
|
$trestr.=' ('; |
|
for ($i=0;$i<length($restr);$i++) { |
|
$trestr.= |
|
Apache::lonnet::plaintext(substr($restr,$i,1)); |
|
if ($i<length($restr)-1) { $trestr.=', '; } |
|
} |
|
$trestr.=')'; |
|
} |
|
$r->print('<li>'. |
|
Apache::lonnet::plaintext($prv).$trestr. |
|
'</li>'); |
|
} |
|
} |
|
$r->print('</ul>'); |
|
} |
|
} |
|
} |
} |
$r->print(&Apache::lonnet::getannounce()); |
$r->print(&Apache::lonnet::getannounce()); |
if ($advanced) { |
if ($advanced) { |
Line 803 ENDHEADER
|
Line 753 ENDHEADER
|
return OK; |
return OK; |
} |
} |
|
|
|
sub privileges_info { |
|
my ($which) = @_; |
|
my $output; |
|
|
|
$which ||= $env{'request.role'}; |
|
|
|
foreach my $envkey (sort(keys(%env))) { |
|
next if ($envkey!~/^user\.priv\.\Q$which\E\.(.*)/); |
|
|
|
my $where=$1; |
|
my $ttype; |
|
my $twhere; |
|
my (undef,$tdom,$trest,$tsec)=split(m{/},$where); |
|
if ($trest) { |
|
if ($env{'course.'.$tdom.'_'.$trest.'.description'} eq 'ca') { |
|
$ttype='Construction Space'; |
|
$twhere='User: '.$trest.', Domain: '.$tdom; |
|
} else { |
|
$ttype= &Apache::loncommon::course_type($tdom.'_'.$trest); |
|
$twhere=$env{'course.'.$tdom.'_'.$trest.'.description'}; |
|
if ($tsec) { |
|
my $sec_type = 'Section'; |
|
if (exists($env{"user.role.gr.$where"})) { |
|
$sec_type = 'Group'; |
|
} |
|
$twhere.=' ('.$sec_type.': '.$tsec.')'; |
|
} |
|
} |
|
} elsif ($tdom) { |
|
$ttype='Domain'; |
|
$twhere=$tdom; |
|
} else { |
|
$ttype='System'; |
|
$twhere='/'; |
|
} |
|
$output .= "\n<h3>".$ttype.': '.$twhere.'</h3>'."\n<ul>"; |
|
foreach my $priv (sort(split(/:/,$env{$envkey}))) { |
|
next if (!$priv); |
|
|
|
my ($prv,$restr)=split(/\&/,$priv); |
|
my $trestr=''; |
|
if ($restr ne 'F') { |
|
$trestr.=' ('. |
|
join(', ', |
|
map { &Apache::lonnet::plaintext($_) } |
|
(split('',$restr))).') '; |
|
} |
|
$output .= "\n\t". |
|
'<li>'.&Apache::lonnet::plaintext($prv).$trestr.'</li>'; |
|
} |
|
$output .= "\n".'</ul>'; |
|
} |
|
return $output; |
|
} |
|
|
sub role_status { |
sub role_status { |
my ($rolekey,$then,$now,$role,$where,$trolecode,$tstatus,$tstart,$tend) = @_; |
my ($rolekey,$then,$now,$role,$where,$trolecode,$tstatus,$tstart,$tend) = @_; |
my @pwhere = (); |
my @pwhere = (); |