Skip to content

Commit

Permalink
Updated versions::get() to mark browsers as outdated after 2 year…
Browse files Browse the repository at this point in the history
…s, and `legacy` after 5 years.

Added `vivobrowser`.
Added tests.
  • Loading branch information
hexydec committed Feb 7, 2025
1 parent 1ce707a commit b5249ef
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 3 deletions.
3 changes: 2 additions & 1 deletion docs/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,8 @@ The current status of the browser:
- `beta`: A beta build of the browser
- `current`: The browser is the current version
- `previous`: The browser is a previous version
- `legacy`: The browser was released more than 3 years ago
- `outdated`: The browser was release 2 or more years ago
- `legacy`: The browser was released more than 5 years ago

The browser status is determined by the version number and age of the browser, if the browser is more than 3 years old, it is considered legacy.

Expand Down
6 changes: 5 additions & 1 deletion src/helpers/versions.php
Original file line number Diff line number Diff line change
Expand Up @@ -114,9 +114,13 @@ public static function get(string $browser, string $version, array $config) : ar
$released = new \DateTime($data['browserreleased']);

// legacy
if ($released < \date_create('-3 years')) {
if ($released < \date_create('-5 years')) {
$data['browserstatus'] = 'legacy';

// outdated
} elseif ($released < \date_create('-2 years')) {
$data['browserstatus'] = 'outdated';

// current
} elseif ($current && ($released >= \date_create('-1 year') || $data['browserlatest'] === $version)) {
$data['browserstatus'] = 'current';
Expand Down
4 changes: 3 additions & 1 deletion src/mappings/browsers.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ protected static function getBrowser(string $value, int $i, array $tokens, strin
'samsungbrowser' => 'Samsung Internet',
'huaweibrowser' => 'Huawei Browser',
'qqbrowser' => 'QQ Browser',
'miuibrowser' => 'MIUI Browser'
'miuibrowser' => 'MIUI Browser',
'vivobrowser' => 'Vivo Browser'
];
$data = ['type' => 'human'];
$browser = \mb_strtolower(\array_shift($parts));
Expand Down Expand Up @@ -144,6 +145,7 @@ public static function get() : array {
'Namoroka/' => new props('start', $fn['browserslash']),
'CocCoc/' => new props('start', $fn['browserslash']),
'Obigo/' => new props('start', $fn['browserslash']),
'VivoBrowser/' => new props('start', $fn['browserslash']),
'QQBrowser/' => new props('any', function (string $value, int $i, array $tokens, string $key, array $config = []) use ($fn) : array {
return $fn['browserslash'](\mb_substr($value, \mb_stripos($value, 'QQBrowser/') ?: 0), $i, $tokens, $key, $config); // sometimes missing a space from previous declaration, and MQQBrowser for mobile.
}),
Expand Down
14 changes: 14 additions & 0 deletions tests/browsersTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2017,6 +2017,20 @@ public function testOther() : void {
'browser' => 'MIUI Browser',
'browserversion' => '2.1.1',
'language' => 'zh-CN'
],
'Mozilla/5.0 (Linux; Android 14; V2202; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/87.0.4280.141 Mobile Safari/537.36 VivoBrowser/12.2.0.2' => [
'string' => 'Mozilla/5.0 (Linux; Android 14; V2202; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/87.0.4280.141 Mobile Safari/537.36 VivoBrowser/12.2.0.2',
'type' => 'human',
'category' => 'mobile',
'model' => 'V2202',
'kernel' => 'Linux',
'platform' => 'Android',
'platformversion' => '14',
'engine' => 'Blink',
'engineversion' => '87.0.4280.141',
'browser' => 'Vivo Browser',
'browserversion' => '12.2.0.2',
'browserreleased' => '2021-01-06'
]
];
foreach ($strings AS $ua => $item) {
Expand Down

0 comments on commit b5249ef

Please sign in to comment.