--- loncom/lonnet/perl/lonnet.pm 2004/01/12 19:53:54 1.460 +++ loncom/lonnet/perl/lonnet.pm 2004/01/26 21:58:34 1.464 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.460 2004/01/12 19:53:54 albertel Exp $ +# $Id: lonnet.pm,v 1.464 2004/01/26 21:58:34 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -2127,6 +2127,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 { @@ -3792,7 +3822,9 @@ sub packages_tab_default { foreach my $package (split(/,/,$packages)) { my ($pack_type,$pack_part)=split(/_/,$package,2); if ($pack_part eq $part) { - return $packagetab{"$pack_type&$name&default"}; + if (defined($packagetab{"$pack_type&$name&default"})) { + return $packagetab{"$pack_type&$name&default"}; + } } } return undef; @@ -4427,7 +4459,7 @@ sub filelocation { $location=$file; } else { $file=~s/^$perlvar{'lonDocRoot'}//; - $file=~s:^/*res::; + $file=~s:^/res/:/:; if ( !( $file =~ m:^/:) ) { $location = $dir. '/'.$file; } else { @@ -4444,13 +4476,14 @@ sub hreflocation { unless (($file=~m-^http://-i) || ($file=~m-^/-)) { my $finalpath=filelocation($dir,$file); $finalpath=~s-^/home/httpd/html--; - $finalpath=~s-/home/(\w+)/public_html/-/~$1/-; + $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/-; + $file=~s-^/home/(\w+)/public_html/-/~$1/-; return $file; } + return $file; } # ------------------------------------------------------------- Declutters URLs