Файл: vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Media.php
Строк: 83
<?php
namespace WhichBrowserAnalyserHeaderUseragentDevice;
use WhichBrowserConstants;
use WhichBrowserModelVersion;
trait Media
{
private function detectMedia($ua)
{
if (!preg_match('/(Archos|Zune|Walkman)/ui', $ua)) {
return;
}
$this->detectArchos($ua);
$this->detectZune($ua);
$this->detectWalkman($ua);
}
/* Archos Generation 4, 5 and 6 */
private function detectArchos($ua)
{
/* Generation 4 */
if (preg_match('/Archos A([67]04)WIFI//u', $ua, $match)) {
$this->data->os->reset();
$this->data->device->setIdentification([
'manufacturer' => 'Archos',
'model' => $match[1] . ' WiFi',
'type' => ConstantsDeviceType::MEDIA
]);
}
/* Generation 5 */
if (preg_match('/ARCHOS; GOGI; a([67]05f?);/u', $ua, $match)) {
$this->data->os->reset();
$this->data->device->setIdentification([
'manufacturer' => 'Archos',
'model' => $match[1] . ' WiFi',
'type' => ConstantsDeviceType::MEDIA
]);
}
/* Generation 6 without Android */
if (preg_match('/ARCHOS; GOGI; G6-?(S|H|L|3GP);/u', $ua, $match)) {
$this->data->os->reset();
$this->data->device->setIdentification([
'manufacturer' => 'Archos',
'type' => ConstantsDeviceType::MEDIA
]);
switch ($match[1]) {
case '3GP':
$this->data->device->model = '5 3G+';
break;
case 'S':
case 'H':
$this->data->device->model = '5';
break;
case 'L':
$this->data->device->model = '7';
break;
}
}
/* Generation 6 with Android */
if (preg_match('/ARCHOS; GOGI; A5[SH]; Version ([0-9].[0-9])/u', $ua, $match)) {
$version = new Version([ 'value' => $match[1] ]);
$this->data->os->reset([
'name' => 'Android',
'version' => new Version([ 'value' => $version->is('<', '1.7') ? '1.5' : '1.6' ])
]);
$this->data->device->setIdentification([
'manufacturer' => 'Archos',
'model' => '5',
'type' => ConstantsDeviceType::MEDIA
]);
}
}
/* Microsoft Zune */
private function detectZune($ua)
{
if (preg_match('/Microsoft ZuneHD/u', $ua)) {
$this->data->os->reset();
$this->data->device->setIdentification([
'manufacturer' => 'Microsoft',
'model' => 'Zune HD',
'type' => ConstantsDeviceType::MEDIA
]);
}
}
/* Sony Walkman */
private function detectWalkman($ua)
{
if (preg_match('/Walkman/(NW-[A-Z0-9]+)/u', $ua, $match)) {
$this->data->device->setIdentification([
'manufacturer' => 'Sony',
'model' => $match[1] . ' Walkman',
'type' => ConstantsDeviceType::MEDIA
]);
}
}
}