protected static function agent()
{
$ua = static::get('httpUserAgent');
$return = new \stdClass();
$return->string = $ua;
$os = 'unknown';
$mobile = false;
$browser = 'other';
$shorty = '';
$version = '';
$engine = '';
// Operating system
foreach (\Config::get('os') as $k => $v) {
if (stripos($ua, $k) !== false) {
$os = $v['os'];
$mobile = $v['mobile'];
break;
}
}
$return->os = $os;
// Browser and version
foreach (\Config::get('browser') as $k => $v) {
if (stripos($ua, $k) !== false) {
$browser = $v['browser'];
$shorty = $v['shorty'];
$version = preg_replace($v['version'], '$1', $ua);
$engine = $v['engine'];
break;
}
}
$versions = explode('.', $version);
$version = $versions[0];
$return->class = $os . ' ' . $browser . ' ' . $engine;
// Add the version number if available
if ($version != '') {
$return->class .= ' ' . $shorty . $version;
}
// Android tablets are not mobile (see #4150 and #5869)
if ($os == 'android' && $engine != 'presto' && stripos($ua, 'mobile') === false) {
$mobile = false;
}
// Mark mobile devices
if ($mobile) {
$return->class .= ' mobile';
}
$return->browser = $browser;
$return->shorty = $shorty;
$return->version = $version;
$return->engine = $engine;
$return->versions = $versions;
$return->mobile = $mobile;
return $return;
}