#!/usr/bin/perl -w
##############################################################################
# arau.cgi
# V1.3
#
# Archiv-Autorensuche
#
#	19990902  Umstellung auf Volltexte in dir's pro key
#	20000123  Erweiterung der Autordefinition um den Titel
#		   Der Titel ist gefolgt von "%20" dem Vornamen vorgestellt
#	20000216  Sonderbehandlung leere Vornamen und Titel
#	20051228  Umstellung auf Provider ecos
#	20180725  httpS
#	20190410  Umstellung auf vm-Server-Umgebung
#	20200318  PDFs beim Ergebnis berücksichtigen
#
##############################################################################

$homeurl = 'https://www.kreis-ahrweiler.de';
$AR	 = "/var/www/vhosts/vm-140-015.netclusive.cloud/httpdocs/kvar/data/kvar";

$cssurl = "$homeurl/kvar/css";
$Ardb	= "$AR/ardb";

##############################################################################
$buffer = "";
$inr = "";

$key = "";
$jahr = "";
$titel = "";
$kap = "";
$ukap = "";
$name = "";
$vorname = "";
$pertit = "";
$perzus = "";
$seite = "";
$stwreg = "";
$stw1 = "";
$stw2 = "";
$stw3 = "";
$stw4 = "";
$link = "";

$autor = "";

@ardb = ();
@data = ();
@erghead = ();
@ergautabh = ();
@ergautab = ();
@erg = ();

##################################################


open(ARDB,$Ardb) || die "cannot open $Ardb\n";


#DATA
while (<DATA>) {
        if (/^DATA/) {
                $inr = substr($_,4,1);

	if ($inr eq "1") {
                        @erghead = @data;
                }
	if ($inr eq "2") {
                        @ergautabh = @data;
                }
	if ($inr eq "3") {
                        @ergautab = @data;
                }

                @data = ();
        }
        else {
                push (@data, $_);
        }
}


# Formular-Input
&parse_form;

# Suche
&search;

# Ergebnisseite
&return_au_html;

#------------------------------------------------------------------------

sub parse_form {
   # Einlesen der Formulardaten, falls POST
   # read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

   # Einlesen der Formulardaten, falls GET
   $buffer = $ENV{'QUERY_STRING'};

   # Split  name-value - Paare
   @pairs = split(/&/, $buffer);

   foreach $pair (@pairs) {
      ($name, $value) = split(/=/, $pair);

      $value =~ tr/+/ /;
      $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

      $FORM{$name} = $value;
   }

   $autor = $FORM{'Autor'};

}


sub search {

   @ardb = <ARDB>;
   $ergebnis = 0;

   foreach (@ardb) {
     ($key,$jahr,$titel,$kap,$ukap,$pertit,$vorname,$name,$perzus,$seite,$stwreg,$stw1,$stw2,$stw3,$stw4,$link) = split(/\|/);

     if ($autor ne "AUTOR") {

	  if (! defined ($pertit)) {
	       $pertit = "";
	  }
	  if (! defined ($name)) {
	       $name = "";
	  }
	  if (! defined ($vorname)) {
	       $vorname = "";
	  }
# Aufbereitung der/des Namens in die Form von $autor
	if ($name =~ /:/) {
	   ($name1,$name2) = split /:/, $name;
	   if ($vorname ne "") {
	   	($vorname1,$vorname2) = split /:/, $vorname;
	   }
	   else {
		$vorname1 = "";
		$vorname2 = "";
	   }
	   if ($pertit ne "") {
		($pertit1,$pertit2) = split /:/, $pertit;
	   }
	   else {
		$pertit1 = "";
		$pertit2 = "";
	   }

#  Sonderbehandlung leere Vornamen und Titel ($bl... = Wert mit blank davor):
	   $blvorname1 = "";
	   $blvorname2 = "";
	   $blpertit1 = "";
	   $blpertit2 = "";
	   if ($vorname1 ne "") {
	   	$blvorname1 = " $vorname1";
	   }
	   if ($vorname2 ne "") {
	   	$blvorname2 = " $vorname2";
	   }
	   if ($pertit1 ne "") {
	   	$blpertit1 = " $pertit1";
	   }
	   if ($pertit2 ne "") {
	   	$blpertit2 = " $pertit2";
	   }


	   $sautor1 = "$name1,$blpertit1$blvorname1";
	   $sautor2 = "$name2,$blpertit2$blvorname2";

	}
	else {

#  Sonderbehandlung leere Vornamen und Titel ($bl... = Wert mit blank davor):
	   $blvorname = "";
	   $blpertit = "";
	   if ($vorname ne "") {
	   	$blvorname = " $vorname";
	   }
	   if ($pertit ne "") {
	   	$blpertit = " $pertit";
	   }

	   $sautor1 = "$name,$blpertit$blvorname";
	   $sautor2 = "";

	}

# Vergleich
	if (($autor ne $sautor1) && ($autor ne $sautor2)) {
		next;
	}
	else {
		push (@erg, $_);
		$ergebnis++;
		next;
	}
     }

   }
}


