protected function detect()
{
// Determine system platform and OS version.
if (stripos($this->ua, 'Windows') !== false) {
$this->platform = 'Windows';
$this->os = stripos($this->ua, 'Windows NT') !== false ? substr($this->ua, stripos($this->ua, 'Windows NT'), 14) : 'Windows';
} else {
if (stripos($this->ua, 'Macintosh') !== false) {
$this->platform = 'Macintosh';
if (stripos($this->ua, 'Intel') !== false) {
$this->os = substr($this->ua, stripos($this->ua, 'Intel'));
$this->os = substr($this->os, 0, stripos($this->os, ';'));
} else {
if (stripos($this->ua, 'PPC') !== false) {
$this->os = substr($this->ua, stripos($this->ua, 'PPC'));
$this->os = substr($this->os, 0, stripos($this->os, ';'));
} else {
$this->os = 'Macintosh';
}
}
} else {
if (stripos($this->ua, 'Linux') !== false) {
$this->platform = 'Linux';
if (stripos($this->ua, 'Linux') !== false) {
$this->os = substr($this->ua, stripos($this->ua, 'Linux '));
$this->os = substr($this->os, 0, stripos($this->os, ';'));
} else {
$this->os = 'Linux';
}
} else {
if (stripos($this->ua, 'SunOS') !== false) {
$this->platform = 'SunOS';
if (stripos($this->ua, 'SunOS') !== false) {
$this->os = substr($this->ua, stripos($this->ua, 'SunOS '));
$this->os = substr($this->os, 0, stripos($this->os, ';'));
} else {
$this->os = 'SunOS';
}
} else {
if (stripos($this->ua, 'OpenBSD') !== false) {
$this->platform = 'OpenBSD';
if (stripos($this->ua, 'OpenBSD') !== false) {
$this->os = substr($this->ua, stripos($this->ua, 'OpenBSD '));
$this->os = substr($this->os, 0, stripos($this->os, ';'));
} else {
$this->os = 'OpenBSD';
}
} else {
if (stripos($this->ua, 'NetBSD') !== false) {
$this->platform = 'NetBSD';
if (stripos($this->ua, 'NetBSD') !== false) {
$this->os = substr($this->ua, stripos($this->ua, 'NetBSD '));
$this->os = substr($this->os, 0, stripos($this->os, ';'));
} else {
$this->os = 'NetBSD';
}
} else {
if (stripos($this->ua, 'FreeBSD') !== false) {
$this->platform = 'FreeBSD';
if (stripos($this->ua, 'FreeBSD') !== false) {
$this->os = substr($this->ua, stripos($this->ua, 'FreeBSD '));
$this->os = substr($this->os, 0, stripos($this->os, ';'));
} else {
$this->os = 'FreeBSD';
}
}
}
}
}
}
}
}
// Determine browser and browser version.
if (stripos($this->ua, 'Camino') !== false) {
$this->name = 'Camino';
$this->webkit = true;
$this->version = substr($this->ua, stripos($this->ua, 'Camino/') + 7);
} else {
if (stripos($this->ua, 'Chrome') !== false) {
$this->name = 'Chrome';
$this->chrome = true;
$this->webkit = true;
$this->version = substr($this->ua, stripos($this->ua, 'Chrome/') + 7);
$this->version = substr($this->version, 0, stripos($this->version, ' '));
} else {
if (stripos($this->ua, 'Firefox') !== false) {
$this->name = 'Firefox';
$this->mozilla = true;
$this->version = substr($this->ua, stripos($this->ua, 'Firefox/') + 8);
} else {
if (stripos($this->ua, 'MSIE') !== false) {
$this->name = 'MSIE';
$this->msie = true;
$this->version = substr($this->ua, stripos($this->ua, 'MSIE ') + 5);
$this->version = substr($this->version, 0, stripos($this->version, ';'));
} else {
if (stripos($this->ua, 'Trident') !== false) {
$this->name = 'MSIE';
$this->msie = true;
$this->version = substr($this->ua, stripos($this->ua, 'rv:') + 3);
$this->version = substr($this->version, 0, stripos($this->version, ')'));
} else {
if (stripos($this->ua, 'Konqueror') !== false) {
$this->name = 'Konqueror';
$this->webkit = true;
$this->version = substr($this->ua, stripos($this->ua, 'Konqueror/') + 10);
$this->version = substr($this->version, 0, stripos($this->version, ';'));
} else {
if (stripos($this->ua, 'Navigator') !== false) {
$this->name = 'Navigator';
$this->mozilla = true;
$this->version = substr($this->ua, stripos($this->ua, 'Navigator/') + 10);
} else {
if (stripos($this->ua, 'Opera') !== false) {
$this->name = 'Opera';
$this->opera = true;
$this->version = substr($this->ua, stripos($this->ua, 'Opera/') + 6);
$this->version = substr($this->version, 0, stripos($this->version, ' '));
} else {
if (stripos($this->ua, 'Safari') !== false) {
$this->name = 'Safari';
$this->webkit = true;
$this->version = substr($this->ua, stripos($this->ua, 'Version/') + 8);
$this->version = substr($this->version, 0, stripos($this->version, ' '));
}
}
}
}
}
}
}
}
}
}