#!/usr/bin/perl -w
#<head><title>domtv</title>
#<meta name="category" content="pl,perl">
#<meta name="description" content="Get tv data for today and build some domable html, xml or rdf">
#</head>

package TV::today;
use strict;
use CGI qw(:standard :html3);
use CGI;
use Date::Manip;
use jip;
use vars qw(@id $Q $debug $ddns);

$ddns=&ddns;
$Q = new CGI;
my $Qself = $Q->self_url;    
my $Qselfs = $Q->url;
my $Mime;
$Mime="text/xml" if ($Qself =~ /xml/);
$Mime="text/html" if ($Qself =~ /prut/);
$Mime="text/rdf" if ($Qself=~/rdf/);
$Mime="text/plain" unless $Mime;
$debug=$Q->param('debug');
my $expires="-5min";
print $Q->header(-type=>$Mime,
		 -expires=>$expires);



#time
my $start =  $Q->param('start') if $Q->param('start');
my $end =  $Q->param('end') if $Q->param('end');
$start="now" unless $start;
$end="+1day" unless $end;
my $dstart=&ParseDate($start);
my $dend=&ParseDate($end);


#query
my $noti = " data between $start $dstart and $end $dend \n";
my $query="";
$query = <<GROK;
  select * from programs where 
  (
   (timed > '$dstart' AND timed < '$dend')
  OR
   (timed < '$dstart' AND endtime > '$dend')
  OR
   (timed < '$dstart' AND endtime > '$dstart')
  )
  order by timed
GROK
$noti .= "  query: $query";

use dbq;
my $P = new dbq;
$P->doq($query);

*id = $P->{id};
my $cnt=scalar(@id);
$noti .= " $cnt results following in $Mime  \n";

if ($Mime eq "text/rdf"){
    print <<GROK;
<?xml version="1.0" encoding="iso-8859-1"?>
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:s="http://$ddns/tv/rdf#">
GROK
    print "<!--\n $noti \n-->\n";
    foreach my $i(@id){
	print mkprogramma($P,$i,$Mime);
    }
    print "<RDF:Seq ID=\"programs\">\n";
    foreach my $i(@id){
	$i=mkclean($i);
	print "  <RDF:li resource=\"urn:kwark:tv:$i\"/>\n";
    }
    print "</RDF:Seq>\n";
    print "</RDF:RDF>\n";

}else{
    print $noti;
    my $daguurold="-1";
    my $tableopen;
    foreach my $i(@id){
	my $daguur = &UnixDate($P->{timed}{$i},"%Y-%m-%d %H:00");
	unless ($daguur eq $daguurold){
	    print "</table>\n" unless ($daguurold eq "-1");
	    print "\n<table class='uurblok' id='$daguur'>\t<th>$daguur</th>\n";
	    $tableopen=1;
	}
	$daguurold=$daguur;
	print mkprogramma($P,$i,$Mime);
    }
    print "</table>\n" if $tableopen;
}

1;
# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
sub mkprogramma {
    my ($s)=shift;
    my ($i)=shift;
    my ($Mime)=shift;
    $i =~ s/<.*>//g;
    $i =~ s/<|>//g;

    my ($r)="";
    my ($nsubtag,$destag);
    my ($name) = $s->{name}{$i};
    my $uname=&toencode($name);
	$name =~ s/<.*>//gi;
    my ($namesub) =$s->{namesub}{$i};
    my ($zender) =$s->{zender}{$i};
    my ($begind) = &d2moch($s->{timed}{$i});
    my ($end) = &d2moch($s->{endtime}{$i});
    my ($timebegin) = &d2uur($s->{timed}{$i});
    my ($timeend) = &d2uur($s->{endtime}{$i});
    my ($description) = $s->{descr}{$i};

#xml mime
    if ($Mime eq "text/xml"){
	if ($description){
	    $destag="\n    <Description>$description</Description>";
	}else{
	    $destag=" ";
	}
	if ($namesub){
	    $nsubtag="\n   <NameSub>$namesub</NameSub>";
	}else{
	    $nsubtag=" ";
	}
	$r .= <<GROK;
  <Programma begind="$begind" end="$end" id="$i">
    <Timer>
     <BeginTime>$timebegin</BeginTime>
     <EndTime>$timeend</EndTime>
     <Zender>$zender</Zender>
    </Timer>
    <Name>$name</Name>$nsubtag$destag
  </Programma>

GROK

} elsif ($Mime eq "text/html"){
#text mime

    $r .= <<GROK;
  <tr id="$i" begind="$begind" end="$end" class="programma">
   <td valign="top">$timebegin-$timeend&nbsp;$zender&nbsp;</td>
   <td><b><a 
       href="http://$ddns/tv/fav?ptitle=$uname&uid=oligoly&action=edit"
       >$name</a></b> <i>$namesub</i><br><description>$description</description></td>
  </tr>
GROK
} elsif ($Mime eq "text/rdf"){
    $name=$name." $namesub" if $namesub;
    $r .= <<GROK;
<RDF:Description about="urn:kwark:tv:$i">
  <s:title>$name</s:title>
  <s:channel>$zender</s:channel>
  <s:start>$timebegin</s:start>
  <s:end>$end</s:end>
  <s:description>$description</s:description>
</RDF:Description>


GROK
}else{
    $r .= <<GROK;
$timebegin-$timeend\t$zender\t$name $namesub
GROK
    $r .= "$description\n" if $description;
}
    $r =~ s/\&/\&amp;/g;
    $r =~ s/\&amp;nbsp;/\&nbsp;/g;
    $r;
}
































