--- loncom/lonnet/perl/lonnet.pm 2003/07/29 05:29:21 1.396
+++ loncom/lonnet/perl/lonnet.pm 2003/08/20 01:13:56 1.403
@@ -1,7 +1,7 @@
# The LearningOnline Network
# TCP networking package
#
-# $Id: lonnet.pm,v 1.396 2003/07/29 05:29:21 albertel Exp $
+# $Id: lonnet.pm,v 1.403 2003/08/20 01:13:56 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -76,7 +76,9 @@ qw(%perlvar %hostname %homecache %badSer
%libserv %pr %prp %metacache %packagetab %titlecache
%courselogs %accesshash %userrolehash $processmarker $dumpcount
%coursedombuf %coursenumbuf %coursehombuf %coursedescrbuf %courseresdatacache
- %domaindescription %domain_auth_def %domain_auth_arg_def $tmpdir);
+ %domaindescription %domain_auth_def %domain_auth_arg_def
+ %domain_lang_def %domain_city %domain_longi %domain_lati $tmpdir);
+
use IO::Socket;
use GDBM_File;
use Apache::Constants qw(:common :http);
@@ -1284,6 +1286,53 @@ sub get_course_adv_roles {
return %returnhash;
}
+sub get_my_roles {
+ my ($uname,$udom)=@_;
+ unless (defined($uname)) { $uname=$ENV{'user.name'}; }
+ unless (defined($udom)) { $udom=$ENV{'user.domain'}; }
+ my %dumphash=
+ &dump('nohist_userroles',$udom,$uname);
+ my %returnhash=();
+ my $now=time;
+ foreach (keys %dumphash) {
+ my ($tend,$tstart)=split(/\:/,$dumphash{$_});
+ if (($tstart) && ($tstart<0)) { next; }
+ if (($tend) && ($tend<$now)) { next; }
+ if (($tstart) && ($now<$tstart)) { next; }
+ my ($role,$username,$domain,$section)=split(/\:/,$_);
+ $returnhash{$username.':'.$domain.':'.$role}=$tstart.':'.$tend;
+ }
+ return %returnhash;
+}
+
+# ----------------------------------------------------- Frontpage Announcements
+#
+#
+
+sub postannounce {
+ my ($server,$text)=@_;
+ unless (&allowed('psa',$hostdom{$server})) { return 'refused'; }
+ unless ($text=~/\w/) { $text=''; }
+ return &reply('setannounce:'.&escape($text),$server);
+}
+
+sub getannounce {
+ if (my $fh=Apache::File->new($perlvar{'lonDocRoot'}.'/announcement.txt')) {
+ my $announcement='';
+ while (<$fh>) { $announcement .=$_; }
+ $fh->close();
+ if ($announcement=~/\w/) {
+ return
+ '
';
+ } else {
+ return '';
+ }
+ } else {
+ return '';
+ }
+}
+
# ---------------------------------------------------------- Course ID routines
# Deal with domain's nohist_courseid.db files
#
@@ -2209,6 +2258,9 @@ sub customaccess {
$access=($effect eq 'allow');
last;
}
+ if ($realm eq '' && $role eq '') {
+ $access=($effect eq 'allow');
+ }
}
return $access;
}
@@ -2221,6 +2273,7 @@ sub allowed {
my $orguri=$uri;
$uri=&declutter($uri);
+ if (defined($ENV{'allowed.'.$priv})) { return $ENV{'allowed.'.$priv}; }
# Free bre access to adm and meta resources
if ((($uri=~/^adm\//) || ($uri=~/\.meta$/)) && ($priv eq 'bre')) {
@@ -3070,7 +3123,7 @@ sub dirlist {
}
my $alldomstr='';
foreach (sort keys %alldom) {
- $alldomstr.=$perlvar{'lonDocRoot'}.'/res/'.$_.'&domain:';
+ $alldomstr.=$perlvar{'lonDocRoot'}.'/res/'.$_.'/&domain:';
}
$alldomstr=~s/:$//;
return split(/:/,$alldomstr);
@@ -3506,14 +3559,15 @@ sub metadata {
if ($liburi) {
$liburi=&declutter($liburi);
$filename=$liburi;
- }
+ } else {
+ delete($metacache{$uri.':packages'});
+ }
my %metathesekeys=();
unless ($filename=~/\.meta$/) { $filename.='.meta'; }
my $metastring=&getfile(&filelocation('',&clutter($filename)));
my $parser=HTML::LCParser->new(\$metastring);
my $token;
undef %metathesekeys;
- delete($metacache{$uri.':packages'});
while ($token=$parser->get_token) {
if ($token->[0] eq 'S') {
if (defined($token->[2]->{'package'})) {
@@ -4119,11 +4173,16 @@ BEGIN {
next if (/^(\#|\s*$)/);
# next if /^\#/;
chomp;
- my ($domain, $domain_description, $def_auth, $def_auth_arg)
- = split(/:/,$_,4);
- $domain_auth_def{$domain}=$def_auth;
+ my ($domain, $domain_description, $def_auth, $def_auth_arg,
+ $def_lang, $city, $longi, $lati) = split(/:/,$_);
+ $domain_auth_def{$domain}=$def_auth;
$domain_auth_arg_def{$domain}=$def_auth_arg;
- $domaindescription{$domain}=$domain_description;
+ $domaindescription{$domain}=$domain_description;
+ $domain_lang_def{$domain}=$def_lang;
+ $domain_city{$domain}=$city;
+ $domain_longi{$domain}=$longi;
+ $domain_lati{$domain}=$lati;
+
# &logthis("Domain.tab: $domain, $domain_auth_def{$domain}, $domain_auth_arg_def{$domain},$domaindescription{$domain}");
# &logthis("Domain.tab: $domain ".$domaindescription{$domain} );
}