#!/usr/bin/perl

#########################################################################
# FirmSearch & Input            	Version 1.5                        		#
# (c) 1998 docu:media 				documedia@gmx.net								#
#########################################################################
# Version History
# 1.5 - Verschiedene Veränderungen für mehr Sicherheit
# 1.2 - Zähler eingefügt
# 1.1 -
# 1.0 - erstes funktionierendes Release

require './FirmenDB-setup.pl';
require './print_entry.pl';
require './found_firms.pl';
require './libs/cgi-lib.pl';
require './libs/cgi-lib.sol';

# Flush Perl-Buffer, alle Prints werden direkt an Client geschickt
$| = 1;
# Header gleich am Anfang schicken um Timeout zu vermeiden
print "Content-type: text/html\n\n";

&ReadParse(*FORM);
&count;
SWITCH: {
	if ($FORM{'mode'} eq 'input') {
								&get_maxno;
								&compute_data;
								&write_data;
								&send_email;
								&output_html_input;
								last SWITCH;
	}
	if ($FORM{'mode'} eq 'change') {
								&compute_data;
								&compute_change;
								&output_html_input;
								last SWITCH;
	}
	if ($FORM{'mode'} eq 'ad_input') {
								&compute_ad_data;
								&get_maxno;
								&compute_data;
								&write_data;
								&send_email;
								&output_adinput_result;
								last SWITCH;
	}
	&query;
	&save_found_firms;
	&output_html_template;
};

##################################################
sub get_maxno {
if (open(DBFILE,"<$DataFilePath")==false) {
	$maxno=0;
	$DBExists=0;
	open(DBFILE,">$DataFilePath");
}
else {
	@lines=<DBFILE>;
	$DBExists=1;
}
close(DBFILE);

if ($DBExists>0) {
	foreach $line (@lines) {
		unless ($line =~ /^COMMENT:/) {
			@fields=split(/\|/,$line);
			if($fields[$db{"no"}]>$maxno) {
				$maxno=$fields[$db{"no"}];
			}
		}
	}
}
}

##################################################
sub compute_data {
local($str);
local($art);

	$FORM{'adr'}=~s/\n/<br>/g;
	$FORM{'adr'}=~s/\r//g;
	$FORM{'comment'}=~s/\n/<br>/g;
	$FORM{'comment'}=~s/\r//g;
	$str=$FORM{'comment'};
	$art=$FORM{'art'};
	if ($art eq "v2") {
		$str = "<ul><li>$str</ul>";
		$str =~ s/<br>/<li>/g;
	} elsif ($art eq "v3") {
		$str = "<ul type=\"square\"><li>$str</ul>";
		$str =~ s/<br>/<li>/g;
	}
	$str =~ s/<li><\/ul>/<\/ul>/g;
	$FORM{'comment'}=$str;
	if ($FORM{'web'} eq "http://") {
		$FORM{'web'}="";
	}
}

##################################################
sub write_data {
local(@Zeit);
local($zeile);
@fields="";

	@Zeit=localtime(time());
	@Zeit_exp=localtime(time()+(86400*14));
	$Zeit_exp[4]++;
	$Zeit_exp[5]+=1900;
	$datum_exp="$Zeit_exp[3].$Zeit_exp[4].$Zeit_exp[5]";
	foreach $DBField (@DBFields) {
		push(@fields,$FORM{$DBField});
	}
	$zeile=join("|",@fields);
	$zeile=(++$maxno) . "$zeile|" . "$Zeit[3]." . (++$Zeit[4]).".$Zeit[5] $Zeit[2]:$Zeit[1]:$Zeit[0]";
	push(@fields,$datum_exp);

	if (&canwritefile==0) {
		&CgiDie("Unerwarteter Server-Fehler - Bitte später noch einmal probieren! webmaster\@leipzig-info.net");
	}
	open(DBFILE,">>$DataFilePath");
	flock(DBFILE, 2);
	print DBFILE "$zeile\n";
	flock(DBFILE, 8);
	close(DBFILE);

	open(DBFILE,">>$FoundFirmPath");
	flock(DBFILE, 2);
	print DBFILE $maxno,"|0\n";
	flock(DBFILE, 8);
	close(DBFILE);
}

