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

namespace WhichBrowserAnalyserHeaderUseragentDevice;

use 
WhichBrowserConstants;
use 
WhichBrowserData;
use 
WhichBrowserModelFamily;
use 
WhichBrowserModelVersion;

trait 
Pda
{
    private function 
detectPda($ua)
    {
        if (!
preg_match('/(CASIO|Palm|Psion|pdQ|COM|airboard|sharp|pda|POCKET-E|OASYS|NTT/PI)/ui'$ua)) {
            return;
        }

        
$this->detectCasio($ua);
        
$this->detectPalm($ua);
        
$this->detectPsion($ua);
        
$this->detectSonyMylo($ua);
        
$this->detectSonyAirboard($ua);
        
$this->detectSharpZaurus($ua);
        
$this->detectSharpShoin($ua);
        
$this->detectPanasonicPocketE($ua);
        
$this->detectFujitsuOasys($ua);
        
$this->detectNttPetitWeb($ua);
    }





    
/* Casio */

    
private function detectCasio($ua)
    {
        if (
preg_match('/Product=CASIO/([^);]+)[);]/ui'$ua$match)) {
            
$this->data->device->manufacturer 'Casio';
            
$this->data->device->identified |= ConstantsId::MATCH_UA;
            
$this->data->device->type ConstantsDeviceType::PDA;

            if (
$match[1] == 'CASSIOPEIA BE') {
                
$this->data->device->model 'Cassiopeia';
            }

            if (
$match[1] == 'PPP101') {
                
$this->data->device->model 'Pocket PostPet';
                
$this->data->device->carrier 'DoCoMo';
            }
        }
    }


    
/* Palm */

    
private function detectPalm($ua)
    {
        if (
preg_match('/PalmOS/iu'$ua$match)) {
            
$this->data->os->name 'Palm OS';
            
$this->data->device->type ConstantsDeviceType::PDA;

            if (
preg_match('/PalmOS ([0-9.]*)/iu'$ua$match)) {
                
$this->data->os->version = new Version([ 'value' => $match[1] ]);
            }

            if (
preg_match('/; ([^;)]+))/u'$ua$match)) {
                
$device DataDeviceModels::identify('palmos'$match[1]);

                if (
$device->identified) {
                    
$device->identified |= $this->data->device->identified;
                    
$this->data->device $device;
                }
            }

            if (
preg_match('/PalmOS/([a-z]+)/model ([^/]+)//iu'$ua$match)) {
                
$device DataDeviceModels::identify('palmos'$match[1] . '-' $match[2]);

                if (
$device->identified) {
                    
$device->identified |= $this->data->device->identified;
                    
$this->data->device $device;
                }
            }
        }

        if (
preg_match('/Palm OS ([0-9.]*)/iu'$ua$match)) {
            
$this->data->os->name 'Palm OS';
            
$this->data->os->version = new Version([ 'value' => $match[1] ]);
            
$this->data->device->type ConstantsDeviceType::PDA;
        }

        if (
preg_match('/PalmSource/u'$ua$match)) {
            
$this->data->os->name 'Palm OS';
            
$this->data->os->version null;
            
$this->data->device->type ConstantsDeviceType::PDA;

            if (
preg_match('/PalmSource/([^;]+)/u'$ua$match)) {
                
$this->data->device->model $match[1];
                
$this->data->device->identified ConstantsId::PATTERN;
            }

            if (isset(
$this->data->device->model) && $this->data->device->model) {
                
$device DataDeviceModels::identify('palmos'$this->data->device->model);

                if (
$device->identified) {
                    
$device->identified |= $this->data->device->identified;
                    
$this->data->device $device;
                }
            }
        }

        
/* Some model markers */

        
if (preg_match('/PalmPilot Pro/ui'$ua$match)) {
            
$this->data->device->manufacturer 'Palm';
            
$this->data->device->model 'Pilot Professional';
            
$this->data->device->identified |= ConstantsId::MATCH_UA;
        }

        if (
preg_match('/pdQbrowser/ui'$ua$match)) {
            
$this->data->device->manufacturer 'Kyocera';
            
$this->data->device->model 'QCP-6035';
            
$this->data->device->identified |= ConstantsId::MATCH_UA;
        }
    }


    
/* PSION */

    
private function detectPsion($ua)
    {
        if (
preg_match('/Psion Cpw//iu'$ua$match)) {
            
$this->data->browser->name 'WAP Browser';
            
$this->data->browser->version null;
            
$this->data->browser->type ConstantsBrowserType::BROWSER;

            
$this->data->os->name 'EPOC';
            
$this->data->os->family = new Family([ 'name' => 'Symbian' ]);

            
$this->data->device->manufacturer 'Psion';
            
$this->data->device->identified |= ConstantsId::MATCH_UA;
            
$this->data->device->type ConstantsDeviceType::PDA;

            if (
preg_match('/(([A-Z0-9]+))/u'$ua$match)) {
                switch (
$match[1]) {
                    case 
'S5':
                        
$this->data->device->model 'Series 5mx';
                        break;
                    case 
'S7':
                        
$this->data->device->model 'Series 7';
                        break;
                    case 
'RV':
                        
$this->data->device->model 'Revo';
                        break;
                }
            }
        }
    }


    
/* Sony Mylo */

    
private function detectSonyMylo($ua)
    {
        if (
preg_match('/SONY/COM([0-9])/ui'$ua$match)) {
            
$this->data->device->manufacturer 'Sony';
            
$this->data->device->model 'Mylo ' $match[1];
            
$this->data->device->identified |= ConstantsId::MATCH_UA;
            
$this->data->device->type ConstantsDeviceType::PDA;

            
$this->data->os->reset();

            if (
preg_match('/Qt embedded/ui'$ua$match)) {
                
$this->data->os->name 'Qtopia';
            }
        }
    }


    
/* Sony Airboard */

    
private function detectSonyAirboard($ua)
    {
        if (
preg_match('/SONY/airboard/IDT-([A-Z0-9]+)/ui'$ua$match)) {
            
$this->data->device->manufacturer 'Sony';
            
$this->data->device->model 'Airboard ' $match[1];
            
$this->data->device->identified |= ConstantsId::MATCH_UA;
            
$this->data->device->type ConstantsDeviceType::PDA;
        }

        if (
preg_match('/LocationFreeTV; Airboard/(LF-[A-Z0-9]+)/ui'$ua$match)) {
            
$this->data->device->manufacturer 'Sony';
            
$this->data->device->model 'Airboard ' $match[1];
            
$this->data->device->identified |= ConstantsId::MATCH_UA;
            
$this->data->device->type ConstantsDeviceType::PDA;
        }
    }


    
/* Sharp Zaurus */

    
private function detectSharpZaurus($ua)
    {
        if (
preg_match('/sharp pda browser/([0-9.]+)/ui'$ua$match)) {
            
$this->data->device->manufacturer 'Sharp';
            
$this->data->device->model 'Zaurus';
            
$this->data->device->type ConstantsDeviceType::PDA;

            if (
preg_match('/(([A-Z0-9-]+)/[0-9.]+)/ui'$ua$match)) {
                
$this->data->device->model 'Zaurus ' $match[1];
                
$this->data->device->identified |= ConstantsId::MATCH_UA;
                
$this->data->device->generic false;
            }
        }

        if (
preg_match('/(PDA; (SL-[A-Z][0-9]+)/[0-9.]/ui'$ua$match)) {
            
$this->data->device->manufacturer 'Sharp';
            
$this->data->device->model 'Zaurus ' $match[1];
            
$this->data->device->type ConstantsDeviceType::PDA;
            
$this->data->device->identified |= ConstantsId::MATCH_UA;
            
$this->data->device->generic false;
        }
    }


    
/* Sharp Shoin (Word Processor) */

    
private function detectSharpShoin($ua)
    {
        if (
preg_match('/sharp wd browser/([0-9.]+)/ui'$ua$match)) {
            
$this->data->device->manufacturer 'Sharp';
            
$this->data->device->model 'Mobile Shoin';
            
$this->data->device->type ConstantsDeviceType::PDA;

            if (
preg_match('/(([A-Z0-9-]+)/[0-9.]+)/ui'$ua$match)) {
                
$this->data->device->model 'Mobile Shoin ' $match[1];
                
$this->data->device->identified |= ConstantsId::MATCH_UA;
                
$this->data->device->generic false;
            }
        }
    }


    
/* Panasonic POCKET・E */

    
private function detectPanasonicPocketE($ua)
    {
        if (
preg_match('/Product=Panasonic/POCKET-E/ui'$ua$match)) {
            
$this->data->device->manufacturer 'Panasonic';
            
$this->data->device->model 'POCKET・E';
            
$this->data->device->type ConstantsDeviceType::PDA;
            
$this->data->device->identified |= ConstantsId::MATCH_UA;
            
$this->data->device->generic false;
        }
    }


    
/* Fujitsu OASYS */

    
private function detectFujitsuOasys($ua)
    {
        if (
preg_match('/Fujitsu; OASYS/ui'$ua$match)) {
            
$this->data->device->manufacturer 'Fujitsu';
            
$this->data->device->model 'OASYS';
            
$this->data->device->type ConstantsDeviceType::PDA;
            
$this->data->device->identified |= ConstantsId::MATCH_UA;
            
$this->data->device->generic false;

            if (
preg_match('/eNavigator/ui'$ua$match)) {
                
$this->data->browser->name 'eNavigator';
                
$this->data->browser->version null;
                
$this->data->browser->type ConstantsBrowserType::BROWSER;
            }
        }
    }


    
/* PetitWeb */

    
private function detectNttPetitWeb($ua)
    {
        if (
preg_match('/Product=NTT/(PI-[0-9]+)/ui'$ua$match)) {
            
$this->data->device->manufacturer 'NTT';
            
$this->data->device->model 'PetitWeb ' $match[1];
            
$this->data->device->type ConstantsDeviceType::PDA;
            
$this->data->device->identified |= ConstantsId::MATCH_UA;
            
$this->data->device->generic false;
        }
    }
}
Онлайн: 0
Реклама