) {
+ if ($configline =~ /PerlSetVar/) {
+ my ($dummy,$varname,$varvalue)=split(/\s+/,$configline);
+ chomp($varvalue);
+ $perlvar{$varname}=$varvalue;
+ }
+ }
+ close(CONFIG);
+
my $dbh;
{
unless (
@@ -496,7 +521,7 @@ sub phasetwo {
my %sqldatafields;
$sqldatafields{'url'}=$distarget;
- $sth=$dbh->prepare("delete from metadata where url like binary \"".
+ my $sth=$dbh->prepare("delete from metadata where url like binary \"".
$sqldatafields{'url'}."\"");
$sth->execute();
map {my $field=$metadatafields{$_}; $field=~s/\"/\'\'/g;
@@ -515,8 +540,8 @@ sub phasetwo {
'"'.delete($sqldatafields{'abstract'}).'"'.','.
'"'.delete($sqldatafields{'mime'}).'"'.','.
'"'.delete($sqldatafields{'language'}).'"'.','.
- '"'.delete($sqldatafields{'creationdate'}).'"'.','.
- '"'.delete($sqldatafields{'lastrevisiondate'}).'"'.','.
+ '"'.sqltime(delete($sqldatafields{'creationdate'})).'"'.','.
+ '"'.sqltime(delete($sqldatafields{'lastrevisiondate'})).'"'.','.
'"'.delete($sqldatafields{'owner'}).'"'.','.
'"'.delete($sqldatafields{'copyright'}).'"'.')');
$sth->execute();
@@ -704,16 +729,28 @@ sub handler {
my $fn=$ENV{'form.filename'};
+
unless ($fn) {
- $r->log_reason($ENV{'user.name'}.' at '.$ENV{'user.domain'}.
+ $r->log_reason($cuname.' at '.$cudom.
' trying to publish empty filename', $r->filename);
return HTTP_NOT_FOUND;
}
- unless ($ENV{'user.home'} eq $r->dir_config('lonHostID')) {
- $r->log_reason($ENV{'user.name'}.' at '.$ENV{'user.domain'}.
+ unless (($cuname,$cudom)=
+ &Apache::loncacc::constructaccess($fn,$r->dir_config('lonDefDomain'))) {
+ $r->log_reason($cuname.' at '.$cudom.
+ ' trying to publish file '.$ENV{'form.filename'}.
+ ' ('.$fn.') - not authorized',
+ $r->filename);
+ return HTTP_NOT_ACCEPTABLE;
+ }
+
+ unless (&Apache::lonnet::homeserver($cuname,$cudom)
+ eq $r->dir_config('lonHostID')) {
+ $r->log_reason($cuname.' at '.$cudom.
' trying to publish file '.$ENV{'form.filename'}.
- ' ('.$fn.') - not homeserver ('.$ENV{'user.home'}.')',
+ ' ('.$fn.') - not homeserver ('.
+ &Apache::lonnet::homeserver($cuname,$cudom).')',
$r->filename);
return HTTP_NOT_ACCEPTABLE;
}
@@ -722,19 +759,19 @@ sub handler {
my $targetdir='';
$docroot=$r->dir_config('lonDocRoot');
- if ($1 ne $ENV{'user.name'}) {
- $r->log_reason($ENV{'user.name'}.' at '.$ENV{'user.domain'}.
+ if ($1 ne $cuname) {
+ $r->log_reason($cuname.' at '.$cudom.
' trying to publish unowned file '.$ENV{'form.filename'}.
' ('.$fn.')',
$r->filename);
return HTTP_NOT_ACCEPTABLE;
} else {
- $targetdir=$docroot.'/res/'.$ENV{'user.domain'};
+ $targetdir=$docroot.'/res/'.$cudom;
}
unless (-e $fn) {
- $r->log_reason($ENV{'user.name'}.' at '.$ENV{'user.domain'}.
+ $r->log_reason($cuname.' at '.$cudom.
' trying to publish non-existing file '.$ENV{'form.filename'}.
' ('.$fn.')',
$r->filename);
@@ -812,18 +849,30 @@ unless ($ENV{'form.phase'} eq 'two') {
$thisdistarget=~s/^$docroot//;
my $thisdisfn=$thisfn;
- $thisdisfn=~s/^\/home\/$ENV{'user.name'}\/public_html\///;
+ $thisdisfn=~s/^\/home\/$cuname\/public_html\///;
$r->print('Publishing '.
&Apache::lonnet::filedescription($thistype).' '.
$thisdisfn.'
Target: '.$thisdistarget.'');
+
+ if (($cuname ne $ENV{'user.name'}) || ($cudom ne $ENV{'user.domain'})) {
+ $r->print('
Co-Author: '.$cuname.' at '.$cudom.
+ '
');
+ }
+
+ if (&Apache::lonnet::fileembstyle($thistype) eq 'ssi') {
+ $r->print('
Diffs with Current Version');
+ }
# ------------ We are publishing from $thisfn to $thistarget with $thisembstyle
unless ($ENV{'form.phase'} eq 'two') {
- $r->print('
'.&publish($thisfn,$thistarget,$thisembstyle));
+ $r->print(
+ '
'.&publish($thisfn,$thistarget,$thisembstyle));
} else {
- $r->print('
'.&phasetwo($thisfn,$thistarget,$thisembstyle,$thisdistarget));
+ $r->print(
+ '
'.&phasetwo($thisfn,$thistarget,$thisembstyle,$thisdistarget));
}
}