#!/usr/bin/perl -w
#<head><TITLE>boink goes sql</TITLE>
#<meta name="category" content="pl,perl">
#<META name="description" content="For Gijs Boink, read a xml file, do some database, and be dom.">
# </head>
use XML::Parser;
use Date::Manip;
use dbq;
require 'dumpvar.pl';
use XML::DOM;

$now=&ParseDate("now");
print &UnixDate($now,"%a %e %b %Y %H:%M.%S");

my $str = `cat users.xml`;
my $parser = new XML::DOM::Parser;
my $doc = $parser->parse ($str);

$users=&getUsers($doc);

sub getUsers{
	my $doc = shift;
	my $ckls = $doc->getElementsByTagName ("user");
	$ckls;
}

for my $user (@$users){
	$out=$user->toString;
	print $out;
	my $userbeen=$user->getElementsByTagName("been")->[0]->getFirstChild;
#	$userbeen->setNodeValue("andere data");
#	$out=$user->toString;
#	print $out;
}

for my $user (@$users) {
    my $been = getInh($user,"been");
    my $name = getInh($user,"name");
    my $lastsent = getInh($user,"lastsent");
    my $id = getInh($user,"id");
    my $mail = getInh($user,"email");
    my @favs = getInha($user,"pname");
    my $beenh =  &UnixDate($been,"%a %e %b %Y");
    my $beend =  &ParseDate($been);
    my $lastsenth = &UnixDate($lastsent,"%a %e %b %Y");
    print "\n user: $id $name $been $mail @favs";
    print "\n";
    $uid=$id;
    @pns=@favs;
	$favsp = join ",",@favs;
    $naam = $name; 
	$beend =&ParseDate("$been");
	print $beend;
	my ($q)= "select * from programs where \n\t(";
	foreach $pn (@pns){
		$q .= "( name ~ '$pn' ) or";
	}
	$q =~ s/or$//i;
	$q .= ") \n\tand (timed > '$been' ) \n\t";
	$q .= "order by timed ";
	print "$q\n";
	$s= new dbq;
	$s->doq($q);
     *nums=$s->{id};
	my $rescnt = scalar(@nums);
 	my $lastid = $nums[$rescnt -1 ];
	$nextbeen = $been;
	$nextbeen = $s->{timed}{$lastid} if ($s->{timed}{$lastid});
	$nextbeenh = &UnixDate($nextbeen,"%a %e %b %Y");
	$m = <<GROK;
Hoi $naam,

Ons vorige contact was
   $lastsenth

Uw query is
    $q

U krijgt
    $rescnt nieuwe $favsp tussen $beenh en $nextbeenh.
GROK
	$m .= &SpuiT($s);
	print $m;
	open FILE, ">/tmp/$uid";
	print FILE $m;
	close FILE;
	$out=$user->toString;
	print $out;
	my $userbeen=$user->getElementsByTagName("been")->[0]->getFirstChild;
	$userbeen->setNodeValue("$nextbeen");
	$out=$user->toString;
	print $out;
}

$doc->printToFile("new.xml");

sub SpuiT{
    my ($s) = shift;
    *id=$s->{id};
    my ($o);
    foreach $i (@id){
	($begind,$begint) = $s->{timed}{$i} =~ /(\d\d\d\d\d\d\d\d)(\d\d:\d\d):\d\d/;
	($endd) = $s->{endtime}{$i} =~ /\d\d\d\d\d\d\d\d(\d\d:\d\d):\d\d/; 
	$o .= "\n".&UnixDate($s->{timed}{$i},"%a %e %b %Y")."\n" if ($begindlas ne $begind);
	$o .= "$begint ".$s->{zender}{$i}."  ";
	$o .= $s->{name}{$i}." ";
	$o .= $s->{namesub}{$i} if ( $s->{namesub}{$i} );
	$o .= "\n";
	my($dee)=$s->{descr}{$i}." (tot $endd) ";
	$^A = "";
	formline <<'END', $dee;
      ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ~~
END
	$o .= $^A;
	$begindlas=$begind;
    }
return $o;
}


exit 1;

sub getInha{
	my ($d)=shift;
	my ($s)=shift;
	my ($c)="0";
 	my (@rr);
	my $el = $d->getElementsByTagName ("$s");
	*ar=$el;
	$count = scalar(@ar);
	for ($c = 0 ;$c<$count;$i++){		
		$rr[$c] = $el->[$c]->getFirstChild->getData;
		print "$c $rr[$c]\n";
		$c++;
	};
	return @rr;
}
sub getInh{
	my ($d)=shift;
	my ($s)=shift;
	my $el = $d->getElementsByTagName ("$s");
	my $re = $el->[0]->getFirstChild->getData;
	return $re;
}



