Connect();
$ret = $svdrp->Command($cmd);
$svdrp->Disconnect();
return $ret;
}
function vdrgetinfostream($stream = "NULL", $ischan = 1)
{
global $allepg, $allepgfilled;
if ($ischan)
{
// Fill epg if not yet done
if ($allepgfilled == 0)
{
$allepg = vdrsendcommand("LSTE NOW");
$allepgfilled = 1;
}
$channame = $stream;
}
else
{
$infofile = $stream ."/info";
if (file_exists($infofile))
$info= file_get_contents($infofile);
else
{
$infofile = $stream ."/info.vdr";
if (file_exists($infofile))
$info= file_get_contents($infofile);
else
$info="";
}
$allepg = explode("\n", $info);
}
if ($ischan)
$chanfound = 0;
else
$chanfound = 1;
$epgtitlefound = 0;
$epgtitle="";
$epgdesc="";
// For all epg
$count = count($allepg);
for ($i = 0; $i < $count; $i++)
{
// Find the right chan (take the first one)
if ($chanfound == 0)
{
$streamArray = explode(";",$stream);
if (strstr($allepg[$i], $streamArray[0]) == $streamArray[0])
$chanfound = 1;
}
else
{
// Now find T or C
if(ereg("^C", $allepg[$i]))
{
// Check if it is our chan too, else search again
if ($ischan)
{
if(!ereg("$stream$", $allepg[$i]))
{
$chanfound = 0;
continue;
}
}
else
{
$channame = substr($allepg[$i], 2);
$channames = explode(" ", $channame);
$channame = substr($channame, strlen($channames[0])+1);
}
}
else if(ereg("^T", $allepg[$i]))
$epgtitle=substr($allepg[$i], 2);
else if(ereg("^D", $allepg[$i]))
$epgdesc=substr($allepg[$i], 2);
}
}
// Convert if needed
if (!is_utf8($epgtitle))
$epgtitle = utf8_encode($epgtitle);
if (!is_utf8($epgdesc))
$epgdesc = utf8_encode($epgdesc);
return array($epgtitle, $epgdesc, $channame);
}
function vdrgettimerinfo($timernum=-1)
{
if ($timernum != -1)
{
$timer = vdrsendcommand("LSTT " .$timernum);
$timerarray = explode(":", $timer);
$typearray = explode(" ", $timerarray[0]);
$type = $typearray[1];
$channel = $timerarray[1];
$date = $timerarray[2];
$stime = $timerarray[3];
$etime = $timerarray[4];
$desc = $timerarray[7];
}
else
{
$type = 1;
$channel = 1;
$date = date('Y-m-d');
$stime = date('Hi');
$etime = date('Hi');
$desc = "New timer";
}
$channame = vdrgetchanname($channel);
return array($type, $channame, $date, $stime, $etime, $desc);
}
function vdrgetchannum($chan = "NULL")
{
$channels = vdrsendcommand("LSTC");
// Get channel number
$channels = preg_grep(quotemeta('"'.$chan.';|'.$chan.':"'), $channels);
reset($channels);
$channels = explode(" ", $channels[key($channels)]);
$channum = $channels[0];
return $channum;
}
function vdrgetchanname($channum = 0)
{
$channel = vdrsendcommand("LSTC " .$channum);
// Get channel name
$chanarray = explode(":", $channel);
$chanarray = explode(";", $chanarray[0]);
$channame = $chanarray[0];
$channame = substr($channame, strlen($channum)+1);
return $channame;
}
function vdrlistcategories()
{
global $vdrchannels;
// All chans
print "
\r\n";
print "\r\n";
if (!file_exists($vdrchannels))
{
print "Error: channels file not found";
return;
}
$fp = fopen ($vdrchannels,"r");
if (!fp)
{
print "Unable to open channels file";
return;
}
while ($line = fgets($fp, 1024))
{
// Check if it is a categorie
if ($line[0] == ":")
{
// Remove : and @
$cat = substr($line, 1, -1);
if($cat[0] == '@')
{
$cat_array = explode(' ', $cat);
$cat = substr($cat, strlen($cat_array[0])+1);
}
$cat2 = addslashes($cat);
print "\r\n";
print "\r\n";
}
}
fclose($fp);
}
function vdrlistchannels($category = "NULL")
{
global $epgtitle;
global $vdrchannels;
if ($category == "All")
$cat_found=1;
else
$cat_found=0;
if (!file_exists($vdrchannels))
{
print "Error: channels file not found";
return;
}
$fp = fopen ($vdrchannels,"r");
if (!fp)
{
print "Unable to open channels file";
return;
}
while ($line = fgets($fp, 1024))
{
if ($cat_found)
{
if ($line[0] == ":")
{
if ($category == "All")
continue;
else
break;
}
$channels = explode(":", $line);
$channels = explode(";", $channels[0]);
$chan = $channels[0];
// Get EPG title
$epgtitle = NULL;
list($epgtitle, $epgdesc, $channame) = vdrgetinfostream($chan, 1);
print "";
$chan2=addslashes($chan);
print " \r\n";
if (!file_exists('logos/'.$chan.'.png'))
print " \r\n";
else
print " \r\n";
print " $chan\r\n";
print " \r\n\r\n";
print " \r\n";
}
else
{
if ($line[0] == ":")
{
// Remove : and @
$cat = substr($line, 1, -1);
if($cat[0] == '@')
{
$cat_array = explode(' ', $cat);
$cat = substr($cat, strlen($cat_array[0])+1);
}
// Check category
if ("$cat" == "$category")
$cat_found = 1;
}
}
}
fclose($fp);
}
function vdrlistchannelsdrop($chansel = "")
{
global $vdrchannels;
$chanselected = 0;
if (!file_exists($vdrchannels))
{
print "Error: channels file not found";
return;
}
$fp = fopen ($vdrchannels,"r");
if (!fp)
{
print "Unable to open channels file";
return;
}
while ($line = fgets($fp, 1024))
{
if ($line[0] == ":")
continue;
$channels = explode(":", $line);
$channels = explode(";", $channels[0]);
$chan = $channels[0];
if (($chan == $chansel) && !$chanselected)
{
print "";
$chanselected = 1;
}
else
print "";
}
}
function vdrlisttimers()
{
$timers = vdrsendcommand("LSTT");
if (gettype($timers) == "string")
{
if (!is_numeric(substr($timers,0,1)))
{
print "none
\r\n";
return;
}
else
$timersarray[] = $timers;
}
else
$timersarray = $timers;
foreach($timersarray as $timer)
{
// Extract timer #
$timerarray = explode(" ", $timer);
$timernum = $timerarray[0];
list($type, $channame, $date, $starthour, $endhour, $desc) = vdrgettimerinfo($timernum);
print "\r\n";
print "\r\n";
}
}
function vdrdeltimer($timer=0)
{
return vdrsendcommand("DELT " .$timer);
}
function vdrsettimer($prevtimer, $channame, $date, $stime, $etime, $desc, $active)
{
$channum = vdrgetchannum($channame);
if ($active)
$type = "1";
else
$type = "0";
if ($prevtimer == -1)
$command = "NEWT " .$type .":" .$channum .":" .$date .":" .$stime .":" .$etime .":99:99:" .$desc;
else
$command = "MODT " .$prevtimer ." " .$type .":" .$channum .":" .$date .":" .$stime .":" .$etime .":99:99:" .$desc;
return vdrsendcommand($command);
}
?>