TOP

Mobi_Mtld_DA_Api

Used to load the recognition tree and perform lookups of all properties, or individual properties. Note: Due to limitations in the level of recursion allowed, versions of PHP older than 5.2.3 will be unable to load the JSON data file. i.e. DeviceAtlas must be run with PHP version 5.2.3 or later. Typical usage is as follows:
 $tree = Mobi_Mtld_DA_Api::getTreeFromFile("json/sample.json");
 $props = Mobi_Mtld_DA_Api::getProperties($tree, "Nokia6680...");
 
Note that you should normally use the user-agent that was received in the device's HTTP request. In a PHP environment, you would do this as follows:
 $ua = $_SERVER['HTTP_USER_AGENT'];
 $displayWidth = Mobi_Mtld_DA_Api::getPropertyAsInteger($tree, $ua, "displayWidth");
 
(Also note the use of the strongly typed property accessor) Third-party Browsers In some contexts, the user-agent you want to recognise may have been provided in a different header. Opera's mobile browser, for example, makes requests via an HTTP proxy, which rewrites the headers. in that case, the original device's user-agent is in the HTTP_X_OPERAMINI_PHONE_UA header, and the following code could be used:
 $opera_header = "HTTP_X_OPERAMINI_PHONE_UA";
 if (array_key_exists($opera_header, $_SERVER) {
   $ua = $_SERVER[$opera_header];
 } else {
   $ua = $_SERVER['HTTP_USER_AGENT'];
 }
 $displayWidth = Mobi_Mtld_DA_Api::getPropertyAsInteger($tree, $ua, "displayWidth");
 
Client side properties Client side properties can be collected and merged into the results by using the DeviceAtlas Javascript detection file. The results from the client side are sent to the server inside a cookie. The contents of this cookie can be passed to the DeviceAtlas getProperty and getProperties methods. The client side properties over-ride any data file properties and also serve as an input into additional logic to determine other properties such as the iPhone models that are otherwise not detectable. The following code shows how this can be done:
 $ua = $_SERVER['HTTP_USER_AGENT'];

 // Get the cookie containing the client side properties
 $cookie_contents = null;
 if (isset($_COOKIE['DAPROPS'])){
   $cookie_contents = $_COOKIE['DAPROPS'];
 }

 $props = Mobi_Mtld_DA_Api::getProperties($tree, $ua, $cookie_contents);
 
Package
Mobi\Mtld\DA
Version
2.0
Author
DeviceAtlas Limited
Deprecated
This API is deprecated, it is highly recommended to use the new DeviceApi instead.

Constants

MIN_PHP_VERSION = '5.2.3'

Min PHP version required for this API.

Static Methods

getApiRevision

integer Mobi_Mtld_DA_Api::getApiRevision()

Returns the revision number of this API

Returns

integer
revision

getProperties

array Mobi_Mtld_DA_Api::getProperties(array &$tree, string $userAgent, string | null $cookie)

Returns an array of known properties (as strings) for the user agent = or = Returns an array of known properties merged with properties from the client side JavaScript. The client side JavaScript sets a cookie with collected properties. The contents of this cookie must be passed to this method for it to work. The client properties over-ride any properties discovered from the main JSON data file.

Arguments

    &$tree (array)
    Previously generated tree
    $userAgent (string)
    String from the device's User-Agent header
    $cookie (string | null)
    The contents of the cookie containing the client side properties

Returns

array
properties Property name => Property value

Throws

getPropertiesAsTyped

array Mobi_Mtld_DA_Api::getPropertiesAsTyped(array &$tree, string $userAgent, string | null $cookie)

Returns an array of known properties (as typed) for the user agent = or = Returns an array of known properties merged with properties from the client side JavaScript. The client side JavaScript sets a cookie with collected properties. The contents of this cookie must be passed to this method for it to work. The client properties over-ride any properties discovered from the main JSON data file.

Arguments

    &$tree (array)
    Previously generated tree
    $userAgent (string)
    String from the device's User-Agent header
    $cookie (string | null)
    The contents of the cookie containing the client side properties

Returns

array
properties. Property name => Typed property value

Throws

getProperty

string Mobi_Mtld_DA_Api::getProperty(
    array &$tree,
    string $userAgent,
    string $property,
    string | null $cookie
)

Returns a value for the named property for this user agent

Arguments

    &$tree (array)
    Previously generated tree
    $userAgent (string)
    String from the device's User-Agent header
    $property (string)
    The name of the property to return
    $cookie (string | null)
    The contents of the cookie containing the client side properties

Returns

string
property

Throws

getPropertyAsBoolean

boolean Mobi_Mtld_DA_Api::getPropertyAsBoolean(
    array &$tree,
    string $userAgent,
    string $property,
    string | null $cookie
)

Strongly typed property accessor. Returns a boolean property. (Throws an exception if the property is actually of another type.)

Arguments

    &$tree (array)
    Previously generated tree
    $userAgent (string)
    String from the device's User-Agent header
    $property (string)
    The name of the property to return
    $cookie (string | null)
    The contents of the cookie containing the client side properties

Returns

boolean
property

Throws

getPropertyAsDate

string Mobi_Mtld_DA_Api::getPropertyAsDate(
    array &$tree,
    string $userAgent,
    string $property,
    string | null $cookie
)

Strongly typed property accessor. Returns a date property. (Throws an exception if the property is actually of another type.)

Arguments

    &$tree (array)
    Previously generated tree
    $userAgent (string)
    String from the device's User-Agent header
    $property (string)
    The name of the property to return
    $cookie (string | null)
    The contents of the cookie containing the client side properties

Returns

string
property

Throws

getPropertyAsInteger

integer Mobi_Mtld_DA_Api::getPropertyAsInteger(
    array &$tree,
    string $userAgent,
    string $property,
    string | null $cookie
)

Strongly typed property accessor. Returns an integer property. (Throws an exception if the property is actually of another type.)

Arguments

    &$tree (array)
    Previously generated tree
    $userAgent (string)
    String from the device's User-Agent header
    $property (string)
    The name of the property to return
    $cookie (string | null)
    The contents of the cookie containing the client side properties

Returns

integer
property

Throws

getPropertyAsString

string Mobi_Mtld_DA_Api::getPropertyAsString(
    array &$tree,
    string $userAgent,
    string $property,
    string | null $cookie
)

Strongly typed property accessor. Returns a string property. (Throws an exception if the property is actually of another type.)

Arguments

    &$tree (array)
    Previously generated tree
    $userAgent (string)
    String from the device's User-Agent header
    $property (string)
    The name of the property to return
    $cookie (string | null)
    The contents of the cookie containing the client side properties

Returns

string
property

Throws

getTreeFromFile

array Mobi_Mtld_DA_Api::getTreeFromFile(
    string $filename,
    boolean $includeChangeableUserAgentProperties
)

Returns a tree from a JSON file. Use an absolute path name to be sure of success if the current working directory is not clear. Some properties cannot be known before runtime and can change from user-agent to user-agent. The most common of these are the OS Version and the Browser Version. This API is able to dynamically detect these changing properties but introduces a small overhead to do so. To disable returning these extra properties set includeChangeableUserAgentProperties to false.

Arguments

    $filename (string)
    The location of the file to read in.
    $includeChangeableUserAgentProperties (boolean)

Returns

array
&$tree Previously generated tree

Throws

getTreeFromString

array Mobi_Mtld_DA_Api::getTreeFromString(
    string &$json,
    boolean $includeChangeableUserAgentProperties
)

Returns a loaded JSON tree from a string of JSON data. Some properties cannot be known before runtime and can change from user-agent to user-agent. The most common of these are the OS Version and the Browser Version. This API is able to dynamically detect these changing properties but introduces a small overhead to do so. To disable returning these extra properties set includeChangeableUserAgentProperties to false.

Arguments

    &$json (string)
    The string of json data.
    $includeChangeableUserAgentProperties (boolean)
    Also detect changeable user-agent properties

Returns

array
The loaded JSON tree

Throws

getTreeGeneration

string Mobi_Mtld_DA_Api::getTreeGeneration(array &$tree)

Get the generation date for this tree.

Arguments

    &$tree (array)
    Previously generated tree

Returns

string
The time/date the tree was generated.

getTreeGenerationAsTimestamp

integer Mobi_Mtld_DA_Api::getTreeGenerationAsTimestamp(array &$tree)

Get the generation date for this tree as a UNIX timestamp.

Arguments

    &$tree (array)
    Previously generated tree

Returns

integer
The time/date the tree was generated.

getTreeRevision

integer Mobi_Mtld_DA_Api::getTreeRevision(array &$tree)

Returns the revision number of the tree

Arguments

    &$tree (array)
    Previously generated tree

Returns

integer
revision

listProperties

array Mobi_Mtld_DA_Api::listProperties(array &$tree)

Returns all properties available for all user agents in this tree, with their data type names.

Arguments

    &$tree (array)
    Previously generated tree

Returns

array
properties