Diff for /loncom/publisher/lonpublisher.pm between versions 1.14 and 1.25

version 1.14, 2000/12/08 23:36:37 version 1.25, 2001/04/16 20:47:27
Line 5 Line 5
 #  #
 # 05/29/00,05/30,10/11 Gerd Kortemeyer)  # 05/29/00,05/30,10/11 Gerd Kortemeyer)
 #  #
 # 11/28,11/29,11/30,12/01,12/02,12/04 Gerd Kortemeyer  # 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;  package Apache::lonpublisher;
   
Line 15  use File::Copy; Line 18  use File::Copy;
 use Apache::Constants qw(:common :http :methods);  use Apache::Constants qw(:common :http :methods);
 use HTML::TokeParser;  use HTML::TokeParser;
 use Apache::lonxml;  use Apache::lonxml;
 use Apache::structuretags;  use Apache::lonhomework;
 use Apache::inputtags;  use DBI;
 use Apache::response;  
   
 my %addid;  my %addid;
 my %nokey;  my %nokey;
Line 84  sub metaread { Line 86  sub metaread {
     return '<br><b>Processed file:</b> <tt>'.$fn.'</tt>';      return '<br><b>Processed file:</b> <tt>'.$fn.'</tt>';
 }  }
   
   # ---------------------------- convert 'time' format into a datetime sql format
   sub sqltime {
       my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
    localtime(@_[0]);
       $mon++; $year+=1900;
       return "$year-$mon-$mday $hour:$min:$sec";
   }
   
 # --------------------------------------------------------- Various form fields  # --------------------------------------------------------- Various form fields
   
 sub textfield {  sub textfield {
Line 115  sub publish { Line 125  sub publish {
     my ($source,$target,$style)=@_;      my ($source,$target,$style)=@_;
     my $logfile;      my $logfile;
     my $scrout='';      my $scrout='';
       my $allmeta='';
       my $content='';
   
     unless ($logfile=Apache::File->new('>>'.$source.'.log')) {      unless ($logfile=Apache::File->new('>>'.$source.'.log')) {
  return    return 
Line 138  sub publish { Line 150  sub publish {
   
         my $maxindex=10;          my $maxindex=10;
         my $maxid=10;          my $maxid=10;
         my $content='';  
         my $needsfixup=0;          my $needsfixup=0;
   
         {          {
Line 290  sub publish { Line 302  sub publish {
   
 # -------------------------------------------------- Parse content for metadata  # -------------------------------------------------- Parse content for metadata
   
         my $allmeta=Apache::lonxml::xmlparse('meta',$content);          $allmeta=Apache::lonxml::xmlparse('meta',$content);
         &metaeval($allmeta);          &metaeval($allmeta);
   
 # ---------------- Find and document discrepancies in the parameters and stores  # ---------------- Find and document discrepancies in the parameters and stores
Line 324  sub publish { Line 336  sub publish {
     $scrout.='<p><b>Obsolete parameters or stored values:</b> '.      $scrout.='<p><b>Obsolete parameters or stored values:</b> '.
                      $chparms;                       $chparms;
         }          }
       }
 # ------------------------------------------------------- Now have all metadata  # ------------------------------------------------------- Now have all metadata
   
         $scrout.=          $scrout.=
Line 408  sub publish { Line 420  sub publish {
         $scrout.=&selectbox('Copyright/Distribution','copyright',          $scrout.=&selectbox('Copyright/Distribution','copyright',
                             $metadatafields{'copyright'},%cprtag);                              $metadatafields{'copyright'},%cprtag);
   
     }  
     return $scrout.      return $scrout.
       '<p><input type="submit" value="Finalize Publication"></form>';        '<p><input type="submit" value="Finalize Publication"></form>';
 }  }
Line 417  sub publish { Line 428  sub publish {
   
 sub phasetwo {  sub phasetwo {
   
     my ($source,$target,$style)=@_;      my ($source,$target,$style,$distarget)=@_;
     my $logfile;      my $logfile;
     my $scrout='';      my $scrout='';
   
Line 481  sub phasetwo { Line 492  sub phasetwo {
        print $logfile "\nWrote metadata";         print $logfile "\nWrote metadata";
      }       }
   
   # -------------------------------- Synchronize entry with SQL metadata database
       my %perlvar;
       open (CONFIG,"/etc/httpd/conf/access.conf") || die "Can't read access.conf";
       my $configline;
       while ($configline=<CONFIG>) {
    if ($configline =~ /PerlSetVar/) {
       my ($dummy,$varname,$varvalue)=split(/\s+/,$configline);
       chomp($varvalue);
       $perlvar{$varname}=$varvalue;
    }
       }
       close(CONFIG);
   
       my $dbh;
       {
    unless (
    $dbh = DBI->connect("DBI:mysql:loncapa","www",$perlvar{'lonSqlAccess'},{ RaiseError =>0,PrintError=>0})
    ) { 
       return '<font color=red>Cannot connect to database!</font>';
    }
       }
   
       my %sqldatafields;
       $sqldatafields{'url'}=$distarget;
       my $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'}).'"'.','.
     '"'.sqltime(delete($sqldatafields{'creationdate'})).'"'.','.
     '"'.sqltime(delete($sqldatafields{'lastrevisiondate'})).'"'.','.
     '"'.delete($sqldatafields{'owner'}).'"'.','.
     '"'.delete($sqldatafields{'copyright'}).'"'.')');
       $sth->execute();
       $dbh->disconnect;
       $scrout.='<p>Synchronized SQL metadata database';
       print $logfile "\nSynchronized SQL metadata database";
   
 # ----------------------------------------------------------- Copy old versions  # ----------------------------------------------------------- Copy old versions
         
 if (-e $target) {  if (-e $target) {
Line 598  if (-e $target) { Line 661  if (-e $target) {
   
 }  }
   
   # ---------------------------------------- Send update notifications, meta only
   
   {
   
       my $filename;
    
       $target=~/(.*)\/([^\/]+)$/;
       my $srcf=$2.'.meta';
       opendir(DIR,$1);
       while ($filename=readdir(DIR)) {
          if ($filename=~/$srcf\.(\w+)$/) {
      my $subhost=$1;
              if ($subhost ne 'meta') {
          $scrout.=
                   '<p>Notifying host for metadata only '.$subhost.':';
                  print $logfile 
                   "\nNotifying host for metadata only '.$subhost.':'";
                  my $reply=&Apache::lonnet::critical(
                                   'update:'.$target.'.meta',$subhost);
                  $scrout.=$reply;
                  print $logfile $reply;              
              }
          }
       }
       closedir(DIR);
   
   }
   
 # ------------------------------------------------ Provide link to new resource  # ------------------------------------------------ Provide link to new resource
   
     my $thisdistarget=$target;      my $thisdistarget=$target;
     $thisdistarget=~s/^$docroot//;      $thisdistarget=~s/^$docroot//;
   
       my $thissrc=$source;
       $thissrc=~s/^\/home\/(\w+)\/public_html/\/priv\/$1/;
   
       my $thissrcdir=$thissrc;
       $thissrcdir=~s/\/[^\/]+$/\//;
   
   
     return $scrout.      return $scrout.
  '<p><a href="'.$thisdistarget.'"><font size=+2>View Target</font></a>';        '<hr><a href="'.$thisdistarget.'"><font size=+2>View Target</font></a>'.
         '<p><a href="'.$thissrc.'"><font size=+2>Back to Source</font></a>'.
         '<p><a href="'.$thissrcdir.
         '"><font size=+2>Back to Source Directory</font></a>';
   
 }  }
   
 # ================================================================ Main Handler  # ================================================================ Main Handler
Line 711  unless ($ENV{'form.phase'} eq 'two') { Line 813  unless ($ENV{'form.phase'} eq 'two') {
   $r->send_http_header;    $r->send_http_header;
   
   $r->print('<html><head><title>LON-CAPA Publishing</title></head>');    $r->print('<html><head><title>LON-CAPA Publishing</title></head>');
   $r->print('<body bgcolor="#FFFFFF">');    $r->print(
      '<body bgcolor="#FFFFFF"><img align=right src=/adm/lonIcons/lonlogos.gif>');
   my $thisfn=$fn;    my $thisfn=$fn;
         
 # ------------------------------------------------------------- Individual file  # ------------------------------------------------------------- Individual file
Line 740  unless ($ENV{'form.phase'} eq 'two') { Line 843  unless ($ENV{'form.phase'} eq 'two') {
        unless ($ENV{'form.phase'} eq 'two') {         unless ($ENV{'form.phase'} eq 'two') {
           $r->print('<hr>'.&publish($thisfn,$thistarget,$thisembstyle));            $r->print('<hr>'.&publish($thisfn,$thistarget,$thisembstyle));
        } else {         } else {
           $r->print('<hr>'.&phasetwo($thisfn,$thistarget,$thisembstyle));                  $r->print('<hr>'.&phasetwo($thisfn,$thistarget,$thisembstyle,$thisdistarget));      
        }           }  
   
   }    }

Removed from v.1.14  
changed lines
  Added in v.1.25


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>