--- loncom/lonnet/perl/lonnet.pm 2004/01/27 22:59:39 1.459.2.2.2.1 +++ loncom/lonnet/perl/lonnet.pm 2004/01/30 14:42:00 1.467 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.459.2.2.2.1 2004/01/27 22:59:39 albertel Exp $ +# $Id: lonnet.pm,v 1.467 2004/01/30 14:42:00 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1446,6 +1446,7 @@ sub get_course_adv_roles { if (($tend) && ($tend<$now)) { next; } if (($tstart) && ($now<$tstart)) { next; } my ($role,$username,$domain,$section)=split(/\:/,$_); + if (&privileged($username,$domain)) { next; } my $key=&plaintext($role); if ($section) { $key.=' (Sec/Grp '.$section.')'; } if ($returnhash{$key}) { @@ -2127,6 +2128,36 @@ sub coursedescription { return %returnhash; } +# -------------------------------------------------See if a user is privileged + +sub privileged { + my ($username,$domain)=@_; + my $rolesdump=&reply("dump:$domain:$username:roles", + &homeserver($username,$domain)); + if (($rolesdump eq 'con_lost') || ($rolesdump eq '')) { return 0; } + my $now=time; + if ($rolesdump ne '') { + foreach (split(/&/,$rolesdump)) { + if ($_!~/^rolesdef\&/) { + my ($area,$role)=split(/=/,$_); + $area=~s/\_\w\w$//; + my ($trole,$tend,$tstart)=split(/_/,$role); + if (($trole eq 'dc') || ($trole eq 'su')) { + my $active=1; + if ($tend) { + if ($tend<$now) { $active=0; } + } + if ($tstart) { + if ($tstart>$now) { $active=0; } + } + if ($active) { return 1; } + } + } + } + } + return 0; +} + # -------------------------------------------------------- Get user privileges sub rolesinit { @@ -4443,22 +4474,24 @@ sub filelocation { sub hreflocation { my ($dir,$file)=@_; - unless (($file=~/^http:\/\//i) || ($file=~/^\//)) { - my $finalpath=filelocation($dir,$file); - $finalpath=~s/^\/home\/httpd\/html//; - $finalpath=~s-/home/(\w+)/public_html/-/~$1/-; - return $finalpath; - } else { - return $file; + unless (($file=~m-^http://-i) || ($file=~m-^/-)) { + my $finalpath=filelocation($dir,$file); + $finalpath=~s-^/home/httpd/html--; + $finalpath=~s-^/home/(\w+)/public_html/-/~$1/-; + return $finalpath; + } elsif ($file=~m-^/home-) { + $file=~s-^/home/httpd/html--; + $file=~s-^/home/(\w+)/public_html/-/~$1/-; + return $file; } + return $file; } - sub current_machine_domains { my $hostname=$hostname{$perlvar{'lonHostID'}}; my @domains; while( my($id, $name) = each(%hostname)) { - &logthis("-$id-$name-$hostname-"); +# &logthis("-$id-$name-$hostname-"); if ($hostname eq $name) { push(@domains,$hostdom{$id}); } @@ -4470,14 +4503,14 @@ sub current_machine_ids { my $hostname=$hostname{$perlvar{'lonHostID'}}; my @ids; while( my($id, $name) = each(%hostname)) { - &logthis("-$id-$name-$hostname-"); +# &logthis("-$id-$name-$hostname-"); if ($hostname eq $name) { push(@ids,$id); } } return @ids; } - + # ------------------------------------------------------------- Declutters URLs sub declutter {