--- loncom/publisher/lonpublisher.pm 2001/04/03 11:26:02 1.23 +++ loncom/publisher/lonpublisher.pm 2001/04/16 20:02:50 1.24 @@ -8,6 +8,7 @@ # 11/28,11/29,11/30,12/01,12/02,12/04,12/23 Gerd Kortemeyer # 03/23 Guy Albertelli # 03/24,03/29,04/03 Gerd Kortemeyer +# 04/16/2001 Scott Harrison package Apache::lonpublisher; @@ -18,6 +19,7 @@ use Apache::Constants qw(:common :http : use HTML::TokeParser; use Apache::lonxml; use Apache::lonhomework; +use DBI; my %addid; my %nokey; @@ -418,7 +420,7 @@ sub publish { sub phasetwo { - my ($source,$target,$style)=@_; + my ($source,$target,$style,$distarget)=@_; my $logfile; my $scrout=''; @@ -482,6 +484,46 @@ sub phasetwo { print $logfile "\nWrote metadata"; } +# -------------------------------- Synchronize entry with SQL metadata database + my $dbh; + { + unless ( + $dbh = DBI->connect("DBI:mysql:loncapa","www",$perlvar{'lonSqlAccess'},{ RaiseError =>0,PrintError=>0}) + ) { + return 'Cannot connect to database!'; + } + } + + my %sqldatafields; + $sqldatafields{'url'}=$distarget; + $sth=$dbh->prepare("delete from metadata where url like binary \"". + $sqldatafields{'url'}."\""); + $sth->execute(); + map {my $field=$metadatafields{$_}; $field=~s/\"/\'\'/g; + $sqldatafields{$_}=$field;} + ('title','author','subject','keywords','notes','abstract', + 'mime','language','creationdate','lastrevisiondate','owner','copyright'); + + $sth=$dbh->prepare('insert into metadata values ('. + '"'.delete($sqldatafields{'title'}).'"'.','. + '"'.delete($sqldatafields{'author'}).'"'.','. + '"'.delete($sqldatafields{'subject'}).'"'.','. + '"'.delete($sqldatafields{'url'}).'"'.','. + '"'.delete($sqldatafields{'keywords'}).'"'.','. + '"'.'current'.'"'.','. + '"'.delete($sqldatafields{'notes'}).'"'.','. + '"'.delete($sqldatafields{'abstract'}).'"'.','. + '"'.delete($sqldatafields{'mime'}).'"'.','. + '"'.delete($sqldatafields{'language'}).'"'.','. + '"'.delete($sqldatafields{'creationdate'}).'"'.','. + '"'.delete($sqldatafields{'lastrevisiondate'}).'"'.','. + '"'.delete($sqldatafields{'owner'}).'"'.','. + '"'.delete($sqldatafields{'copyright'}).'"'.')'); + $sth->execute(); + $dbh->disconnect; + $scrout.='

Synchronized SQL metadata database'; + print $logfile "\nSynchronized SQL metadata database"; + # ----------------------------------------------------------- Copy old versions if (-e $target) { @@ -781,7 +823,7 @@ unless ($ENV{'form.phase'} eq 'two') { unless ($ENV{'form.phase'} eq 'two') { $r->print('


'.&publish($thisfn,$thistarget,$thisembstyle)); } else { - $r->print('
'.&phasetwo($thisfn,$thistarget,$thisembstyle)); + $r->print('
'.&phasetwo($thisfn,$thistarget,$thisembstyle,$thisdistarget)); } }