mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-07 10:41:40 +09:00
Change detection order of Opera/Konq/Chrome/Safari
This commit is contained in:
parent
38b3db1238
commit
2086c73295
2 changed files with 64 additions and 23 deletions
|
|
@ -228,7 +228,7 @@ class UA
|
||||||
$result->version = ($matches[1] + 4) . '.0';
|
$result->version = ($matches[1] + 4) . '.0';
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
if (preg_match('#(MSIE|Chrome|CriOS|Firefox|FxiOS|Yeti|[a-z]+bot(?:-Image)?)[ /:]([0-9]+\\.[0-9]+)#i', $ua, $matches))
|
if (preg_match('#(MSIE|OPR|CriOS|Firefox|FxiOS|Iceweasel|Yeti|[a-z]+bot(?:-Image)?)[ /:]([0-9]+\\.[0-9]+)#i', $ua, $matches))
|
||||||
{
|
{
|
||||||
if ($matches[1] === 'MSIE')
|
if ($matches[1] === 'MSIE')
|
||||||
{
|
{
|
||||||
|
|
@ -238,10 +238,14 @@ class UA
|
||||||
{
|
{
|
||||||
$result->browser = 'Chrome';
|
$result->browser = 'Chrome';
|
||||||
}
|
}
|
||||||
elseif ($matches[1] === 'FxiOS')
|
elseif ($matches[1] === 'FxiOS' || $matches[1] === 'Iceweasel')
|
||||||
{
|
{
|
||||||
$result->browser = 'Firefox';
|
$result->browser = 'Firefox';
|
||||||
}
|
}
|
||||||
|
elseif ($matches[1] === 'OPR')
|
||||||
|
{
|
||||||
|
$result->browser = 'Opera';
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$result->browser = ucfirst($matches[1]);
|
$result->browser = ucfirst($matches[1]);
|
||||||
|
|
@ -249,16 +253,17 @@ class UA
|
||||||
$result->version = $matches[2];
|
$result->version = $matches[2];
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
if (preg_match('#Safari/[0-9]+#', $ua) && preg_match('#Version/([0-9]+\\.[0-9]+)#', $ua, $matches) && $matches[1] < 500)
|
if (preg_match('#(?:Opera|OPR)[/ ]([0-9]+\\.[0-9]+)#', $ua, $matches))
|
||||||
{
|
|
||||||
$result->browser = 'Safari';
|
|
||||||
$result->version = $matches[1];
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
if (preg_match('#^Opera/.+(?:Opera |Version/)([0-9]+\\.[0-9]+)$#', $ua, $matches))
|
|
||||||
{
|
{
|
||||||
$result->browser = 'Opera';
|
$result->browser = 'Opera';
|
||||||
$result->version = $matches[1];
|
if ($matches[1] >= 9.79 && preg_match('#Version/([0-9]+\\.[0-9]+)#', $ua, $operamatches))
|
||||||
|
{
|
||||||
|
$result->version = $operamatches[1];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$result->version = $matches[1];
|
||||||
|
}
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
if (preg_match('#(?:Konqueror|KHTML)/([0-9]+\\.[0-9]+)$#', $ua, $matches))
|
if (preg_match('#(?:Konqueror|KHTML)/([0-9]+\\.[0-9]+)$#', $ua, $matches))
|
||||||
|
|
@ -267,6 +272,18 @@ class UA
|
||||||
$result->version = $matches[1];
|
$result->version = $matches[1];
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
if (preg_match('#Chrome/([0-9]+\\.[0-9]+)#', $ua, $matches))
|
||||||
|
{
|
||||||
|
$result->browser = 'Chrome';
|
||||||
|
$result->version = $matches[1];
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
if (preg_match('#Safari/[0-9]+#', $ua) && preg_match('#Version/([0-9]+\\.[0-9]+)#', $ua, $matches) && $matches[1] < 500)
|
||||||
|
{
|
||||||
|
$result->browser = 'Safari';
|
||||||
|
$result->version = $matches[1];
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -89,6 +89,19 @@ class UATest extends \Codeception\TestCase\Test
|
||||||
$this->assertEquals('Windows', $browser->os);
|
$this->assertEquals('Windows', $browser->os);
|
||||||
$this->assertFalse($browser->is_mobile);
|
$this->assertFalse($browser->is_mobile);
|
||||||
|
|
||||||
|
// Linux Chrome
|
||||||
|
$browser = Rhymix\Framework\UA::getBrowserInfo('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36');
|
||||||
|
$this->assertEquals('Chrome', $browser->browser);
|
||||||
|
$this->assertEquals('41.0', $browser->version);
|
||||||
|
$this->assertEquals('Linux', $browser->os);
|
||||||
|
$this->assertFalse($browser->is_mobile);
|
||||||
|
|
||||||
|
// Linux Konqueror
|
||||||
|
$browser = Rhymix\Framework\UA::getBrowserInfo('Mozilla/5.0 (X11; Linux) KHTML/4.9.1 (like Gecko) Konqueror/4.9');
|
||||||
|
$this->assertEquals('Konqueror', $browser->browser);
|
||||||
|
$this->assertEquals('4.9', $browser->version);
|
||||||
|
$this->assertEquals('Linux', $browser->os);
|
||||||
|
|
||||||
// Edge 13
|
// Edge 13
|
||||||
$browser = Rhymix\Framework\UA::getBrowserInfo('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586');
|
$browser = Rhymix\Framework\UA::getBrowserInfo('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586');
|
||||||
$this->assertEquals('Edge', $browser->browser);
|
$this->assertEquals('Edge', $browser->browser);
|
||||||
|
|
@ -124,19 +137,6 @@ class UATest extends \Codeception\TestCase\Test
|
||||||
$this->assertEquals('IE', $browser->browser);
|
$this->assertEquals('IE', $browser->browser);
|
||||||
$this->assertEquals('8.0', $browser->version);
|
$this->assertEquals('8.0', $browser->version);
|
||||||
|
|
||||||
// Linux Chrome
|
|
||||||
$browser = Rhymix\Framework\UA::getBrowserInfo('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36');
|
|
||||||
$this->assertEquals('Chrome', $browser->browser);
|
|
||||||
$this->assertEquals('41.0', $browser->version);
|
|
||||||
$this->assertEquals('Linux', $browser->os);
|
|
||||||
$this->assertFalse($browser->is_mobile);
|
|
||||||
|
|
||||||
// Linux Konqueror
|
|
||||||
$browser = Rhymix\Framework\UA::getBrowserInfo('Mozilla/5.0 (X11; Linux) KHTML/4.9.1 (like Gecko) Konqueror/4.9');
|
|
||||||
$this->assertEquals('Konqueror', $browser->browser);
|
|
||||||
$this->assertEquals('4.9', $browser->version);
|
|
||||||
$this->assertEquals('Linux', $browser->os);
|
|
||||||
|
|
||||||
// iOS Safari
|
// iOS Safari
|
||||||
$browser = Rhymix\Framework\UA::getBrowserInfo('iPad: Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B176 Safari/7534.48.3');
|
$browser = Rhymix\Framework\UA::getBrowserInfo('iPad: Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B176 Safari/7534.48.3');
|
||||||
$this->assertEquals('Safari', $browser->browser);
|
$this->assertEquals('Safari', $browser->browser);
|
||||||
|
|
@ -182,6 +182,30 @@ class UATest extends \Codeception\TestCase\Test
|
||||||
$this->assertEquals('macOS', $browser->os);
|
$this->assertEquals('macOS', $browser->os);
|
||||||
$this->assertFalse($browser->is_mobile);
|
$this->assertFalse($browser->is_mobile);
|
||||||
|
|
||||||
|
// Opera 15
|
||||||
|
$browser = Rhymix\Framework\UA::getBrowserInfo('Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36 OPR/15.0.1147.100');
|
||||||
|
$this->assertEquals('Opera', $browser->browser);
|
||||||
|
$this->assertEquals('15.0', $browser->version);
|
||||||
|
$this->assertFalse($browser->is_mobile);
|
||||||
|
|
||||||
|
// Opera 12
|
||||||
|
$browser = Rhymix\Framework\UA::getBrowserInfo('Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16');
|
||||||
|
$this->assertEquals('Opera', $browser->browser);
|
||||||
|
$this->assertEquals('12.16', $browser->version);
|
||||||
|
$this->assertFalse($browser->is_mobile);
|
||||||
|
|
||||||
|
// Opera 9.x
|
||||||
|
$browser = Rhymix\Framework\UA::getBrowserInfo('Opera/9.64 (X11; Linux x86_64; U; en) Presto/2.1.1');
|
||||||
|
$this->assertEquals('Opera', $browser->browser);
|
||||||
|
$this->assertEquals('9.64', $browser->version);
|
||||||
|
$this->assertFalse($browser->is_mobile);
|
||||||
|
|
||||||
|
// Iceweasel (Debian Firefox)
|
||||||
|
$browser = Rhymix\Framework\UA::getBrowserInfo('Mozilla/5.0 (X11; Linux i686; rv:10.0.7) Gecko/20100101 Iceweasel/10.0.7');
|
||||||
|
$this->assertEquals('Firefox', $browser->browser);
|
||||||
|
$this->assertEquals('10.0', $browser->version);
|
||||||
|
$this->assertFalse($browser->is_mobile);
|
||||||
|
|
||||||
// Googlebot
|
// Googlebot
|
||||||
$browser = Rhymix\Framework\UA::getBrowserInfo('Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)');
|
$browser = Rhymix\Framework\UA::getBrowserInfo('Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)');
|
||||||
$this->assertEquals('Googlebot', $browser->browser);
|
$this->assertEquals('Googlebot', $browser->browser);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue