Browscap\Data\Expander::parseChildren PHP Метод

parseChildren() приватный Метод

Render the children section in a single User Agent block
private parseChildren ( string $ua, array $uaDataChild, boolean $lite = true, boolean $standard = true ) : array[]
$ua string
$uaDataChild array
$lite boolean
$standard boolean
Результат array[]
    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;
    }