protected function _getDefaultFeatures()
{
$server = array();
// gets info from user agent chain
$uaExtract = $this->extractFromUserAgent($this->getUserAgent());
if (is_array($uaExtract)) {
foreach ($uaExtract as $key => $info) {
$this->setFeature($key, $info, 'product_info');
}
}
if (isset($uaExtract['browser_name'])) {
$this->_browser = $uaExtract['browser_name'];
}
if (isset($uaExtract['browser_version'])) {
$this->_browserVersion = $uaExtract['browser_version'];
}
if (isset($uaExtract['device_os'])) {
$this->device_os = $uaExtract['device_os_name'];
}
/* browser & device info */
$this->setFeature('is_wireless_device', false, 'product_info');
$this->setFeature('is_mobile', false, 'product_info');
$this->setFeature('is_desktop', false, 'product_info');
$this->setFeature('is_tablet', false, 'product_info');
$this->setFeature('is_bot', false, 'product_info');
$this->setFeature('is_email', false, 'product_info');
$this->setFeature('is_text', false, 'product_info');
$this->setFeature('device_claims_web_support', false, 'product_info');
$this->setFeature('is_' . strtolower($this->getType()), true, 'product_info');
/* sets the browser name */
if (isset($this->list) && empty($this->_browser)) {
$lowerUserAgent = strtolower($this->getUserAgent());
foreach ($this->list as $browser_signature) {
if (strpos($lowerUserAgent, $browser_signature) !== false) {
$this->_browser = strtolower($browser_signature);
$this->setFeature('browser_name', $this->_browser, 'product_info');
}
}
}
/* sets the client IP */
if (isset($this->_server['remote_addr'])) {
$this->setFeature('client_ip', $this->_server['remote_addr'], 'product_info');
} elseif (isset($this->_server['http_x_forwarded_for'])) {
$this->setFeature('client_ip', $this->_server['http_x_forwarded_for'], 'product_info');
} elseif (isset($this->_server['http_client_ip'])) {
$this->setFeature('client_ip', $this->_server['http_client_ip'], 'product_info');
}
/* sets the server infos */
if (isset($this->_server['server_software'])) {
if (strpos($this->_server['server_software'], 'Apache') !== false || strpos($this->_server['server_software'], 'LiteSpeed') !== false) {
$server['version'] = 1;
if (strpos($this->_server['server_software'], 'Apache/2') !== false) {
$server['version'] = 2;
}
$server['server'] = 'apache';
}
if (strpos($this->_server['server_software'], 'Microsoft-IIS') !== false) {
$server['server'] = 'iis';
}
if (strpos($this->_server['server_software'], 'Unix') !== false) {
$server['os'] = 'unix';
if (isset($_ENV['MACHTYPE'])) {
if (strpos($_ENV['MACHTYPE'], 'linux') !== false) {
$server['os'] = 'linux';
}
}
} elseif (strpos($this->_server['server_software'], 'Win') !== false) {
$server['os'] = 'windows';
}
if (preg_match('/Apache\\/([0-9\\.]*)/', $this->_server['server_software'], $arr)) {
if ($arr[1]) {
$server['version'] = $arr[1];
$server['server'] = 'apache';
}
}
}
$this->setFeature('php_version', phpversion(), 'server_info');
if (isset($server['server'])) {
$this->setFeature('server_os', $server['server'], 'server_info');
}
if (isset($server['version'])) {
$this->setFeature('server_os_version', $server['version'], 'server_info');
}
if (isset($this->_server['http_accept'])) {
$this->setFeature('server_http_accept', $this->_server['http_accept'], 'server_info');
}
if (isset($this->_server['http_accept_language'])) {
$this->setFeature('server_http_accept_language', $this->_server['http_accept_language'], 'server_info');
}
if (isset($this->_server['server_addr'])) {
$this->setFeature('server_ip', $this->_server['server_addr'], 'server_info');
}
if (isset($this->_server['server_name'])) {
$this->setFeature('server_name', $this->_server['server_name'], 'server_info');
}
}