#!/usr/bin/perl
############################################################################
#
#   (c) Markus Wolf, 2000
#
############################################################################
#
# fm_clear.cgi
# COPYRIGHT NOTICE
# Copyright 2000 Markus Wolf
# All Rights Reserved.
# EMail: perl@perl-archiv.de
# URL  : http://www.perl-archiv.de
#
# fm.cgi darf von jedermann kostenlos benutzt und geändert werden, solange
# dieser Copyright-Verweis und die restlichen Kommentare erhalten bleiben. Mit
# dem Einsatz dieses Skripts akzeptieren Sie, daß Markus Wolf von jeglicher
# Haftung und Gewährleistung hinsichtlich des Einsatzes befreit ist.
#
# Der Verkauf dieses Skripts, auch in modifizierter Form, ist ohne vorherige
# Absprache ausdrücklich untersagt.
# (Mit anderen Worten: Bitte fragen Sie mich, bevor Sie versuchen, mit meinem
# Skript Geld zu verdienen.)
#
# Um dieses Skript über das Internet oder irgendein anderes Medium
# weiterzuverbreiten, benötigen Sie vorher meine Erlaubnis. In jeden Fall
# müssen der Copyright-Verweis und die restlichen Kommentare erhalten bleiben.
#
# Wer den Copyrighthinweis bei der Ausgabe nicht haben will, kann diesen gegen
# eine Lizenzgebühr von DM 58,- rausnehmen. Einfach ein Mail an
# perl@perl-archiv.de, dann gibt es eine Rechnung.
#
############################################################################
#
# In diesem Script muß normalerweise nicht geändert werden.
# Das Script kann in die Crontab eingebunden werden oder
# über den Browser aufgerufen werden.
#
############################################################################


#Ermittlung und Wechsel in das aktuelle Verzeichnis (CGI)
my $base_dir = rindex ($0, "\\") ;
$base_dir = rindex ($0, "/") if ($base_dir < 0) ;
my $script_dir = substr( $0, 0, $base_dir) ;
chdir($script_dir) ;

#Ausgabe an Browser
print "Content-Type: text/html\n\n" ;

#Zeitverschiebung in Stunden (-/+ möglich)
my $zeitverH=0 ;

#Kleinanzeigendatenfile - $temp_file als Puffer
my $temp_file = "temp.txt" ;

#Module
use Time::Local ;
use CGI::Carp qw(fatalsToBrowser) ;

#Datum
&datum_zeit ;

#Ausführung
opendir (ETC , ".") || die "Kann Verzeichnis nicht lesen !" ;
foreach $nam (sort readdir(ETC)) {
        &clear($nam) if ($nam =~ /\.dat$/i) ;
}
close (ETC) ;



############################################################################
# Lesen der Anzeigen und schreiben in Temp Datei
############################################################################

sub clear {


my $dat_file=shift ;
my @data_set ;
my @lines ;
my $i=0 ;
my $line ;


#Temp-File öffnen
open (TEMP , "> $temp_file") || die "kann Datenfile ($temp_file) nicht zum Schreiben öffnen." ;
print "Temporäres File geöffnet ... <br>\n" ;

#Daten-File öffnen
open (DAT , "< $dat_file") || die "Kann Datenfile ($dat_file) nicht zum Lesen öffnen." ;
print "Daten-File: $dat_file geöffnet ... <br>\n" ;

#Verarbeitung
while($line=<DAT>) {
        @data_set = split(/\|/,$line) ;
        if (($data_set[7] !~ /^\d\d\.\d\d\.\d\d\d\d/) || (&check_date($data_set[7])) > $data_set[8]) {
                $i++ ;
                next ;
        }
        print TEMP "$line" ;
}

#Datenfile schließen
close (DAT) ;
print "Daten-File: $dat_file geschlossen ... <br>\n" ;

#Temp-File schließen
close (TEMP) ;
print "temporäre File geschlossen ... <br>\n" ;

#Temp-File umbenennen
rename($temp_file,$dat_file);
print "temporäre File umgenannt ... <br>\n" ;

#Temp-File löschen
unlink "$temp_file" ;
print "temporäre File gelöscht ... <br>\n$i Einträge aus $dat_file gelöscht\n <br><br>\n\n" ;


}



############################################################################
# Datum prüfen
############################################################################

sub check_date {


my $tocheck=$_[0] ;
my $tocheck2 ;
my $datcheck2 ;
my $back_stat ;
my $tag ;
my $monat ;
my $jahr ;


$tag   = substr($tocheck , 0,2) ;
$monat = substr($tocheck , 3,2) - 1 ;
$jahr  = substr($tocheck , 6,4) ;
$tocheck2  = timelocal(0, 0, 0, $tag, $monat, $jahr)   ;

$tag   = substr($datcheck , 6,2) ;
$monat = substr($datcheck , 4,2) - 1 ;
$jahr  = substr($datcheck , 0,4) ;
$datcheck2 = timelocal(0, 0, 0, $tag, $monat, $jahr)  ;


#Rückgabe
$back_stat=int(($datcheck2-$tocheck2)/86400) ;
return ($back_stat) ;


}



############################################################################
# aktuelle Datum und Zeit ermitteln
############################################################################

sub datum_zeit {


my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time+($zeitverH*3600));


$mon = $mon+1;
$year = 1900+$year;

$min  = "0$min"   if ($min  < 10) ;
$hour = "0$hour"  if ($hour < 10) ;
$mon  = "0$mon"   if ($mon  < 10) ;
$mday = "0$mday"  if ($mday < 10) ;

$ndate = "$mday.$mon.$year - $hour:$min";
$datcheck = "$year$mon$mday" ;


}



############################################################################
# ENDE
############################################################################