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

namespace WhichBrowserModel;

use 
WhichBrowserConstants;
use 
WhichBrowserData;
use 
WhichBrowserModelPrimitiveBase;

class 
Device extends Base
{
    
/** @var string */
    
public $manufacturer;

    
/** @var string */
    
public $model;

    
/** @var string */
    
public $series;

    
/** @var string */
    
public $carrier;

    
/** @var int */
    
public $identifier;

    
/** @var mixed */
    
public $flag;


    
/** @var string */
    
public $type '';

    
/** @var string */
    
public $subtype '';

    
/** @var int */
    
public $identified ConstantsId::NONE;

    
/** @var boolean */
    
public $generic true;

    
/** @var boolean */
    
public $hidden false;


    
/**
     * Set the properties to the default values
     *
     * @param   array|null  $properties  An optional array of properties to set after setting it to the default values
     *
     * @internal
     */

    
public function reset($properties null)
    {
        unset(
$this->manufacturer);
        unset(
$this->model);
        unset(
$this->series);
        unset(
$this->carrier);
        unset(
$this->identifier);

        
$this->type '';
        
$this->subtype '';
        
$this->identified ConstantsId::NONE;
        
$this->generic true;
        
$this->hidden false;

        if (
is_array($properties)) {
            
$this->set($properties);
        }
    }


    
/**
     * Identify the manufacturer and model based on a pattern
     *
     * @param   string      $pattern   The regular expression that defines the group that matches the model
     * @param   string      $subject   The string the regular expression is matched with
     * @param   array|null  $defaults  An optional array of properties to set together
     *
     * @return string
     */

    
public function identifyModel($pattern$subject$defaults = [])
    {
        if (
preg_match($pattern$subject$match)) {
            
$this->manufacturer = !empty($defaults['manufacturer']) ? $defaults['manufacturer'] : null;
            
$this->model DataDeviceModels::cleanup($match[1]);
            
$this->identifier preg_replace('/ (Mozilla|Opera|Obigo|AU.Browser|UP.Browser|Build|Java|PPC|AU-MIC.*)$/iu'''$match[0]);
            
$this->identifier preg_replace('/_(TD|GPRS|LTE|BLEU|CMCC|CUCC)$/iu'''$match[0]);

            if (isset(
$defaults['model'])) {
                if (
is_callable($defaults['model'])) {
                    
$this->model call_user_func($defaults['model'], $this->model);
                } else {
                    
$this->model $defaults['model'];
                }
            }

            
$this->generic false;
            
$this->identified |= ConstantsId::PATTERN;

            if (!empty(
$defaults['carrier'])) {
                
$this->carrier $defaults['carrier'];
            }

            if (!empty(
$defaults['type'])) {
                
$this->type $defaults['type'];
            }
        }
    }


    
/**
     * Declare an positive identification
     *
     * @param  array  $properties  An array, the key of an element determines the name of the property
     *
     * @return string
     */

    
public function setIdentification($properties)
    {
        
$this->reset($properties);

        if (!empty(
$this->model)) {
            
$this->generic false;
        }
        
        
$this->identified |= ConstantsId::MATCH_UA;
    }


    
/**
     * Get the name of the carrier in a human readable format
     *
     * @return string
     */

    
public function getCarrier()
    {
        return 
$this->identified && !empty($this->carrier) ? $this->carrier '';
    }


    
/**
     * Get the name of the manufacturer in a human readable format
     *
     * @return string
     */

    
public function getManufacturer()
    {
        return 
$this->identified && !empty($this->manufacturer) ? $this->manufacturer '';
    }


    
/**
     * Get the name of the model in a human readable format
     *
     * @return string
     */

    
public function getModel()
    {
        if (
$this->identified) {
            return 
trim((!empty($this->model) ? $this->model ' ' '') . (!empty($this->series) ? $this->series ''));
        }

        return !empty(
$this->model) ? $this->model '';
    }


    
/**
     * Get the combined name of the manufacturer and model in a human readable format
     *
     * @return string
     */

    
public function toString()
    {
        if (
$this->hidden) {
            return 
'';
        }
        
        if (
$this->identified) {
            
$model $this->getModel();
            
$manufacturer $this->getManufacturer();

            if (
$manufacturer != '' && strpos($model$manufacturer) === 0) {
                
$manufacturer '';
            }

            return 
trim($manufacturer ' ' $model);
        }

        return !empty(
$this->model) ? 'unrecognized device (' $this->model ')' '';
    }


    
/**
     * Check if device information is detected
     *
     * @return boolean
     */

    
public function isDetected()
    {
        return !empty(
$this->type) || !empty($this->model) || !empty($this->manufacturer);
    }


    
/**
     * Get an array of all defined properties
     *
     * @internal
     *
     * @return array
     */

    
public function toArray()
    {
        
$result = [];

        if (!empty(
$this->type)) {
            
$result['type'] = $this->type;
        }
        
        if (!empty(
$this->subtype)) {
            
$result['subtype'] = $this->subtype;
        }

        if (!empty(
$this->manufacturer)) {
            
$result['manufacturer'] = $this->manufacturer;
        }

        if (!empty(
$this->model)) {
            
$result['model'] = $this->model;
        }

        if (!empty(
$this->series)) {
            
$result['series'] = $this->series;
        }

        if (!empty(
$this->carrier)) {
            
$result['carrier'] = $this->carrier;
        }

        return 
$result;
    }
}
Онлайн: 0
Реклама