'Mitel6930',
'mac'=>'00085D'.$fake_mac_suffix,
'firmware'=>'5.0.0',
'ip'=>Aastra_getvar_safe('REMOTE_ADDR','','SERVER'),
'language'=>'en',
'minet'=>False,
'rp'=>False
);
return($array);
}
# User Agent
$user_agent=Aastra_getvar_safe('HTTP_USER_AGENT','','SERVER');
$minet=False;
if(stristr($user_agent,'Aastra') or stristr($user_agent,'Mitel')) {
$count=0;
$user_agent=str_replace('MitelMINET_','Mitel',$user_agent,$count);
if($count>0) $minet=True;
$value=preg_split('/ MAC:/',$user_agent);
$fin=preg_split('/ /',$value[1]);
$value[1]=preg_replace('/\-/','',$fin[0]);
$value[2]=preg_replace('/V:/','',$fin[1]);
} else {
$value[0]='MSIE';
$value[1]='NA';
$value[2]='NA';
}
# Modification for RP phones
$rp=False;
if(strstr($value[0],'RP')) {
$rp=True;
$value[0]=preg_replace(array('/67/','/ RP/'),array('',''),$value[0]);
}
# Modules
$module[1]=Aastra_getvar_safe('HTTP_X_AASTRA_EXPMOD1','','SERVER');
$module[2]=Aastra_getvar_safe('HTTP_X_AASTRA_EXPMOD2','','SERVER');
$module[3]=Aastra_getvar_safe('HTTP_X_AASTRA_EXPMOD3','','SERVER');
# Create array
$array=array( 'model'=>$value[0],
'mac'=>$value[1],
'firmware'=>$value[2],
'ip'=>Aastra_getvar_safe('REMOTE_ADDR','','SERVER'),
'module'=>$module,
'language'=>Aastra_getvar_safe('HTTP_ACCEPT_LANGUAGE','','SERVER'),
'minet'=>$minet,
'rp'=>$rp
);
return($array);
}
###################################################################################################
# Aastra_escape_encode($string)
#
# Escape encode a string for XML compliancy
#
# Parameters
# @string string to encode
#
# Returns
# Encoded string
###################################################################################################
function Aastra_escape_encode($string)
{
return(str_replace( array('<', '>', '&'),
array('<', '>', '&'),
$string
));
}
###################################################################################################
# Aastra_escape_decode(string)
#
# Escape decode a string for XML compliancy
#
# Parameters
# @string string to decode
#
# Returns
# Decoded string
###################################################################################################
function Aastra_escape_decode($string)
{
return(str_replace( array('<', '>', '&'),
array('<', '>', '&'),
$string
));
}
###################################################################################################
# Aastra_test_phone_version(version,type,header=NULL)
#
# This function tests if the phone version is at least a certain version.
#
# Parameters
# @version minimum phone version '1.3.1.'
# @type if 0 then function takes care of the error messages
# if 1 then the result of the test is sent back, no display
# @header info header if you want to test a different phone (optional)
# Returns
# 0 everything is fine
# 1 Not an Aastra phone
# 2 Wrong firmware version
###################################################################################################
function Aastra_test_phone_version($version,$type,$header=NULL)
{
# OK by default
$return=0;
# Start with the HTTP header
if(!$header) $header=Aastra_decode_HTTP_header();
# Must be an Aastra/Mitel
if(stristr($header['model'],'Aastra') or stristr($header['model'],'Mitel')) {
# Always OK for Minet phones
if(!$header['minet']) {
# Retrieve firmware version
$phone_version=$header['firmware'];
$piece=preg_split("/\./",$phone_version);
$count=count($piece)-1;
$phone_version=$piece[0]*100;
if($count>1)$phone_version+=$piece[1]*10;
if($count>2)$phone_version+=$piece[2];
$piece=preg_split("/\./",$version);
$count=count($piece)-1;
$test_version=$piece[0]*100;
if($count>1)$test_version+=$piece[1]*10;
if($count>2)$test_version+=$piece[2];
# Compare to passed version
if($test_version>$phone_version) {
$return=2;
if($type==0) {
$output = "\n";
$output .= "Firmware not compatible\n";
$output .= "This XML application needs firmware version $version or better.\n";
$output .= "\n";
header('Content-Type: text/xml');
header('Content-Length: '.strlen($output));
echo $output;
exit;
}
}
}
} else {
$return=1;
if($type==0) {
echo "This XML application works better when using a Mitel IP phone, not a Web browser.
See here for instructions and information.
Copyright Mitel Networks 2005-2014.";
exit;
}
}
# Return results
return($return);
}
###################################################################################################
# Aastra_test_phone_versions(versions,type,header=NULL)
#
# This function tests if the phone version is at least a certain version.
#
# Parameters
# @version array of minimum phone version '1.3.1.' for each phone type ('1'=>'1.3.1')
# @type if 0 then function takes care of the error messages
# if 1 then the result of the test is sent back, no display
# @header info header if you want to test a different phone (optional)
#
# Phone types
# 1=9112i,9133i
# 2=480i,480i Cordless
# 3=6730i,6731i,6751i,6753i,9143i,6863i,6865i
# 4=6755i,6757i,6757iCT,9480i,9480iCT,6735i,6737i,6867i,6869i,6873i
# 5=6739i, Aastra8000i
#
# Returns
# 0 everything is fine
# 1 Not an Aastra phone
# 2 Wrong firmware version
#
# Example
# Aastra_test_phone_versions(array('1'=>'1.4.2.','2'=>'1.4.2.','3'=>'2.5.3.','4'=>'2.5.3.','5'=>'3.0.1.'),'0');
###################################################################################################
function Aastra_test_phone_versions($versions,$type,$header=NULL)
{
# Start with the HTTP header
if(!$header) $header=Aastra_decode_HTTP_header();
# Retrieve phone type and requested version
$model_type=Aastra_phone_type($header);
# Perform the check
if(($versions[$model_type]) or ($model_type=='0')) return(Aastra_test_phone_version($versions[$model_type],$type,$header));
else
{
switch($model_type)
{
case '1':
$models=array('Aastra9112i','Aastra9133i');
break;
case '2':
$models=array('Aastra480i','Aastra480i Cordless');
break;
case '3':
$models=array('Aastra6730i','Aastra6731i','Aastra51i','Aastra53i','Aastra6863i','Aastra6865i');
break;
case '4':
$models=array('Aastra55i','Aastra57iCTi','Aastra9480i','Aastra9480iCT','Aastra6735i','Aastra6737i','Aastra6867i','Aastra6869i','Aastra6873i','Aastra6920','Aastra6930','Aastra6940','Mitel6920','Mitel6930','Mitel6940');
break;
case '5':
$models=array('Aastra6739i','Aastra8000i');
break;
}
return(Aastra_test_phone_model($models,False,$type));
}
}
###################################################################################################
# Aastra_test_phone_model(models,check,type)
#
# This function checks if the current phone is part of the list of supported phones for this
# application.
#
# Parameters
# @models array with the list of supported or not supported phones
# @check boolean that indicates if True or False is expected
# @type if 0 then function takes care of the error messages
# if 1 then the result of the test is displayed
#
# Returns
# Boolean
#
# Example
# Aastra_test_phone_model(array('Aastra55i','Aastra57i'),True,0)
# True if the phone is an Aastra55i or an Aastra57i
###################################################################################################
function Aastra_test_phone_model($models,$check,$type)
{
Global $TEST;
# Debug mode
if($TEST) return True;
# Get phone characteristics
$header=Aastra_decode_HTTP_header();
if(in_array($header['model'],$models)==$check) return True;
else {
if($type==0) {
$output = "\n";
$output .= "Phone not supported\n";
$output .= "This XML application is not supported by your phone.\n";
$output .= "\n";
header('Content-Type: text/xml');
header('Content-Length: '.strlen($output));
echo $output;
exit;
}
return False;
}
}
###################################################################################################
# Aastra_is_wrap_title_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_wrap_title_supported($header=NULL)
{
# True by default
$return=True;
# Get header info if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Test the model
switch($header['model']) {
case 'Aastra9112i':
case 'Aastra9133i':
case 'Aastra480i':
case 'Aastra480i Cordless':
$return=False;
break;
}
# Return Result
return($return);
}
###################################################################################################
# Aastra_is_icon_menu_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_icon_menu_supported($header=NULL)
{
# True by default
$return=False;
# Get header info if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Test the model
switch($header['model']) {
case 'Aastra8000i':
$return=True;
break;
}
# Return Result
return($return);
}
###################################################################################################
# Aastra_is_top_title_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_top_title_supported($header=NULL)
{
# False by default
$return=False;
# Get header info if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Test the model
switch($header['model']) {
case 'Aastra8000i':
case 'Aastra6867i':
case 'Aastra6869i':
case 'Aastra6873i':
case 'Aastra6920':
case 'Aastra6930':
case 'Aastra6940':
case 'Mitel6920':
case 'Mitel6930':
case 'Mitel6940':
$return=True;
break;
case 'Aastra6739i':
if(Aastra_test_phone_version('3.3.1.',1,$header)==0) $return=True;
break;
}
# Return Result
return($return);
}
###################################################################################################
# Aastra_is_style_textmenu_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_style_textmenu_supported($header=NULL)
{
# True by default
$return=True;
# Get header info
if(!$header) $header=Aastra_decode_HTTP_header();
# Test model/version
switch($header['model']) {
case 'Aastra9112i':
case 'Aastra9133i':
case 'Aastra480i':
case 'Aastra480i Cordless':
if(Aastra_test_phone_version('1.4.2.',1,$header)!=0) $return=False;
else $return=True;
break;
case 'Aastra6867i':
case 'Aastra6869i':
case 'Aastra6873i':
case 'Aastra6920':
case 'Aastra6930':
case 'Aastra6940':
case 'Mitel6920':
case 'Mitel6930':
case 'Mitel6940':
case 'Aastra6739i':
case 'Aastra8000i':
$return=False;
break;
}
# Return Result
return($return);
}
###################################################################################################
# Aastra_is_formattedtextscreen_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_formattedtextscreen_supported($header=NULL)
{
# True by default
$return=True;
# Get header info if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Test model/version
switch($header['model']) {
case 'Aastra9112i':
case 'Aastra9133i':
case 'Aastra480i':
case 'Aastra480i Cordless':
$return=False;
break;
case 'Aastra6739i':
if(Aastra_test_phone_version('3.0.1.',1,$header)!=0) $return=False;
break;
}
# Return result
return($return);
}
###################################################################################################
# Aastra_is_multipleinputfields_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_multipleinputfields_supported($header=NULL)
{
# False by default
$return=False;
# Get header info if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Test model/version
switch($header['model']) {
case 'Aastra55i':
case 'Aastra57i':
case 'Aastra57iCT':
case 'Aastra9480i':
case 'Aastra9480iCT':
if(Aastra_test_phone_version('2.0.2.',1,$header)==0) $return=True;
break;
case 'Aastra6735i':
case 'Aastra6737i':
case 'Aastra6867i':
case 'Aastra6869i':
case 'Aastra6873i':
case 'Aastra6920':
case 'Aastra6930':
case 'Aastra6940':
case 'Mitel6920':
case 'Mitel6930':
case 'Mitel6940':
$return=True;
break;
case 'Aastra6739i':
if(Aastra_test_phone_version('3.0.1.',1,$header)==0) $return=True;
break;
case 'Aastra8000i':
$return=True;
break;
}
# Return result
return($return);
}
###################################################################################################
# Aastra_is_icons_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_icons_supported($header=NULL)
{
# False by default
$return=False;
# Get header info if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Test Model/version
switch($header['model']) {
case 'Aastra55i':
case 'Aastra57i':
case 'Aastra57iCT':
case 'Aastra9480i':
case 'Aastra9480iCT':
if(Aastra_test_phone_version('2.0.2.',1,$header)==0) $return=True;
break;
case 'Aastra6735i':
case 'Aastra6737i':
case 'Aastra6867i':
case 'Aastra6869i':
case 'Aastra6873i':
case 'Aastra6920':
case 'Aastra6930':
case 'Aastra6940':
case 'Mitel6920':
case 'Mitel6930':
case 'Mitel6940':
$return=True;
break;
case 'Aastra6739i':
if(Aastra_test_phone_version('3.2.0.',1,$header)==0) $return=True;
break;
case 'Aastra8000i':
$return=True;
break;
}
# Return result
return($return);
}
###################################################################################################
# Aastra_is_dot_icons_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_dot_icons_supported($header=NULL)
{
# False by default
$return=False;
# Get header info if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Test Model/version
switch($header['model']) {
case 'Aastra55i':
case 'Aastra57i':
case 'Aastra57iCT':
case 'Aastra9480i':
case 'Aastra9480iCT':
if(Aastra_test_phone_version('2.0.2.',1,$header)==0) $return=True;
break;
case 'Aastra6735i':
case 'Aastra6737i':
$return=True;
break;
}
# Return result
return($return);
}
###################################################################################################
# Aastra_is_graphic_icons_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_graphic_icons_supported($header=NULL)
{
# False by default
$return=False;
# Get header info if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Test Model/version
switch($header['model']) {
case 'Aastra6867i':
case 'Aastra6869i':
case 'Aastra6873i':
case 'Aastra6920':
case 'Aastra6930':
case 'Aastra6940':
case 'Mitel6920':
case 'Mitel6930':
case 'Mitel6940':
$return=True;
break;
case 'Aastra6739i':
if(Aastra_test_phone_version('3.2.0.',1,$header)==0) $return=True;
break;
case 'Aastra8000i':
$return=True;
break;
}
# Return result
return($return);
}
###################################################################################################
# Aastra_is_pixmap_graphics_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_pixmap_graphics_supported($header=NULL)
{
# False by default
$return=False;
# Get header info if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Test Model/Version
switch($header['model']) {
case 'Aastra55i':
case 'Aastra57i':
case 'Aastra57iCT':
if(Aastra_test_phone_version('2.2.0.',1,$header)==0) $return=True;
break;
case 'Aastra6735i':
case 'Aastra6737i':
$return=True;
break;
case 'Aastra8000i':
$return=True;
break;
}
# Return result
return($return);
}
###################################################################################################
# Aastra_is_png_graphics_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_png_graphics_supported($header=NULL)
{
# False by default
$return=False;
# Get header info if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Test Model/Version
switch($header['model']) {
case 'Aastra6739i':
if(Aastra_test_phone_version('3.2.0.',1,$header)==0) $return=True;
break;
case 'Aastra6867i':
case 'Aastra6869i':
case 'Aastra6873i':
case 'Aastra6920':
case 'Aastra6930':
case 'Aastra6940':
case 'Mitel6920':
case 'Mitel6930':
case 'Mitel6940':
case 'Aastra8000i':
$return=True;
break;
}
# Return result
return($return);
}
###################################################################################################
# Aastra_is_jpeg_graphics_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_jpeg_graphics_supported($header=NULL)
{
# False by default
$return=False;
# Get header info if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Test Model/Version
switch($header['model']) {
case 'Aastra6739i':
if(Aastra_test_phone_version('3.2.1.',1,$header)==0) $return=True;
break;
case 'Aastra8000i':
$return=True;
break;
}
# Return result
return($return);
}
###################################################################################################
# Aastra_is_status_uri_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_status_uri_supported($header=NULL)
{
# False by default
$return=False;
# Get header info if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Test Model/Version
switch($header['model']) {
case 'Aastra6739i':
if(Aastra_test_phone_version('3.2.1.',1,$header)==0) $return=True;
break;
case 'Aastra8000i':
$return=True;
break;
}
# Return result
return($return);
}
###################################################################################################
# Aastra_is_fastreboot_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_fastreboot_supported($header=NULL)
{
# False by default
$return=False;
# Test version
if(Aastra_test_phone_version('2.0.2.',1,$header)==0) $return=True;
# Return result
return($return);
}
###################################################################################################
# Aastra_is_ledcontrol_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_ledcontrol_supported($header=NULL)
{
# False by default
$return=False;
# Get header info if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Version OK?
if(Aastra_test_phone_version('2.0.2.',1,$header)==0) {
# Test model
switch($header['model']) {
case 'Aastra51i':
case 'Aastra9480i':
case 'Aastra9480iCT':
break;
default:
$return=True;
break;
}
}
# Return result
return($return);
}
###################################################################################################
# Aastra_is_configuration_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_configuration_supported($header=NULL)
{
# False by default
$return=False;
# Check version
if(Aastra_test_phone_version('2.0.1.',1,$header)==0) $return=True;
# Return result
return($return);
}
###################################################################################################
# Aastra_is_lockin_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_lockin_supported($header=NULL)
{
# False by default
$return=False;
# Check version
if(Aastra_test_phone_version('2.0.1.',1,$header)==0) $return=True;
# Return result
return($return);
}
###################################################################################################
# Aastra_is_emptyphoneexecute_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_emptyphoneexecute_supported($header=NULL)
{
# False by default
$return=False;
# Check version
if(Aastra_test_phone_version('2.0.1.',1,$header)==0) $return=True;
# Return result
return($return);
}
###################################################################################################
# Aastra_is_triggerdestroyonexit_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_triggerdestroyonexit_supported($header=NULL)
{
# False by default
$return=False;
# Check version
if(Aastra_test_phone_version('2.0.1.',1,$header)==0) $return=True;
# Return result
return($return);
}
###################################################################################################
# Aastra_is_softkeys_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_softkeys_supported($header=NULL)
{
# False by default
$return=False;
# Get header info if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Check Model/Version
switch($header['model']) {
case 'Aastra480i':
case 'Aastra480i Cordless':
case 'Aastra55i':
case 'Aastra57i':
case 'Aastra57iCT':
case 'Aastra9480i':
case 'Aastra9480iCT':
case 'Aastra6735i':
case 'Aastra6737i':
case 'Aastra6739i':
case 'Aastra6867i':
case 'Aastra6869i':
case 'Aastra6873i':
case 'Aastra6920':
case 'Aastra6930':
case 'Aastra6940':
case 'Mitel6920':
case 'Mitel6930':
case 'Mitel6940':
case 'Aastra8000i':
$return=True;
break;
}
# Return result
return($return);
}
###################################################################################################
# Aastra_is_graphical_display(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_graphical_display($header=NULL)
{
# False by default
$return=False;
# Get header info if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Check Model/Version
switch($header['model']) {
case 'Aastra6739i':
case 'Aastra6867i':
case 'Aastra6869i':
case 'Aastra6873i':
case 'Aastra6920':
case 'Aastra6930':
case 'Aastra6940':
case 'Mitel6920':
case 'Mitel6930':
case 'Mitel6940':
case 'Aastra8000i':
$return=True;
break;
}
# Return result
return($return);
}
###################################################################################################
# Aastra_number_physical_softkeys_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Number of physical softkeys 4, 6 or 10
###################################################################################################
function Aastra_number_physical_softkeys_supported($header=NULL)
{
# No by default
$return=0;
# Get header info if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Check Model/Version
switch($header['model']) {
case 'Aastra6867i':
case 'Aastra6920':
case 'Mitel6920':
$return=4;
break;
case 'Aastra6869i':
case 'Aastra6930':
case 'Mitel6930':
$return=5;
break;
case 'Aastra480i':
case 'Aastra480i Cordless':
case 'Aastra55i':
case 'Aastra57i':
case 'Aastra57iCT':
case 'Aastra9480i':
case 'Aastra9480iCT':
case 'Aastra6735i':
case 'Aastra6737i':
case 'Aastra6873i':
case 'Aastra6940':
case 'Mitel6940':
$return=6;
break;
case 'Aastra6739i':
case 'Aastra8000i':
$return=10;
break;
}
# Return result
return($return);
}
###################################################################################################
# Aastra_number_softkeys_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Number of softkeys 6 or 10
###################################################################################################
function Aastra_number_softkeys_supported($header=NULL)
{
# No by default
$return=0;
# Get header info if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Check Model/Version
switch($header['model']) {
case 'Aastra480i':
case 'Aastra480i Cordless':
case 'Aastra55i':
case 'Aastra57i':
case 'Aastra57iCT':
case 'Aastra9480i':
case 'Aastra9480iCT':
case 'Aastra6735i':
case 'Aastra6737i':
case 'Aastra6867i':
case 'Aastra6920':
case 'Mitel6920':
$return=6;
break;
case 'Aastra6869i':
case 'Aastra6930':
case 'Mitel6930':
$return=8;
break;
case 'Aastra6739i':
case 'Aastra8000i':
case 'Aastra6873i':
case 'Aastra6940':
case 'Mitel6940':
$return=10;
break;
}
# Return result
return($return);
}
###################################################################################################
# Aastra_is_doneaction_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_doneAction_supported($header=NULL)
{
# False by default
$return=False;
# Check version
if(Aastra_test_phone_version('2.1.0.',1,$header)==0) $return=True;
# Return result
return($return);
}
###################################################################################################
# Aastra_is_Answer_key_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_Answer_key_supported($header=NULL)
{
# False by default
$return=False;
# Check version
if(Aastra_test_phone_version('2.1.0.',1,$header)==0) $return=True;
# Return result
return($return);
}
###################################################################################################
# Aastra_is_Refresh_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_Refresh_supported($header=NULL)
{
# False by default
$return=False;
# Get header info if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Depending on the phone
switch($header['model']) {
case 'Aastra6739i':
if(Aastra_test_phone_version('3.2.0.',1,$header)==0) $return=True;
break;
case 'Aastra8000i':
$return=True;
break;
default:
if(Aastra_test_phone_version('2.0.2.',1,$header)==0) $return=True;
break;
}
# Return result
return($return);
}
###################################################################################################
# Aastra_is_textmenu_wrapitem_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_textmenu_wrapitem_supported($header=NULL)
{
# False by default
$return=False;
# Check version
if(Aastra_test_phone_version('2.2.0.',1,$header)==0) $return=True;
# Return result
return($return);
}
###################################################################################################
# Aastra_is_local_reset_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_local_reset_supported($header=NULL)
{
# False by default
$return=False;
# Check version
if(Aastra_test_phone_version('2.3.0.',1,$header)==0) $return=True;
# Return result
return($return);
}
###################################################################################################
# Aastra_is_allow_DTMF_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_allow_DTMF_supported($header=NULL)
{
# False by default
$return=False;
# Check version
if(($header['model']!='Aastra8000i') and (Aastra_test_phone_version('2.3.0.',1,$header)==0)) $return=True;
# Return result
return($return);
}
###################################################################################################
# Aastra_is_play_wav_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_play_wav_supported($header=NULL)
{
# False by default
$return=False;
# Check version
if(Aastra_test_phone_version('2.3.0.',1,$header)==0) $return=True;
# Return result
return($return);
}
###################################################################################################
# Aastra_is_sip_notify_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_sip_notify_supported($header=NULL)
{
# False by default
$return=False;
# Check version
if(($header['model']!='Aastra8000i') and (Aastra_test_phone_version('2.3.0.',1,$header)==0)) $return=True;
# Return result
return($return);
}
###################################################################################################
# Aastra_is_keypress_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_keypress_supported($header=NULL)
{
# False by default
$return=False;
# Check version
if(($header['model']!='Aastra8000i') and (Aastra_test_phone_version('2.3.0.',1,$header)==0)) $return=True;
# Return result
return($return);
}
###################################################################################################
# Aastra_is_dialkey_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_dialkey_supported($header=NULL)
{
# False by default
$return=False;
# Get header info if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Check model/version
switch($header['model']) {
case 'Aastra480i':
case 'Aastra480i Cordless':
case 'Aastra55i':
case 'Aastra57i':
case 'Aastra57iCT':
case 'Aastra9480i':
case 'Aastra9480iCT':
case 'Aastra6735i':
case 'Aastra6737i':
case 'Aastra6867i':
case 'Aastra6869i':
case 'Aastra6873i':
case 'Aastra6920':
case 'Aastra6930':
case 'Aastra6940':
case 'Mitel6920':
case 'Mitel6930':
case 'Mitel6940':
case 'Aastra6739i':
$return=True;
break;
}
# Return result
return($return);
}
###################################################################################################
# Aastra_is_dial2key_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_dial2key_supported($header=NULL)
{
# False by default
$return=False;
# Get info header if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Check model/version
switch($header['model']) {
case 'Aastra55i':
case 'Aastra57i':
case 'Aastra57iCT':
case 'Aastra9480i':
case 'Aastra9480iCT':
case 'Aastra6735i':
case 'Aastra6737i':
case 'Aastra6867i':
case 'Aastra6869i':
case 'Aastra6873i':
case 'Aastra6920':
case 'Aastra6930':
case 'Aastra6940':
case 'Mitel6920':
case 'Mitel6930':
case 'Mitel6940':
case 'Aastra6739i':
$return=True;
break;
}
# Return result
return($return);
}
###################################################################################################
# Aastra_is_dialuri_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_dialuri_supported($header=NULL)
{
# False by default
$return=False;
# Check version
if(($header['model']!='Aastra8000i') and (Aastra_test_phone_version('2.0.1.',1,$header)==0)) $return=True;
# Return result
return($return);
}
###################################################################################################
# Aastra_is_timeout_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_timeout_supported($header=NULL)
{
# False by default
$return=False;
# Check version
if(Aastra_test_phone_version('2.0.1.',1,$header)==0) $return=True;
# Return result
return($return);
}
###################################################################################################
# Aastra_is_datetime_input_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_datetime_input_supported($header=NULL)
{
# False by default
$return=False;
# Check version
if(Aastra_test_phone_version('2.0.1.',1,$header)==0) $return=True;
# Return result
return($return);
}
###################################################################################################
# Aastra_is_dynamic_sip_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_dynamic_sip_supported($header=NULL)
{
# False by default
$return=False;
# Check version
if($header['model']!='Aastra8000i') {
if(Aastra_test_phone_version('2.5.0.',1,$header)==0) $return=True;
}
# Return result
return($return);
}
###################################################################################################
# Aastra_is_lockincall_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_lockincall_supported($header=NULL)
{
# False by default
$return=False;
# Get info header if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# All but the 6739i
if($header['model']!='Aastra6739i') {
if(Aastra_test_phone_version('2.6.0.',1,$header)==0) {
if(Aastra_test_phone_version('3.0.0.',1,$header)!=0) $return=True;
}
}
# Return result
return($return);
}
###################################################################################################
# Aastra_is_actionuriconnected_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_actionuriconnected_supported($header=NULL)
{
# False by default
$return=False;
# Get info header if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# All but the 6739i
if($header['model']!='Aastra6739i') {
if(Aastra_test_phone_version('2.6.0.',1,$header)==0) $return=True;
}
# Return result
return($return);
}
###################################################################################################
# Aastra_is_formattedtextscreen_color_supported(header)
#
# Parameters
# header phone HTTP header (optional)
#
# Returns
# Boolean
###################################################################################################
function Aastra_is_formattedtextscreen_color_supported($header=NULL)
{
# False by default
$return=False;
# Get info header if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Only the 6867i/6869i/6873i/6739i/8000i
if($header['model']=='Aastra6739i') {
if(Aastra_test_phone_version('3.0.1.',1,$header)==0) $return=True;
}
if($header['model']=='Aastra8000i') $return=True;
else if($header['model']=='Aastra6867i') $return=True;
else if($header['model']=='Aastra6869i') $return=True;
else if($header['model']=='Aastra6873i') $return=True;
else if($header['model']=='Aastra6920') $return=True;
else if($header['model']=='Aastra6930') $return=True;
else if($header['model']=='Aastra6940') $return=True;
else if($header['model']=='Mitel6920') $return=True;
else if($header['model']=='Mitel6930') $return=True;
else if($header['model']=='Mitel6940') $return=True;
# Return result
return($return);
}
###################################################################################################
# Aastra_size_formattedtextscreen()
#
# Returns the number of lines available for formatted text screen
#
# Parameters
# None
#
# Returns
# Size of the FormattedTextScreen
###################################################################################################
function Aastra_size_formattedtextscreen($header=NULL)
{
# No size by default
$return=0;
# Get info header if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Depending on model
switch($header['model']) {
case 'Aastra51i':
case 'Aastra53i':
case 'Aastra6730i':
case 'Aastra6731i':
case 'Aastra9143i':
case 'Aastra6863i':
case 'Aastra6865i':
$return=2;
break;
case 'Aastra55i':
case 'Aastra9480i':
case 'Aastra9480iCT':
case 'Aastra57i':
case 'Aastra57iCT':
case 'Aastra6735i':
case 'Aastra6737i':
$return=5;
break;
case 'Aastra6867i':
case 'Aastra6869i':
case 'Aastra6873i':
case 'Aastra6920':
case 'Aastra6930':
case 'Aastra6940':
case 'Mitel6920':
case 'Mitel6930':
case 'Mitel6940':
case 'Aastra6739i':
case 'Aastra8000i':
$return=14;
break;
}
return($return);
}
###################################################################################################
# Aastra_size_display_line()
#
# Returns the number of characters per line on the display
#
# Parameters
# None
#
# Returns
# Returns the number of characters per line on the display
###################################################################################################
function Aastra_size_display_line($header=NULL)
{
$return=0;
# Get info header if needed
if(!$header) $header=Aastra_decode_HTTP_header();
switch($header['model']) {
case 'Aastra51i':
case 'Aastra53i':
case 'Aastra9112i':
case 'Aastra9133i':
case 'Aastra9143i':
case 'Aastra6730i':
case 'Aastra6731i':
case 'Aastra6863i':
case 'Aastra6865i':
$return='16';
break;
case 'Aastra480i':
case 'Aastra480i Cordless':
case 'Aastra9480i':
case 'Aastra9480iCT':
$return='21';
break;
case 'Aastra55i':
case 'Aastra57i':
case 'Aastra57iCT':
case 'Aastra6735i':
case 'Aastra6737i':
$return='24';
break;
case 'Aastra6867i':
case 'Aastra6869i':
case 'Aastra6873i':
case 'Aastra6920':
case 'Aastra6930':
case 'Aastra6940':
case 'Mitel6920':
case 'Mitel6930':
case 'Mitel6940':
case 'Aastra6739i':
case 'Aastra8000i':
$return='32';
break;
default:
$return='24';
break;
}
return($return);
}
###################################################################################################
# Aastra_size_graphical_display(mode)
#
# Returns the number of characters per line on the display
#
# Parameters
# Mode ImageScreen/ImageMenu mode regular/extended/fullscreen
#
# Returns
# Returns an array with width and height
###################################################################################################
function Aastra_size_graphical_display($mode='regular',$header=NULL)
{
$return=0;
# Get info header if needed
if(!$header) $header=Aastra_decode_HTTP_header();
switch($header['model']) {
case 'Aastra6867i':
case 'Aastra6920':
case 'Mitel6920':
if($mode=='regular') {
$array=array( 'width'=>'320','height'=>'184');
} else if($mode=='extended') {
$array=array( 'width'=>'320','height'=>'184');
} else if($mode=='fullscreen') {
$array=array( 'width'=>'320','height'=>'240');
}
break;
case 'Aastra6869i':
case 'Aastra6930':
case 'Mitel6930':
if($mode=='regular') {
$array=array( 'width'=>'480','height'=>'204');
} else if($mode=='extended') {
$array=array( 'width'=>'480','height'=>'204');
} else if($mode=='fullscreen') {
$array=array( 'width'=>'480','height'=>'272');
}
break;
case 'Aastra6873i':
case 'Aastra6940':
case 'Mitel6940':
if($mode=='regular') {
$array=array( 'width'=>'800','height'=>'372');
} else if($mode=='extended') {
$array=array( 'width'=>'800','height'=>'372');
} else if($mode=='fullscreen') {
$array=array( 'width'=>'800','height'=>'480');
}
break;
case 'Aastra6739i':
if($mode=='regular') {
$array=array( 'width'=>'380','height'=>'340');
} else if($mode=='extended') {
$array=array( 'width'=>'640','height'=>'340');
} else if($mode=='fullscreen') {
$array=array( 'width'=>'640','height'=>'480');
}
break;
}
return($array);
}
###################################################################################################
# Aastra_max_items_textmenu()
#
# Returns the maximum number of items for a TextMenu object
#
# Parameters
# None
#
# Returns
# 15 or 30
###################################################################################################
function Aastra_max_items_textmenu($header=NULL)
{
$return=15;
if(Aastra_test_phone_version('2.2.0.',1,$header)==0) $return=30;
return($return);
}
###################################################################################################
# Aastra_get_custom_icon(icon_name)
#
# Returns hex representation of icon matching the given name. If no icon found, empty icon is returned.
#
# Parameters
# @iconName Icon name. List of icons: see below
#
# Returns
# Hex representation of icon matching the given name
# Empty icon if icon not found
###################################################################################################
function Aastra_get_custom_icon($icon_name)
{
# Default icon
$return = '000000000000000000000000';
if($icon_name == 'BoxChecked') return '0000FEC6AA92AAC6FE000000';
else if($icon_name == 'BoxUnchecked') return '0000FE8282828282FE000000';
else if($icon_name == 'Office') return '000000FEAEFAAEFE00000000';
else if($icon_name == 'Cellphone') return '000000007E565AFE00000000';
else if($icon_name == 'Home') return '000000103E7A3E1000000000';
else if($icon_name == 'ArrowRightBold') return '000038383838FE7C38100000';
else if($icon_name == 'ArrowLeftBold') return '000010387CFE383838380000';
else if($icon_name == 'Bell') return '000000063E7E3E0600000000';
else if($icon_name == 'Phone') return '000000664E5A4E6600000000';
else if($icon_name == 'MessageUnread') return '00FEC6AA928A8A92AAC6FE00';
else if($icon_name == 'MessageRead') return '00FEC6AA924A2A120A060200';
else if($icon_name == 'Keypad') return '000000540054005400000000';
else if($icon_name == 'DND') return '0000007CEEEEEE7C00000000';
else if($icon_name == 'OK') return '0000000804020C30C0000000';
else if($icon_name == 'Available') return '000000664E5A4E6600000000';
else if($icon_name == 'Offhook') return '00000002060E96F200000000';
else if($icon_name == 'Speaker') return '0038387CFE00281044380000';
else if($icon_name == 'Muted') return '0038387CFE00386C6C6C3800';
return($return);
}
###################################################################################################
# Aastra_push2phone(server,phone,data)
#
# Push an XML object to the phone.
#
# Parameters
# @server IP address or name of the server (must be authorized on the phone)
# @phone IP address or name of the phone to send the object to
# @data XML object to send
#
# Returns
# Boolean
###################################################################################################
function Aastra_push2phone($server,$phone,$data)
{
# KO by default
$return=False;
# Prepare the message
$xml = 'xml='.$data;
$post = "POST / HTTP/1.1\r\n";
$post .= "Host: $phone\r\n";
$post .= "Referer: $server\r\n";
$post .= "Connection: Keep-Alive\r\n";
$post .= "Content-Type: text/xml\r\n";
$post .= 'Content-Length: '.strlen($xml)."\r\n\r\n";
$fp = @fsockopen($phone,80,$errno, $errstr, 5);
if($fp) {
fputs($fp, $post.$xml);
fclose($fp);
$return=True;
}
# Return result
return($return);
}
###################################################################################################
# Aastra_getvar_safe(var_name,default,method)
#
# This function helps protect against injection style attacks by formatting the variable value.
#
# Parameters
# @var_name name of the submitted variable.
# @default default value returned if the variable was not submitted.
# @method setting the array to look into. This can be set to GET (default), POST, REQUEST,
# SERVER, etc.
#
# Returns
# Boolean
###################################################################################################
function Aastra_getvar_safe($var_name,$default='',$method='GET')
{
eval('$return = (isset($_'.$method.'["'.$var_name.'"])) ? htmlentities(html_entity_decode(stripslashes((trim($_'.$method.'["'.$var_name.'"]))),ENT_QUOTES),ENT_QUOTES) : $default;');
return $return;
}
###################################################################################################
# Aastra_getphone_fingerprint()
#
# This function returns the phone fingerprint which is a md5 hash of its model, MAC address and
# IP address.
#
# Parameters
# None
#
# Returns
# string MD5 signature
###################################################################################################
function Aastra_getphone_fingerprint()
{
# Retrieve phone information
$header=Aastra_decode_HTTP_header();
# Return signature
return(md5($header['model'].$header['mac'].$header['ip']));
}
###################################################################################################
# Aastra_phone_type()
#
# This function returns the type of phone for an XML perspective.
#
# Parameters
# None
#
# Return
# Integer 1=9112i,9133i
# 2=480i,480i Cordless
# 3=6730i,6731i,6751i,6753i,9143i
# 4=6755i,6757i,6757iCT
# 5=6739i,VideoPhone
###################################################################################################
function Aastra_phone_type($header=NULL)
{
# No type by default
$return='0';
# Get header info if needed
if(!$header) $header=Aastra_decode_HTTP_header();
# Test model/version
switch($header['model']) {
case 'Aastra9112i':
case 'Aastra9133ii':
$return='1';
break;
case 'Aastra480i':
case 'Aastra480i Cordless':
$return='2';
break;
case 'Aastra6730i':
case 'Aastra6731i':
case 'Aastra51i':
case 'Aastra53i':
case 'Aastra9143i':
case 'Aastra6863i':
case 'Aastra6865i':
$return='3';
break;
case 'Aastra55i':
case 'Aastra57i':
case 'Aastra57iCT':
case 'Aastra9480i':
case 'Aastra9480iCT':
case 'Aastra6735i':
case 'Aastra6737i':
case 'Aastra6867i':
case 'Aastra6869i':
case 'Aastra6920':
case 'Aastra6930':
case 'Mitel6920':
case 'Mitel6930':
$return='4';
break;
case 'Aastra6739i':
case 'Aastra8000i':
case 'Aastra6873i':
case 'Aastra6940':
case 'Mitel6940':
$return='5';
break;
}
# Return result
return($return);
}
?>