private function parseUserAgent(array $uaData, $lite, $standard, $sortIndex, $divisionName)
{
if (!isset($uaData['properties']) || !is_array($uaData['properties'])) {
throw new \LogicException('properties are missing or not an array for key "' . $uaData['userAgent'] . '"');
}
$uaProperties = $uaData['properties'];
if (!isset($uaProperties['Parent'])) {
throw new \LogicException('the "parent" property is missing for key "' . $uaData['userAgent'] . '"');
}
if (array_key_exists('platform', $uaData)) {
$platform = $this->getDataCollection()->getPlatform($uaData['platform']);
if (!$platform->isLite()) {
$lite = false;
}
if (!$platform->isStandard()) {
$standard = false;
}
$platformData = $platform->getProperties();
} else {
$platformData = [];
}
if (array_key_exists('engine', $uaData)) {
$engine = $this->getDataCollection()->getEngine($uaData['engine']);
$engineData = $engine->getProperties();
} else {
$engineData = [];
}
if (array_key_exists('device', $uaData)) {
$device = $this->getDataCollection()->getDevice($uaData['device']);
$deviceData = $device->getProperties();
if (!$device->isStandard()) {
$standard = false;
}
} else {
$deviceData = [];
}
$ua = $uaData['userAgent'];
$output = [$ua => array_merge(['lite' => $lite, 'standard' => $standard, 'sortIndex' => $sortIndex, 'division' => $divisionName], $platformData, $engineData, $deviceData, $uaProperties)];
if (!isset($uaData['children']) || !is_array($uaData['children']) || !count($uaData['children'])) {
return $output;
}
foreach ($uaData['children'] as $child) {
$output = array_merge($output, $this->parseChildren($ua, $child, $lite, $standard));
}
return $output;
}