##################################################
sub output_html_input {
local($art);
local($preis);

	if ($fields[$db{"type"}] eq "standard") {
		$art="einen Standard-Eintrag";
		$preis="DM 100,00";
	} elsif ($fields[$db{"type"}] eq "erweitert") {
		$art="einen erweiterten Eintrag";
		$preis="DM 250,00";
	} elsif ($fields[$db{"type"}] eq "werbe") {
		$art="das Werbe-Paket";
		$preis="DM 500,00";
	} elsif ($fields[$db{"type"}] eq "verein") {
		$art="einen kostenlosen Eintrag als Verein";
		$preis="DM 0,00";
	}

	if ($FORM{'mode'} eq 'input') {
		open(RESULT,"<$DefaultPath/eintragresult.html") || die "Datei $DefaultPath/eintragresult.html nicht gefunden!\n";
	} else {
		open(RESULT,"<$DefaultPath/aendernresult.html") || die "Datei $DefaultPath/aendernresult.html nicht gefunden!\n";
	}
	@result=<RESULT>;
	close(RESULT);
	foreach $temp (@result) {
		$temp =~ s/\$EINTRAG_ART/$art/;
		$temp =~ s/\$KOSTEN/$preis/;
		$temp =~ s/\$DATUM/$fields[$db{"datum"}]/;
		$temp =~ s/\$LOGIN/$fields[$db{"login"}]/;
		$temp =~ s/\$PASSWD/$fields[$db{"passwd"}]/;
		if($temp =~ /<RESULTSTART>/i) {
			&print_entry;
		} else {
		print $temp;
		}
	}
}

##################################################
sub output_html_template {
local($eintrag);

open(RESULT,"<$DefaultPath/result.html") || die "Datei $DefaultPath/result.html nicht gefunden!\n";
@result=<RESULT>;
close(RESULT);

if ($row_count==1) {
		$eintrag="Eintrag";
	} else {
		$eintrag="Eintr&auml;ge"
	}

foreach $temp (@result) {
	if($temp =~ /<RESULTSTART>/i) {
		foreach $row (@rows) {
			@fields=split(/\|/,$row);
			&print_entry;
		}
	} else {
			$temp =~ s/\$ROW_COUNT/$row_count/;
			$temp =~ s/\$EINTRAG/$eintrag/;
			$temp =~ s/\$ACCESSCOUNT/$AccessCount/;
			print $temp;
		}
	}
}

##################################################
sub query {
local($fields);
local($line);
local(@terms);
local($term);
local($include);

	$include="no";
	@terms = split(/\s+/, $FORM{'STerm'});
	$row_count=0;
	open(DBFILE,"<$DataFilePath") || die "Datei $DataFilePath nicht gefunden!\n";
	@lines=<DBFILE>;
	close(DBFILE);
	foreach $line (@lines) {
		unless ($line =~ /^COMMENT:/) {
			chop($line);
			@fields=split(/\|/,$line);
			$not_found=0;
			if ($FORM{'SWhere'} ne 'all')  {
				if ($FORM{'SMode'} eq 'and') {
					foreach $term (@terms) {
						if (!($fields[$db{$FORM{'SWhere'}}] =~ /$term/i)) {
							$include="no";
							last;
						} else {
							$include="yes";
						}
					}
				} else {
					foreach $term (@terms) {
						if ($fields[$db{$FORM{'SWhere'}}] =~ /$term/i) {
							$include="yes";
						}
					}
				}

			} else {
				if ($FORM{'SMode'} eq 'and') {
					foreach $term (@terms) {
						if (!($line =~ /$term/i)) {
							$include="no";
							last;
						} else {
							$include="yes";
						}
					}
				} else {
					foreach $term (@terms) {
						if ($line =~ /$term/i) {
							$include="yes";
						}
					}
				}
			}
			if ($include eq "yes") {
				push(@rows,$line);
				$row_count++;
				$include="no";
			}
		}
	}
}

##################################################
sub compute_change {
local(@Zeit);
local(@lines);
local($line);
@fields="";

	@Zeit=localtime(time());

	open(DBFILE,"<$DataFilePath") || die "Datei $DataFilePath nicht gefunden!\n";
	@lines=<DBFILE>;
	close(DBFILE);

	if (&canwritefile==0) {
		&CgiDie("Unerwarteter Server-Fehler - Bitte später noch einmal probieren! webmaster\@leipzig-info.net");
	}
	open(TMPFILE,">$DataFilePath") || die "Datei $DataFilePath nicht geunden!\n";
	flock(TMPFILE, 2);
	foreach $line (@lines) {
		if ($line !~ /^$FORM{'nr'}\|/) {
			print TMPFILE $line;
		} else {
			print TMPFILE $FORM{'nr'};
			foreach $DBField (@DBFields) {
				print TMPFILE "|",$FORM{$DBField};
				push(@fields,$FORM{$DBField});
			}
			print TMPFILE "|";
			print TMPFILE $Zeit[3],".",++$Zeit[4],".",$Zeit[5]," ",$Zeit[2],":",$Zeit[1],":",$Zeit[0];
			print TMPFILE "\n";
		}
	}
	flock(TMPFILE, 8);
	close(TMPFILE);
}

