--- loncom/lonnet/perl/lonnet.pm 2000/10/20 10:57:46 1.47 +++ loncom/lonnet/perl/lonnet.pm 2000/10/25 10:55:46 1.48 @@ -66,7 +66,7 @@ # 08/22,08/28,08/31,09/01,09/02,09/04,09/05,09/25,09/28,09/30 Gerd Kortemeyer # 10/04 Gerd Kortemeyer # 10/04 Guy Albertelli -# 10/06,10/09,10/10,10/11,10/14,10/20 Gerd Kortemeyer +# 10/06,10/09,10/10,10/11,10/14,10/20,10/23,10/25 Gerd Kortemeyer package Apache::lonnet; @@ -1026,20 +1026,83 @@ sub condval { # --------------------------------------------------------- Value of a Variable sub varval { - my ($realm,$space,@components)=split(/\./,shift); - my $value=''; + my $varname=shift; + my ($realm,$space,$qualifier,@therest)=split(/\./,$varname); + my $rest; + if ($therest[0]) { + $rest=join('.',@therest); + } else { + $rest=''; + } if ($realm eq 'user') { - if ($space=~/^resource/) { - $space=~s/^resource\[//; - $space=~s/\]$//; - +# --------------------------------------------------------------- user.resource + if ($space eq 'resource') { +# ----------------------------------------------------------------- user.access + } elsif ($space eq 'access') { + return &allowed($qualifier,$rest); +# ------------------------------------------ user.preferences, user.environment + } elsif (($space eq 'preferences') || ($space eq 'environment')) { + return $ENV{join('.',('environment',$qualifier,$rest))}; +# ----------------------------------------------------------------- user.course + } elsif ($space eq 'course') { + return $ENV{join('.',('request.course',$qualifier))}; +# ------------------------------------------------------------------- user.role + } elsif ($space eq 'role') { + my ($role,$where)=split(/\./,$ENV{'request.role'}); + if ($qualifier eq 'value') { + return $role; + } elsif ($qualifier eq 'extent') { + return $where; + } +# ----------------------------------------------------------------- user.domain + } elsif ($space eq 'domain') { + return $ENV{'user.domain'}; +# ------------------------------------------------------------------- user.name + } elsif ($space eq 'name') { + return $ENV{'user.name'}; +# ---------------------------------------------------- Any other user namespace } else { + my $item=($rest)?$qualifier.'.'.$rest:$qualifier; + my %reply=&get($space,$item); + return $reply{$item}; + } + } elsif ($realm eq 'request') { +# ------------------------------------------------------------- request.browser + if ($space eq 'browser') { + return $ENV{'browser.'.$qualifier}; + } elsif ($space eq 'filename') { + return $ENV{'request.filename'}; } } elsif ($realm eq 'course') { - } elsif ($realm eq 'session') { +# ---------------------------------------------------------- course.description + if ($space eq 'description') { + return &coursedescription($ENV{'request.course.id'}); +# ------------------------------------------------------------------- course.id + } elsif ($space eq 'id') { + return $ENV{'request.course.id'}; +# -------------------------------------------------- Any other course namespace + } else { + my ($cdom,$cnam)=split(/\_/,$ENV{'request.course.id'}); + my $chome=&homeserver($cnam,$cdom); + my $item=join('.',($qualifier,$rest)); + return &unescape + (&reply('get:'.$cdom.':'.$cnam.':'.&escape($space).':'. + &escape($item),$chome)); + } + } elsif ($realm eq 'userdata') { + my $uhome=&homeserver($qualifier,$space); +# ----------------------------------------------- userdata.domain.name.resource +# ---------------------------------------------------- Any other user namespace + } elsif ($realm eq 'environment') { +# ----------------------------------------------------------------- environment + return $ENV{join('.',($space,$qualifier,$rest))}; } elsif ($realm eq 'system') { +# ----------------------------------------------------------------- system.time + if ($space eq 'time') { + return time; + } } - return $value; + return ''; } # ------------------------------------------------- Update symbolic store links