<?php
#
# This displays a digital clock on the Cisco7960 IP phones
# the digits are borrowed from the Cisco SDK and adjusted to
# fit the smaller screen of the SIP image version of the phone
#
#
# Author: alexander.noack@web.de, Oct. 2003
#


#
# Some CiscoIPPhones don't send a HOST: header when requesting a page
# Therefore store the "$server" in a config file
#
include("config.inc");
if(!isset(
$server)){ $server $_SERVER['SERVER_NAME']; }

#
# the phone expects XML; the page is refreshed every 15 sec.
#
header("Refresh: 15; url=http://${server}${_SERVER['PHP_SELF']}");
header("Connection: close");
header("Content-Type: text/xml");

#
# the visible area of the display
#
$x 120;
$y 60;

$number   date("H:i"time());

#
# the character definition (see SDK for details)
# the colon demarks the end of a line, since the image will
# be drawn line by line and we want to catenate more than
# one character
#
$font[0]  = "00000000000000:00FFFFFFFFFF00:C0FFFFFFFFFF03:30FFFFFFFFFF0C:FCFCFFFFFF3F3F:FCF3FFFFFFCF3F:FCCFFFFFFFF33F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:F00F000000F00F:C003000000C003:00000000000000:00000000000000:C003000000C003:F00F000000F00F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FCCFFFFFFFF33F:FCF3FFFFFFCF3F:FCFCFFFFFF3F3F:30FFFFFFFFFF0C:C0FFFFFFFFFF03:00FFFFFFFFFF00";
$font[1]  = "00000000000000:00000000000000:00000000000000:0000000000000C:0000000000003F:0000000000C03F:0000000000F03F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000F00F:0000000000C003:00000000000000:00000000000000:0000000000C003:0000000000F00F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000F03F:0000000000C03F:0000000000003F:0000000000000C:00000000000000:00000000000000";
$font[2]  = "00000000000000:00FFFFFFFFFF00:C0FFFFFFFFFF03:00FFFFFFFFFF0C:00FCFFFFFF3F3F:00F0FFFFFFCF3F:00C0FFFFFFF33F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:00C0FFFFFFF30F:00F0FFFFFFCF03:00FCFFFFFF3F00:00FCFFFFFF3F00:C0F3FFFFFF0F00:F0CFFFFFFF0300:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FCCFFFFFFF0300:FCF3FFFFFF0F00:FCFCFFFFFF3F00:30FFFFFFFFFF00:C0FFFFFFFFFF03:00FFFFFFFFFF00";
$font[3]  = "00000000000000:00FFFFFFFFFF00:C0FFFFFFFFFF03:00FFFFFFFFFF0C:00FCFFFFFF3F3F:00F0FFFFFFCF3F:00C0FFFFFFF33F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:00C0FFFFFFF30F:00F0FFFFFFCF03:00FCFFFFFF3F00:00FCFFFFFF3F00:00F0FFFFFFCF03:00C0FFFFFFF30F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:00C0FFFFFFF33F:00F0FFFFFFCF3F:00FCFFFFFF3F3F:00FFFFFFFFFF0C:C0FFFFFFFFFF03:00FFFFFFFFFF00";
$font[4]  = "00000000000000:00000000000000:00000000000000:3000000000000C:FC00000000003F:FC03000000C03F:FC0F000000F03F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:F0CFFFFFFFF30F:C0F3FFFFFFCF03:00FCFFFFFF3F00:00FCFFFFFF3F00:00F0FFFFFFCF03:00C0FFFFFFF30F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000F03F:0000000000C03F:0000000000003F:0000000000000C:00000000000000:00000000000000";
$font[5]  = "00000000000000:00FFFFFFFFFF00:C0FFFFFFFFFF03:30FFFFFFFFFF00:FCFCFFFFFF3F00:FCF3FFFFFF0F00:FCCFFFFFFF0300:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:F0CFFFFFFF0300:C0F3FFFFFF0F00:00FCFFFFFF3F00:00FCFFFFFF3F00:00F0FFFFFFCF03:00C0FFFFFFF30F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:00C0FFFFFFF33F:00F0FFFFFFCF3F:00FCFFFFFF3F3F:00FFFFFFFFFF0C:C0FFFFFFFFFF03:00FFFFFFFFFF00";
$font[6]  = "00000000000000:00FFFFFFFFFF00:C0FFFFFFFFFF03:30FFFFFFFFFF00:FCFCFFFFFF3F00:FCF3FFFFFF0F00:FCCFFFFFFF0300:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:FC3F0000000000:F0CFFFFFFF0300:C0F3FFFFFF0F00:00FCFFFFFF3F00:00FCFFFFFF3F00:C0F3FFFFFFCF03:F0CFFFFFFFF30F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FCCFFFFFFFF33F:FCF3FFFFFFCF3F:FCFCFFFFFF3F3F:30FFFFFFFFFF0C:C0FFFFFFFFFF03:00FFFFFFFFFF00";
$font[7]  = "00000000000000:00FFFFFFFFFF00:C0FFFFFFFFFF03:00FFFFFFFFFF0C:00FCFFFFFF3F3F:00F0FFFFFFCF3F:00C0FFFFFFF33F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000F00F:0000000000C003:00000000000000:00000000000000:0000000000C003:0000000000F00F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000F03F:0000000000C03F:0000000000003F:0000000000000C:00000000000000:00000000000000";
$font[8]  = "00000000000000:00FFFFFFFFFF00:C0FFFFFFFFFF03:30FFFFFFFFFF0C:FCFCFFFFFF3F3F:FCF3FFFFFFCF3F:FCCFFFFFFFF33F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:F0CFFFFFFFF30F:C0F3FFFFFFCF03:00FCFFFFFF3F00:00FCFFFFFF3F00:C0F3FFFFFFCF03:F0CFFFFFFFF30F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FCCFFFFFFFF33F:FCF3FFFFFFCF3F:FCFCFFFFFF3F3F:30FFFFFFFFFF0C:C0FFFFFFFFFF03:00FFFFFFFFFF00";
$font[9]  = "00000000000000:00FFFFFFFFFF00:C0FFFFFFFFFF03:30FFFFFFFFFF0C:FCFCFFFFFF3F3F:FCF3FFFFFFCF3F:FCCFFFFFFFF33F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:FC3F000000FC3F:F0CFFFFFFFF30F:C0F3FFFFFFCF03:00FCFFFFFF3F00:00FCFFFFFF3F00:00F0FFFFFFCF03:00C0FFFFFFF30F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:0000000000FC3F:00C0FFFFFFF33F:00F0FFFFFFCF3F:00FCFFFFFF3F3F:00FFFFFFFFFF0C:C0FFFFFFFFFF03:00FFFFFFFFFF00";
$font[10] = "00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000:00000000000000";
$font[11] = "0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:F00F:F00F:F00F:F00F:F00F:F00F:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:F00F:F00F:F00F:F00F:F00F:F00F:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000";

