+ if (!$this->bot) {
+ if ($this->hasEngine('gecko')) {
+ if (preg_match('|Mozilla/5.0 \(([^;]+); [^;]+; ([^;]+); ([^;]+); ([^;]+); rv:([^\);]+)(; [^\)]+)?\)|', $this->uastring, $regs)) {
+ $this->uadata['os'] = $regs[2].' ('.$regs[3].')';
+ $this->uadata['lang'] = (strpos($regs[4],'chrome://')===false)?$regs[4]:null;
+ $this->uadata['eng_version'] = $regs[5];
+ }
+ elseif (preg_match('|Mozilla/5.0 \(([^;]+); [^;]+; ([^;]+); ([^;]+); rv:([^\);]+)(; [^\)]+)?\)|', $this->uastring, $regs)) {
+ $this->uadata['os'] = $regs[2];
+ $this->uadata['lang'] = (strpos($regs[3],'chrome://')===false)?$regs[3]:null;
+ $this->uadata['eng_version'] = $regs[4];
+ }
+ elseif (preg_match('|Mozilla/5.0 \(([^;]+); [^;]; ([^;]+); rv:([^\);]+)(; [^\)]+)?\)|', $this->uastring, $regs)) {
+ $this->uadata['os'] = $regs[2];
+ $this->uadata['lang'] = null;
+ $this->uadata['eng_version'] = $regs[3];
+ }
+ elseif (preg_match('|Mozilla/5.0 \(([^;]+); ([^;]+); x64; rv:([^\);]+)(; [^\)]+)?\)|', $this->uastring, $regs)) {
+ $this->uadata['os'] = $regs[1].' ('.$regs[2].')';
+ $this->uadata['lang'] = null;
+ $this->uadata['eng_version'] = $regs[3];
+ }
+ elseif (preg_match('|Mozilla/5.0 \(([^;]+); ([^;]+); ([^;]+); rv:([^\);]+)(; [^\)]+)?\)|', $this->uastring, $regs)) {
+ $this->uadata['os'] = $regs[2];
+ $this->uadata['lang'] = (strpos($regs[3],'chrome://')===false)?$regs[3]:null;
+ $this->uadata['eng_version'] = $regs[4];
+ }
+ elseif (preg_match('|Mozilla/5.0 \(([^;]+); [^;]; ([^;]+); ([^;]+); m([^\);]+)\)|', $this->uastring, $regs)) {
+ $this->uadata['os'] = $regs[2];
+ $this->uadata['lang'] = $regs[3];
+ $this->uadata['eng_version'] = 'M'.$regs[4];
+ }
+ elseif (preg_match('|Mozilla/5.0 \(([^;]+); [^;]; ([^;]+); m([^\);]+)\)|', $this->uastring, $regs)) {
+ $this->uadata['os'] = $regs[1];
+ $this->uadata['lang'] = $regs[2];
+ $this->uadata['eng_version'] = 'M'.$regs[3];
+ }
+ elseif (preg_match('|Mozilla/5.0 \(([^;]+); [^;]; ([^;]+); ([^\);]+)\)|', $this->uastring, $regs)) {
+ $this->uadata['os'] = $regs[2];
+ $this->uadata['lang'] = $regs[3];
+ $this->uadata['eng_version'] = null;
+ }
+ elseif (preg_match('|Mozilla/5.0 \(([^;]+); (WOW64); rv:([^\);]+)\)|', $this->uastring, $regs)) {
+ $this->uadata['os'] = $regs[1].' ('.$regs[2].')';
+ $this->uadata['lang'] = null;
+ $this->uadata['eng_version'] = $regs[3];
+ }
+ elseif (preg_match('|Mozilla/5.0 \(([^;]+); ([^;]+); rv:([^\);]+)\)|', $this->uastring, $regs)) {
+ if ((strpos($regs[2], 'Linux') !== false) && ($regs[1] != 'X11')) {
+ $this->uadata['os'] = $regs[1].' ('.$regs[2].')';
+ }
+ else {
+ $this->uadata['os'] = $regs[2];
+ }
+ $this->uadata['lang'] = null;
+ $this->uadata['eng_version'] = $regs[3];
+ }
+ elseif (preg_match('|Mozilla/5.0 \(([^;]+); [^;]+; ([^\);]+)\)|', $this->uastring, $regs)) {
+ $this->uadata['os'] = $regs[2];
+ $this->uadata['lang'] = null;
+ $this->uadata['eng_version'] = null;
+ }
+ elseif (preg_match('|Mozilla/5.0 \(([^;]+); rv:([^\);]+)\)|', $this->uastring, $regs)) {
+ $this->uadata['os'] = $regs[1];
+ $this->uadata['lang'] = null;
+ $this->uadata['eng_version'] = $regs[2];
+ }
+ elseif (preg_match('|Mozilla/5.0 Galeon/[^\(]+ \(([^;]+); ([^;]+);[^\)]+\)|', $this->uastring, $regs)) {
+ $this->uadata['os'] = $regs[2];
+ $this->uadata['lang'] = null;
+ $this->uadata['eng_version'] = null;
+ }
+ elseif (preg_match('|Debian/|', $this->uastring, $regs)) {
+ $this->uadata['os'] = 'Debian Linux';
+ $this->uadata['lang'] = null;
+ $this->uadata['eng_version'] = null;
+ }