version 1.58, 2000/11/02 17:42:09
|
version 1.60, 2000/11/14 02:39:30
|
Line 68
|
Line 68
|
# 10/04 Gerd Kortemeyer |
# 10/04 Gerd Kortemeyer |
# 10/04 Guy Albertelli |
# 10/04 Guy Albertelli |
# 10/06,10/09,10/10,10/11,10/14,10/20,10/23,10/25,10/26,10/27,10/28,10/29, |
# 10/06,10/09,10/10,10/11,10/14,10/20,10/23,10/25,10/26,10/27,10/28,10/29, |
# 10/30,10/31,11/2 Gerd Kortemeyer |
# 10/30,10/31,11/2,11/14 Gerd Kortemeyer |
|
|
package Apache::lonnet; |
package Apache::lonnet; |
|
|
Line 546 sub coursedescription {
|
Line 546 sub coursedescription {
|
$returnhash{'fn'}=$perlvar{'lonDaemons'}.'/tmp/'. |
$returnhash{'fn'}=$perlvar{'lonDaemons'}.'/tmp/'. |
$ENV{'user.name'}.'_'.$cdomain.'_'.$cnum; |
$ENV{'user.name'}.'_'.$cdomain.'_'.$cnum; |
$envhash{'course.'.$normalid.'.last_cache'}=time; |
$envhash{'course.'.$normalid.'.last_cache'}=time; |
|
$envhash{'course.'.$normalid.'.home'}=$chome; |
|
$envhash{'course.'.$normalid.'.domain'}=$cdomain; |
|
$envhash{'course.'.$normalid.'.num'}=$cnum; |
&appenv(%envhash); |
&appenv(%envhash); |
return %returnhash; |
return %returnhash; |
} |
} |
Line 1256 sub EXT {
|
Line 1259 sub EXT {
|
return $ENV{'course.'.$ENV{'request.course.id'}.$section.'.'. |
return $ENV{'course.'.$ENV{'request.course.id'}.$section.'.'. |
$spacequalifierrest}; |
$spacequalifierrest}; |
} elsif ($realm eq 'resource') { |
} elsif ($realm eq 'resource') { |
# ----------------------------------------------------------- resource metadata |
if ($ENV{'request.course.id'}) { |
|
# ----------------------------------------------------- Cascading lookup scheme |
|
my $reslevel= |
|
$ENV{'request.course.id'}.'.'.&symbread().'.'.$spacequalifierrest; |
|
my $seclevel= |
|
$ENV{'request.course.id'}.'.'. |
|
$ENV{'request.course.sec'}.'.'.$spacequalifierrest; |
|
my $courselevel= |
|
$ENV{'request.course.id'}.'.'.$spacequalifierrest; |
|
|
|
# ----------------------------------------------------------- first, check user |
|
my %resourcedata=get('resourcedata',($reslevel,$seclevel,$courselevel)); |
|
if ($resourcedata{$reslevel}) { return $resourcedata{$reslevel}; } |
|
if ($resourcedata{$seclevel}) { return $resourcedata{$seclevel}; } |
|
if ($resourcedata{$courselevel}) { return $resourcedata{$courselevel}; } |
|
|
|
# -------------------------------------------------------- second, check course |
|
my $section=''; |
|
if ($ENV{'request.course.sec'}) { |
|
$section='_'.$ENV{'request.course.sec'}; |
|
} |
|
my $reply=&reply('get:'. |
|
$ENV{'course.'.$ENV{'request.course.id'}.$section.'.domain'}.':'. |
|
$ENV{'course.'.$ENV{'request.course.id'}.$section.'.num'}. |
|
':resourcedata:'. |
|
escape($reslevel).':'.escape($seclevel).':'.escape($courselevel), |
|
$ENV{'course.'.$ENV{'request.course.id'}.$section.'.home'}); |
|
map { |
|
my ($name,$value)=split(/\=/,$_); |
|
$resourcedata{unescape($name)}=unescape($value); |
|
} split(/\&/,$reply); |
|
if ($resourcedata{$reslevel}) { return $resourcedata{$reslevel}; } |
|
if ($resourcedata{$seclevel}) { return $resourcedata{$seclevel}; } |
|
if ($resourcedata{$courselevel}) { return $resourcedata{$courselevel}; } |
|
|
|
# ------------------------------------------------------ third, check map parms |
|
|
|
if ($ENV{'resource.parms.'.$reslevel}) { |
|
return $ENV{'resource.parms.'.$reslevel}; |
|
} |
|
} |
|
|
|
# --------------------------------------------- last, look in resource metadata |
my $uri=&declutter($ENV{'request.filename'}); |
my $uri=&declutter($ENV{'request.filename'}); |
my $filename=$perlvar{'lonDocRoot'}.'/res/'.$ENV.'.meta'; |
my $filename=$perlvar{'lonDocRoot'}.'/res/'.$ENV.'.meta'; |
if (-e $filename) { |
if (-e $filename) { |
Line 1268 sub EXT {
|
Line 1313 sub EXT {
|
if (join('',@content)=~ |
if (join('',@content)=~ |
/\<$space[^\>]*\>([^\<]*)\<\/$space\>/) { |
/\<$space[^\>]*\>([^\<]*)\<\/$space\>/) { |
return $1; |
return $1; |
} else { |
} |
return ''; |
} |
} |
|
} |
|
} elsif ($realm eq 'userdata') { |
|
my $uhome=&homeserver($qualifier,$space); |
|
# ----------------------------------------------- userdata.domain.name.resource |
|
# ---------------------------------------------------- Any other user namespace |
# ---------------------------------------------------- Any other user namespace |
} elsif ($realm eq 'environment') { |
} elsif ($realm eq 'environment') { |
# ----------------------------------------------------------------- environment |
# ----------------------------------------------------------------- environment |
Line 1418 sub filelocation {
|
Line 1458 sub filelocation {
|
my ($dir,$file) = @_; |
my ($dir,$file) = @_; |
my $location; |
my $location; |
$file=~ s/^\s*(\S+)\s*$/$1/; ## strip off leading and trailing spaces |
$file=~ s/^\s*(\S+)\s*$/$1/; ## strip off leading and trailing spaces |
$file=~s/^$perlvar{'lonDocRoot'}//; |
if ($file=~m:^/~:) { # is a contruction space reference |
$file=~s:^/*res::; |
$location = $file; |
if ( !( $file =~ m:^/:) ) { |
$location =~ s:/~(.*?)/(.*):/home/$1/public_html/$2:; |
$location = $dir. '/'.$file; |
|
} else { |
} else { |
$location = '/home/httpd/html/res'.$file; |
$file=~s/^$perlvar{'lonDocRoot'}//; |
|
$file=~s:^/*res::; |
|
if ( !( $file =~ m:^/:) ) { |
|
$location = $dir. '/'.$file; |
|
} else { |
|
$location = '/home/httpd/html/res'.$file; |
|
} |
} |
} |
$location=~s://+:/:g; # remove duplicate / |
$location=~s://+:/:g; # remove duplicate / |
while ($location=~m:/\.\./:) {$location=~ s:/[^/]+/\.\./:/:g;} #remove dir/.. |
while ($location=~m:/\.\./:) {$location=~ s:/[^/]+/\.\./:/:g;} #remove dir/.. |