private function parseChildren($ua, array $uaDataChild, $lite = true, $standard = true)
{
$output = [];
if (isset($uaDataChild['platforms']) && is_array($uaDataChild['platforms'])) {
foreach ($uaDataChild['platforms'] as $platform) {
$properties = ['Parent' => $ua, 'lite' => $lite, 'standard' => $standard];
$platformData = $this->getDataCollection()->getPlatform($platform);
if (!$platformData->isLite()) {
$properties['lite'] = false;
}
if (!$platformData->isStandard()) {
$properties['standard'] = false;
}
$uaBase = str_replace('#PLATFORM#', $platformData->getMatch(), $uaDataChild['match']);
if (array_key_exists('engine', $uaDataChild)) {
$engine = $this->getDataCollection()->getEngine($uaDataChild['engine']);
$engineData = $engine->getProperties();
} else {
$engineData = [];
}
if (array_key_exists('device', $uaDataChild)) {
$device = $this->getDataCollection()->getDevice($uaDataChild['device']);
$deviceData = $device->getProperties();
if (!$device->isStandard()) {
$properties['standard'] = false;
}
} else {
$deviceData = [];
}
$properties = array_merge($properties, $engineData, $deviceData, $platformData->getProperties());
if (isset($uaDataChild['properties']) && is_array($uaDataChild['properties'])) {
$childProperties = $uaDataChild['properties'];
$properties = array_merge($properties, $childProperties);
}
$output[$uaBase] = $properties;
}
} else {
$properties = ['Parent' => $ua, 'lite' => $lite, 'standard' => $standard];
if (array_key_exists('engine', $uaDataChild)) {
$engine = $this->getDataCollection()->getEngine($uaDataChild['engine']);
$engineData = $engine->getProperties();
} else {
$engineData = [];
}
if (array_key_exists('device', $uaDataChild)) {
$device = $this->getDataCollection()->getDevice($uaDataChild['device']);
$deviceData = $device->getProperties();
if (!$device->isStandard()) {
$properties['standard'] = false;
}
} else {
$deviceData = [];
}
$properties = array_merge($properties, $engineData, $deviceData);
if (isset($uaDataChild['properties']) && is_array($uaDataChild['properties'])) {
$childProperties = $uaDataChild['properties'];
$this->checkPlatformData($childProperties, 'the properties array contains platform data for key "' . $ua . '", please use the "platforms" keyword');
$this->checkEngineData($childProperties, 'the properties array contains engine data for key "' . $ua . '", please use the "engine" keyword');
$properties = array_merge($properties, $childProperties);
}
$uaBase = str_replace('#PLATFORM#', '', $uaDataChild['match']);
$output[$uaBase] = $properties;
}
return $output;
}