#!/usr/bin/perl -w
package TV::users;
use Date::Manip;
use XML::DOM;
use CGI qw/:push -nph/;
use XML::XQL;
use XML::XQL::DOM;

$parser = new XML::DOM::Parser;




$| = 1;
$:=1;$debug=1;
my $users="";
my $fav="";
$tt="";
$Q=&begin;
$Qself = $Q->self_url;    
$Qselfs = $Q->url; 
warn $Q if($debug);
my $file="/www/XML/test.xml";

#begin
print multipart_init(-boundary=>'----------------here we go!')  if ($Q ne "none");
$mpb=multipart_start(-type=>'text/html');
$mpe=multipart_end;
print $mpb,"mku\n" if ($Q ne "none");

$doc = &domdoc($file)|| die "Can't open domfile $file $!\n";
#print $doc;
@result = XML::XQL::solve ("//home/url", $doc);
foreach $i (@result){
    print $i;
    print $i->getFirstChild->getData;
}
@url=&mku;
sub mku{
    my @url=`grep url $file`;
    my $c=0;
    foreach $i(@url){
	($url[$c++]) = $i =~ m!<url>(.+)</url>!;
    }
    @url;
}

if ($Q ne "none"){
    my $qself=$Q->self_url;
    "The current time is ",scalar(localtime),"<br>\n";
    print "<blink>loading...</blink><br>\n";
    sleep 4;
    my $r=<<GROK;
<html>
 <head>
  <title>oligoly's kwark url show.</title>
  <link rel=stylesheet href="/css/kwark.css" name="kwark stijl" type="text/css">
 </head>
 <body>
  <a 
   href="/tv/index.pl?Interval=now&Zender=All&Search=&SearchOnField=All&SortOrder=timed&clock2=now%3A+19%3A02+next%3A+19%3A25&ShowSql=on&WarnFav=on&.submit=Submit+Query"
   >TV</a>->
  <a href="http://kwark.ow.nl/tv/fav">fav</a>->
  <a href="/XML/users.xml">users</a>('oligoly')->
  <a href="/XML/zoek.xml">zoek</a>('url')->
  <a href="$qself">$qself</a>
show
  <hr>
GROK

if ($Q->param('action') eq 'edit'){
$id=$Q->param('id');
if ($id){
 print <<GROK;
edit 
GROK
}
}


    unless ($Q->param('confirm') eq 'yes'){
	#$r .= $Q->self_url;
    }
    print "make hurl<br>\n";
    $r .= "   <ul>\n";
    foreach $i(@url){
	$r .= &hurl($i);
    }
    $r .= "   </ul>\n";
    print $mpe;
    print multipart_start(-type=>'text/html'),
              $r;
              multipart_end;

}else{
    print "fadd url?";
    print "ggg\n\n";
    print `grep url $file`;
    print "done.\n";
}

sub hurl{
    my $i=shift;
    return <<GROK;
    <li id="$i">
     <a href="?edit=$i" class="url">$i</a>
     <a href="$Qselfs?id=$i&action=edit">edit</a>
    </li>
GROK
}

1;

#-------------
sub prut{
foreach my $user (@$users){
	my ($u)= &di($user,'id');
	my ($b)= &di($user,'been');
	my ($f)= &dumpU($user);
	my $l=&ch($user);
	print <<GROK;
<h3>$u $b</h3> $l
GROK
print keys %usr;
*tt=\$usr{$u}{'fav'};
#print keys %tt;
##r
#foreach $i (keys %tt){
#	$r.="$i ".$tt{$i}." <br />\n";
#}
print $r;
$r="";
}

}
$Q="";
	
sub ch{
	my $u=shift;
	my $ac=$u->getElementsByTagName('acces')->[0];
	my $lasta=$ac->getElementsByTagName('last')->[0];
	my $ret=$lasta->getFirstChild->getData;
	my $newnode=$lasta->cloneNode(1);
	$newnode->getFirstChild->setData("viewed met u");
	$ac->insertBefore($newnode,$lasta);
	$ret =~ s/^\s*|\s$//ig;
	$ret;
}

#$doc->printToFile('users.upl');

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

sub dumpU{
	my $user=shift;
	my $usrname=&di($user,'id');
	my ($r);
	my $favs = $user->getElementsByTagName("pname");
	foreach $fav (@$favs){
#		my $prgname .= &dgED($fav,'pname');
#		my $notif .= " notif:".$fav->getAttribute("notif");
#		$r .= "$prgname notif: $notif<br />\n";
#		$usr{$usrname}{'fav'}{$prgname}=$notif;
	}
	$r;
}


sub domdoc{
	my $file=shift;
	if ($parser) {
		print "parserda " if ($debug);
		} else {
		$parser = new XML::DOM::Parser;
		print "created domparser: ",$parser if($debug);
	}
	$parser->parsefile ("$file") || die "Cant domopen file $file $!\n";
}
sub di{
	my $user=shift;
	my $tagname=shift;
	my $t = $user->getElementsByTagName("$tagname");
	my $re = $t->[0]->getFirstChild->getData;
	$re;
}



sub initCGI{
	use CGI;
	if ($Q){
		warn "Q cgi da: ",$Q if ($debug);
	}else{
		$Q = new CGI;
		warn "created Q cgi",$Q if ($debug);
	}
	$Q;
}

sub begin{
	my ($Q);
	if ($ENV{'HTTP_USER_AGENT'}) {
		$Q=&initCGI;
    	#	print $Q->header(-type=>'text/html',
        #                 -expires=>'+5min');
		warn "cgi lala\n" if $debug;
	} else {
		if (@ARGV<1){print  "usage: $ENV{_}\n";}
		$Q="none";
	}
	$Q;
}