##################################################
sub compute_ad_data {
local($firma);
local($body);
local($adr);

	$firma = $FORM{'firma'};
	$adr=$FORM{'adr'};
	$firma =~ s/ /_/g;
	$adr =~ s/\n/, /g;
	$adr =~ s/\r//g;
	if (&canwritefile==0) {
		&CgiDie("Unerwarteter Server-Fehler - Bitte später noch einmal probieren! webmaster\@leipzig-info.net");
	}
	open (ADDUSER, ">>$peoplepath/people.list");
	flock(ADDUSER, 2);
	print ADDUSER "$FORM{'login'} ";
	print ADDUSER "$FORM{'passwd'} ";
	print ADDUSER "$firma ";
	print ADDUSER "$firma\n";
	flock(ADDUSER, 8);
	close (ADDUSER);

	$body="Es wurde eine Werbeplazierung bestellt.\n\n";
	$body.="Das sind die eingegebenen Daten:\n\n";
	$body.="Firma: $FORM{'firma'}\n";
	$body.="Adresse: $adr\n";
	$body.="Tel.: $FORM{'tel'}\n";
	$body.="Fax: $FORM{'fax'}\n";
	$body.="Email: $FORM{'email'}\n";
	$body.="-----------------------------------------\n";
	$body.="Werbeart: $FORM{'adver'}\n";
	$body.="Seite: $FORM{'seite'}\n";
	$body.="Laufzeit: $FORM{'Laufzeit'}\n";
	$body.="Banner: $FORM{'banner'}\n";
	$body.="B-URL: $FORM{'BannerURL'}\n";
	$body.="B-Link: $FORM{'Bannerlink'}\n";
	$body.="B-L-URL: $FORM{'BannerLinkURL'}\n";
	$body.="Username: $FORM{'login'}\n\n";

	if ($sende_email eq "on") {
		require "./libs/mail-lib.pl";
		&send_mail($recipient, $admin_mail,"Werbeplazierung",$body);
	} else {
		open(DBFILE,">>werbung.txt");
		print DBFILE $body;
		close(DBFILE);
	}
}

##################################################
sub output_adinput_result {
local($line);

	open(RESULT,"<$WerbungPath/adinput_result.html") || die "Datei $WerbungPath/result.html nicht gefunden!\n";
	@result=<RESULT>;
	close(RESULT);

	foreach $line (@result) {
		$line =~ s/\$MAXNO/$maxno/;
		print $line;
	}
}

##################################################
sub send_email {
local($line);
local($body);
local($preis);
local($art);
local($zusatz);

	if (($send_mail eq "yes") && ($fields[$db{"email"}] ne "")) {
		if ($fields[$db{"type"}] eq "standard") {
			$art="Ihren Standard-Eintrag";
			$preis="DM 100,00";
			$zusatz="Falls Sie zu einer anderen Eintragsart wechseln möchten (z. B. um Ihr Firmenlogo einzubinden oder Werbung auf leipzig-info.net zu schalten), ";
			$zusatz.="können Sie auch dies jederzeit online auf der Seite zum Ändern Ihres Eintrags (http://www.leipzig-info.net/firmen/aendern.html) tun. ";
		} elsif ($fields[$db{"type"}] eq "erweitert") {
			$art="Ihren erweiterten Eintrag";
			$preis="DM 250,00";
			$zusatz="Bitte beachten Sie, daß Ihr Eintrag die Darstellung eines Logos oder Grafik umfaßt. Wir werden zu Ihnen Kontakt aufnehmen um uns mit Ihnen abzusprechen. ";
		} elsif ($fields[$db{"type"}] eq "werbe") {
			$art="Ihr Werbe-Paket";
			$preis="DM 500,00";
			$zusatz="Bitte beachten Sie, daß Ihr Eintrag die Darstellung eines Logos oder Grafik umfaßt. Außerdem werden per Zufall Werbebanner von Ihnen auf allen Seiten des Firmenverzeichnisses eingeblendet. Wir werden zu Ihnen Kontakt aufnehmen um uns mit Ihnen abzusprechen. ";
		}

		open(EMAIL,"<./email-eintrag.txt") or die "Datei ./email-eintrag.txt nicht gefunden!\n";
			while(<$line>) {
				$line =~	s/\$ART/$art/;
				$line =~	s/\$PREIS/$preis/;
				$line =~	s/\$ZUSATZ/$zusatz/;
				$line =~	s/\$LOGIN/$fields[$db{"login"}]/;
				$line =~	s/\$PASSWD/$fields[$db{"passwd"}]/;
				$body=$body . $line;
			}
		close(EMAIL);

		open(MAIL,"|$mailprogramme -t");
		print MAIL "To: $FORM{'email'}\n";
		print MAIL "From: $admin_mail (Firmenverzeichnis bei www.Leipzig-Info.net)\n";
		print MAIL "Subject: Ihr Eintrag im Firmenverzeichnis von leipzig-info.net\n\n";
		print MAIL "$body\n";
		close(MAIL);
	}
		open(MAIL,"|$mailprogramme -t");
		print MAIL "To: firmen\@leipzig-info.net\n";
		print MAIL "From: $admin_mail (Firmenverzeichnis bei www.Leipzig-Info.net)\n";
		print MAIL "Subject: [FirmenDB.pl] Neuer Firmeneintrag!\n\n";
		my $temp;
		foreach $temp (keys %db) {
			print MAIL "$temp: $fields[$db{$temp}]\n";
		}
		close(MAIL);
}

# EOF