#
# do this for each character in the $number string
#
for($i=0$i<strlen($number); $i++)
{
 
$char=$number{$i};
 if( 
$char == " " ){ $char=10; }
 if( 
$char == ":" ){ $char=11; }
 
$tmp=explode(":"$font[$char]);
 
 
#
 # for each line we create a new array where all
 # the digits add one line
 #
 
for($j=0$j<($y-1); $j++)
 {
  
$img[$j] .= $tmp[$j];
  
#
  # the whole line must not be longer than $x pixels
  # which is the same as $x/2 characters, since each
  # character resembles two points (see SDK)
  #
  
if( strlen($img[$j]) > ($x/2) )
  {
   
$img[$j] = substr$img[$j], 0$x/2);
  } 
 }
}

echo 
"<?xml version='1.0' ?>\n";
?>
<CiscoIPPhoneImage>
 <Title>Current Time in Berlin</Title>
 <Prompt><?php echo date("D, F j, Y (T)"time()); ?></Prompt>
 <Depth>2</Depth>
 <Width><?php echo $x?></Width>
 <Height><?php echo $y?></Height>
 <LocationX>-1</LocationX>
 <LocationY>-1</LocationY>
 <Data><?php echo implode(""$img); ?></Data>
</CiscoIPPhoneImage>