#!/usr/bin/perl
############################################################################
# CineSearch - Kinoprogramm Version 5.x #
# (c) 1998-2001 docu:media documedia@leipzig-info.net #
############################################################################
# Version History
# 5.1 - Einbindung der Filmplakate in der Resultatsanzeige
# gleichzeitig Optimierung des Codes durch Unterbindung einiger if-Abfragen
# 5.0 - Komplett überarbeitete Version, ab jetzt mit MySQL-Support
# Deutlich schneller, da neue Suchroutine mit SQL-Unterstützung
# 4.0 - Suchverfahren vollständig überarbeitet und optimiert
# jetzt deutlich schneller für Suche ohne Stichwort
# 3.5 - Komplett umgestellt auf CSS, dadurch deutlich schnellere Ausgabe
# Nun auch mit einer speziellen Seite zum Drucken
# 3.2 - Jetzt mit Movie-Hitliste in Beta-Phase
# 3.1 - Neu: Anzeige, in welchem Saal ein Film läuft
# 3.0 - Suche jetzt auch mit Auswahl einer bestimmten Startzeit möglich
# Farbige Darstellung dieser Zeiten, neue Fehlerausgabe falls Startzeit
# nicht gefunden, bestehende Fehlerausgaben weitreichend überarbeitet
# 2.1 - Anführungsstriche erlauben das Suchen nach Phrasen + word="phrase"
# 2.0 - Farbige Markierung der gefundenen Begriffe
# 1.9 - Neu: Link zur Suche für alle Filme inb gewähltem Kino
# Neue Ausgabe mit Links wenn Film in jeweiligem Kino nicht läuft.
# 1.8b - geringe Codeoptimierung, leichte Geschwindigkeitssteigerung
# 1.8a - Verbesserte Ausgabe des Links für Suche in allen Filmen
# Bugfix: URL-Kodierter Suchstring bei Suche in allen Filmen
# Beachtet nun auch ob Suche nach ganzem Wort gewünscht
# 1.8 - Sucht nun endlich mit UND-Verknüpfung, neue Funktion: Suche in allen
# Filmen der DB, nicht nur den laufenden
# 1.7a - Interne Änderung für mehr Sicherheit -> Referer-Check
# 1.7 - Wechselndes Banner wird in der Resultpage angezeigt
# 1.6a - Verbesserte Ausgabe nun auch bei "demnächst" und kleine kosmetische
# Änderungen
# 1.6 - Verbesserte Ausgabe der Tabellen (Farbe abwechselnd)
# Einlesen vone filme.db und kinos.db optimiert
# 1.5a - Bugfix in Tabellenüberschrift
# 1.5 - verbesserte Ausgabe bei "demnächst" inkl. Anzeige des Starttermins
# 1.4 - Sucht nun auch mehrere Begriffe (per UND verknüpft)
# 1.3 - wählt automatisch beste Sortierung
# 1.2 - Kinonamen per Zahl übergeben, ganzes Wort suchen, Links bei "Nicht gefunden"
# 1.1 - formatierte Ausgabe, Listing nach Film oder Kino sortiert
# 1.0 - erstes funktionierendes Release
use DBI;
use CGI;
my $http=new CGI;
# Variables
$basedir = '/home/lin/htdocs';
#$basedir = 'e:/leipzig-info.net';
$baseurl = "/";
$kinodatenpath="$basedir/kino/kinodaten.txt";
$dbdir = '.';
$anzahl=0;
$script="/cgi-bin/CineSearch.cgi";
$font="Verdana,Arial,Helvetica,sans-serif";
$ver="5.2";
# 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";
@kino_sms_werbung=( "Was läuft gegen 20 Uhr im Cinestar? SMS \"leipzig cinestar 20\" an 72672",
"Was läuft jetzt als nächstes im Cinestar? SMS \"leipzig cinestar\" an 72672",
"Was läuft gegen 18 Uhr im Regina? SMS \"leipzig regina 18\" an 72672",
"In welchem Leipziger Kino läuft heute gegen 20 Uhr Das Parfum? SMS \"leipzig parfum 20\" an 72672",
"Wo läuft als nächstes Miami Vice? SMS \"leipzig miami\" an 72672");
@days_sort=qw(Do Fr Sa So Mo Di Mi);
@wdays=qw(So Mo Di Mi Do Fr Sa);
@filme_felder=qw(name erklaerung ot jahr von mit);
%tage_id=( "Mo" => 8,
"Di" => 9,
"Mi" => 10,
"Do" => 11,
"Fr" => 12,
"Sa" => 13,
"So" => 14);
%kinos_id=( "id" => 0,
"name" => 1,
"adresse" => 2,
"telefon" => 3,
"zusatz" => 4);
%filme_id=( "id" => 0,
"name" => 1,
"erklaerung" => 2,
"ot" => 3,
"jahr" => 4,
"min" => 5,
"von" => 6,
"mit" => 7,
"fsk" => 8,
"web" => 9);
%filmecd_id=( "id" => 0,
"film_id" => 1,
"asin" => 2,
"titel" => 3,
"beschreibung" => 4,
"imageurl" => 5);
%votes_id=( "id" => 0,
"film_id" => 1,
"stimmen" => 2,
"timestamp" => 3);
$time=$http->param("time");
###########################################################################
# Parse Form Search Information
$sterms=$http->param("sterms");
if ($sterms =~ /"([^"]*)"/) {
$split_sterms[0] = $1;
$split_sterms[0] =~ s/[\[\n\r \]\*]+/ /g;
} elsif ($http->param("word") eq "phrase") {
$split_sterms[0] = $sterms;
$split_sterms[0] =~ s/"//g;
$split_sterms[0] =~ s/[\[\n\r \]\*]+/ /g;
} else {
$sterms =~ tr/[\+\-]/ /;
@split_sterms = split(/\s+/, $sterms);
}
$sterms =~ s/(\W)/sprintf("%%%x", ord($1))/eg;
$sterms =~ s/%20/+/g;
$qs=$ENV{'QUERY_STRING'};
$qs =~ s/(\W)/sprintf("%%%x", ord($1))/eg;
$qs =~ s/%20/+/g;
#if ($ENV{'HTTP_REFERER'}!~/leipzig-info\.net/i) {
# open(LOG,">>./kinolog.txt") or die "Kann Datei nicht oeffnen!";
# print LOG localtime(time)." ".$ENV{'HTTP_REFERER'}."\n";
# close(LOG);
#}
$dbh = DBI->connect ("DBI:mysql:www22","www22","lzig33") || die "Verbindung zu SQL-Server fehlgeschlagen!";
if ($http->param("mode") eq "showmovie") {
&showmovie;
&vote_movie($http->param("movie"));
} elsif ($http->param("mode") eq "showcinema") {
&showcinema;
} elsif ($http->param("mode") eq "showvotes") {
&show_votes;
} elsif ($http->param("mode") eq "allfilms" || lc($http->param("sterms")) eq "demnächst") {
&search_allfilms;
} else {
&search_routine;
}
print "