Вход Регистрация
Файл: vendor/whichbrowser/parser/src/Analyser/Corrections.php
Строк: 175
<?php

namespace WhichBrowserAnalyser;

use 
WhichBrowserConstants;
use 
WhichBrowserModelVersion;

trait 
Corrections
{
    private function &
applyCorrections()
    {
        if (isset(
$this->data->browser->name) && isset($this->data->browser->using)) {
            
$this->hideBrowserBasedOnUsing();
        }

        if (isset(
$this->data->browser->name) && isset($this->data->os->name)) {
            
$this->hideBrowserBasedOnOperatingSystem();
        }

        if (isset(
$this->data->browser->name) && $this->data->device->type == ConstantsDeviceType::TELEVISION) {
            
$this->hideBrowserOnDeviceTypeTelevision();
        }

        if (isset(
$this->data->browser->name) && $this->data->device->type == ConstantsDeviceType::GAMING) {
            
$this->hideBrowserOnDeviceTypeGaming();
        }

        if (
$this->data->device->type == ConstantsDeviceType::TELEVISION) {
            
$this->hideOsOnDeviceTypeTelevision();
        }

        if (isset(
$this->data->browser->name) && isset($this->data->engine->name)) {
            
$this->fixMidoriEngineName();
        }

        if (isset(
$this->data->browser->name) && isset($this->data->engine->name)) {
            
$this->fixNineSkyEngineName();
        }

        if (isset(
$this->data->browser->name) && isset($this->data->browser->family)) {
            
$this->hideFamilyIfEqualToBrowser();
        }

        return 
$this;
    }


    private function 
hideFamilyIfEqualToBrowser()
    {
        if (
$this->data->browser->name == $this->data->browser->family->name) {
            unset(
$this->data->browser->family);
        }
    }

    private function 
fixMidoriEngineName()
    {
        if (
$this->data->browser->name == 'Midori' && $this->data->engine->name != 'Webkit') {
            
$this->data->engine->name 'Webkit';
            
$this->data->engine->version null;
        }
    }

    private function 
fixNineSkyEngineName()
    {
        if (
$this->data->browser->name == 'NineSky' && $this->data->engine->name != 'Webkit') {
            
$this->data->engine->name 'Webkit';
            
$this->data->engine->version null;
        }
    }

    private function 
hideBrowserBasedOnUsing()
    {
        if (
$this->data->browser->name == 'Chrome') {
            if (
$this->data->browser->isUsing('Electron') || $this->data->browser->isUsing('Qt')) {
                unset(
$this->data->browser->name);
                unset(
$this->data->browser->version);
            }
        }
    }

    private function 
hideBrowserBasedOnOperatingSystem()
    {
        if (
$this->data->os->name == 'Series60' && $this->data->browser->name == 'Internet Explorer') {
            
$this->data->browser->reset();
            
$this->data->engine->reset();
        }

        if (
$this->data->os->name == 'Series80' && $this->data->browser->name == 'Internet Explorer') {
            
$this->data->browser->reset();
            
$this->data->engine->reset();
        }

        if (
$this->data->os->name == 'Lindows' && $this->data->browser->name == 'Internet Explorer') {
            
$this->data->browser->reset();
            
$this->data->engine->reset();
        }

        if (
$this->data->os->name == 'Tizen' && $this->data->browser->name == 'Chrome') {
            
$this->data->browser->reset([
                
'family' => isset($this->data->browser->family) ? $this->data->browser->family null
            
]);
        }

        if (
$this->data->os->name == 'Ubuntu Touch' && $this->data->browser->name == 'Chromium') {
            
$this->data->browser->reset([
                
'family' => isset($this->data->browser->family) ? $this->data->browser->family null
            
]);
        }

        if (
$this->data->os->name == 'KaiOS' && $this->data->browser->name == 'Firefox Mobile') {
            
$this->data->browser->reset([
                
'family' => isset($this->data->browser->family) ? $this->data->browser->family null
            
]);
        }
    }

    private function 
hideBrowserOnDeviceTypeGaming()
    {
        if (isset(
$this->data->device->model) && $this->data->device->model == 'PlayStation 2' && $this->data->browser->name == 'Internet Explorer') {
            
$this->data->browser->reset();
        }
    }

    private function 
hideBrowserOnDeviceTypeTelevision()
    {
        switch (
$this->data->browser->name) {
            case 
'Firefox':
                if (!
$this->data->isOs('Firefox OS')) {
                    unset(
$this->data->browser->name);
                    unset(
$this->data->browser->version);
                }
                break;

            case 
'Internet Explorer':
                
$valid false;

                if (isset(
$this->data->device->model) && in_array($this->data->device->model, [ 'WebTV' ])) {
                    
$valid true;
                }

                if (!
$valid) {
                    unset(
$this->data->browser->name);
                    unset(
$this->data->browser->version);
                }

                break;

            case 
'Chrome':
            case 
'Chromium':
                
$valid false;

                if (isset(
$this->data->os->name) && in_array($this->data->os->name, [ 'Google TV''Android' ])) {
                    
$valid true;
                }
                if (isset(
$this->data->device->model) && in_array($this->data->device->model, [ 'Chromecast' ])) {
                    
$valid true;
                }

                if (!
$valid) {
                    unset(
$this->data->browser->name);
                    unset(
$this->data->browser->version);
                }

                break;
        }
    }

    private function 
hideOsOnDeviceTypeTelevision()
    {
        if (isset(
$this->data->os->name) && !in_array($this->data->os->name, [ 'Aliyun OS''Tizen''Android''Android TV''FireOS''Google TV''Firefox OS''OpenTV''webOS' ])) {
            
$this->data->os->reset();
        }
    }
}
Онлайн: 2
Реклама