sub return_au_html {
   ($ueautorn,$ueautorv) = split (/\,/, $autor, 2);

   print "Content-type: text/html\n\n";
#   print @erghead;
   foreach (@erghead) {
	s/CSSURL/$cssurl/;
	s/ERGUEBER/Autor: $ueautorv $ueautorn/;
	print $_;
   }

   print "<B>$ergebnis Titel</B>\n<UL>\n";

   &erg_au_aufb;

   print "</UL>\n";
   print "</TABLE> </CENTER> </BODY> </HTML>\n";
}


sub erg_au_aufb {
#   print "@erg<BR>\n";

   print "@ergautabh\n";
   for (@erg) {
	($key,$jahr,$titel,$kap,$ukap,$pertit,$vorname,$name,$perzus,$seite,$stwreg,$stw1,$stw2,$stw3,$stw4,$link) = split(/\|/);

	@ergtab_tmp = @ergautab;
	for (@ergtab_tmp) {
	   $tkap = $kap;
	   if ($ukap ne "") {
		$tkap = $ukap;
	   }
	   if (($link =~ /htm/) | ($link =~ /pdf/)) {
   		s,KAPITEL,<A HREF="$homeurl/kvar/VT/$key/$link">$tkap</A>,;
	   }
	   else {
   		s/KAPITEL/$tkap/;
	   }
		s/URL/$homeurl/;
		s/KEY/$key/;
		s/TITEL/$titel/;
		s/SEITE/$seite/;
		print $_;
	}
   }
   print "</TABLE> </CENTER> </BODY> </HTML>\n";
}


__END__
<HTML>

<HEAD>
<TITLE>
Heimatjahrbucharchiv: Suchergebnis
</TITLE>
<link rel=stylesheet type="text/css" href="CSSURL/hjb.css">
</HEAD>

<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#36A612" VLINK="#36A612" ALINK="#36A612">

<H1><FONT COLOR="#36A612" FACE="Verdana,Arial,Helvetica,Sans-Serif">
ERGUEBER
</FONT></H1>

DATA1 -- Ende @erghead

<P>
<CENTER>
<TABLE BORDER="0" CELLSPACING="5" CELLPADDING="2">
<TR ALIGN="LEFT" VALIGN="TOP" BGCOLOR="#36A612">
<TD><FONT FACE="Verdana,Arial,Helvetica,Sans-Serif">
<B>ARTIKEL</B>
</FONT></TD>
<TD><FONT FACE="Verdana,Arial,Helvetica,Sans-Serif">
<B>BUCHTITEL</B>
</FONT></TD>
<TD ALIGN="RIGHT"><FONT FACE="Verdana,Arial,Helvetica,Sans-Serif">
<B>SEITE</B>
</FONT></TD>
</TR>

DATA2 -- Ende @ergautabh

<TR ALIGN="LEFT" VALIGN="TOP" BGCOLOR="#EEEEEE">
<TD><FONT FACE="Verdana,Arial,Helvetica,Sans-Serif">
KAPITEL
</FONT></TD>
<TD><FONT FACE="Verdana,Arial,Helvetica,Sans-Serif">
<A HREF="URL/kvar/INH/inhalt.KEY.htm">TITEL</A>
</FONT></TD>
<TD ALIGN="RIGHT"><FONT FACE="Verdana,Arial,Helvetica,Sans-Serif">
SEITE
</FONT></TD>
</TR>

DATA3 -- Ende @ergautab
