version 1.211, 2002/05/06 13:46:41
|
version 1.216, 2002/05/08 17:40:03
|
Line 627 sub subscribe {
|
Line 627 sub subscribe {
|
sub repcopy { |
sub repcopy { |
my $filename=shift; |
my $filename=shift; |
$filename=~s/\/+/\//g; |
$filename=~s/\/+/\//g; |
|
if ($filename=~/^\/home\/httpd\/html\/adm\//) { return OK; } |
my $transname="$filename.in.transfer"; |
my $transname="$filename.in.transfer"; |
if ((-e $filename) || (-e $transname)) { return OK; } |
if ((-e $filename) || (-e $transname)) { return OK; } |
my $remoteurl=subscribe($filename); |
my $remoteurl=subscribe($filename); |
Line 716 sub flushcourselogs {
|
Line 717 sub flushcourselogs {
|
&logthis('Flushing course log buffers'); |
&logthis('Flushing course log buffers'); |
foreach (keys %courselogs) { |
foreach (keys %courselogs) { |
my $crsid=$_; |
my $crsid=$_; |
&logthis(":$crsid:$coursehombuf{$crsid}"); |
|
if (&reply('log:'.$coursedombuf{$crsid}.':'. |
if (&reply('log:'.$coursedombuf{$crsid}.':'. |
&escape($courselogs{$crsid}), |
&escape($courselogs{$crsid}), |
$coursehombuf{$crsid}) eq 'ok') { |
$coursehombuf{$crsid}) eq 'ok') { |
Line 1139 sub store {
|
Line 1139 sub store {
|
|
|
if ($stuname) { $home=&homeserver($stuname,$domain); } |
if ($stuname) { $home=&homeserver($stuname,$domain); } |
|
|
|
$symb=&symbclean($symb); |
if (!$symb) { unless ($symb=&symbread()) { return ''; } } |
if (!$symb) { unless ($symb=&symbread()) { return ''; } } |
|
|
&devalidate($symb); |
&devalidate($symb); |
Line 1169 sub cstore {
|
Line 1170 sub cstore {
|
|
|
if ($stuname) { $home=&homeserver($stuname,$domain); } |
if ($stuname) { $home=&homeserver($stuname,$domain); } |
|
|
|
$symb=&symbclean($symb); |
if (!$symb) { unless ($symb=&symbread()) { return ''; } } |
if (!$symb) { unless ($symb=&symbread()) { return ''; } } |
|
|
&devalidate($symb); |
&devalidate($symb); |
Line 1204 sub restore {
|
Line 1206 sub restore {
|
if (!$symb) { |
if (!$symb) { |
unless ($symb=escape(&symbread())) { return ''; } |
unless ($symb=escape(&symbread())) { return ''; } |
} else { |
} else { |
$symb=&escape($symb); |
$symb=&escape(&symbclean($symb)); |
} |
} |
if (!$namespace) { |
if (!$namespace) { |
unless ($namespace=$ENV{'request.course.id'}) { |
unless ($namespace=$ENV{'request.course.id'}) { |
Line 2517 sub symblist {
|
Line 2519 sub symblist {
|
return 'error'; |
return 'error'; |
} |
} |
|
|
|
# --------------------------------------------------------------- Verify a symb |
|
|
|
sub symbverify { |
|
my ($symb,$thisfn)=@_; |
|
$thisfn=&declutter($thisfn); |
|
# direct jump to resource in page or to a sequence - will construct own symbs |
|
if ($thisfn=~/\.(page|sequence)$/) { return 1; } |
|
# check URL part |
|
my ($map,$resid,$url)=split(/\_\_\_/,$symb); |
|
unless (&symbclean($url) eq &symbclean($thisfn)) { return 0; } |
|
|
|
$symb=&symbclean($symb); |
|
|
|
my %bighash; |
|
my $okay=0; |
|
if (tie(%bighash,'GDBM_File',$ENV{'request.course.fn'}.'.db', |
|
&GDBM_READER,0640)) { |
|
my $ids=$bighash{'ids_/res/'.$thisfn}; |
|
unless ($ids) { |
|
$ids=$bighash{'ids_/'.$thisfn}; |
|
} |
|
if ($ids) { |
|
# ------------------------------------------------------------------- Has ID(s) |
|
foreach (split(/\,/,$ids)) { |
|
my ($mapid,$resid)=split(/\./,$_); |
|
if ( |
|
&symbclean(&declutter($bighash{'map_id_'.$mapid}).'___'.$resid.'___'.$thisfn) |
|
eq $symb) { |
|
$okay=1; |
|
} |
|
} |
|
} |
|
untie(%bighash); |
|
} |
|
return $okay; |
|
} |
|
|
# --------------------------------------------------------------- Clean-up symb |
# --------------------------------------------------------------- Clean-up symb |
|
|
sub symbclean { |
sub symbclean { |
my $symb=shift; |
my $symb=shift; |
|
|
# remove version from map |
# remove version from map |
$symb=~s/\.(\d+)\.(\w+)\_\_\_/\.$2\_\_\_/; |
$symb=~s/\.(\d+)\.(\w+)\_\_\_/\.$2\_\_\_/; |
|
|
# remove version from URL |
# remove version from URL |
$symb=~s/\.(\d+)\.(\w+)$/\.$2/; |
$symb=~s/\.(\d+)\.(\w+)$/\.$2/; |
|
|
return $symb; |
return $symb; |
} |
} |
|
|