예제 #1
0
파일: Parser.php 프로젝트: intelogie/parser
 /**
  * Create a new object that contains all the detected information
  *
  * @param  array|string   $headers   Optional, an array with all of the headers or a string with just the User-Agent header
  * @param  array          $options   Optional, an array with configuration options
  */
 public function __construct($headers = null, $options = [])
 {
     parent::__construct();
     if (!is_null($headers)) {
         $this->analyse($headers, $options);
     }
 }
예제 #2
0
파일: Parser.php 프로젝트: zunygun/Legacy
 /**
  * Create a new object that contains all the detected information
  *
  * @param  array|string   $headers   An array with all of the headers or a string with just the User-Agent header
  */
 public function __construct($headers)
 {
     parent::__construct();
     $analyser = new Analyser($headers);
     $analyser->setdata($this);
     $analyser->analyse();
 }
예제 #3
0
 public function testToArray()
 {
     $main = new Main();
     $this->assertEquals([], $main->toArray());
     $main->browser->set(['name' => 'Safari', 'version' => new Version(['value' => '8.0'])]);
     $main->engine->set(['name' => 'WebKit']);
     $main->os->set(['name' => 'iOS', 'version' => new Version(['value' => '8.0'])]);
     $main->device->setIdentification(['manufacturer' => 'Apple', 'model' => 'iPhone 6', 'type' => Constants\DeviceType::MOBILE]);
     $this->assertEquals(['browser' => ['name' => 'Safari', 'version' => '8.0'], 'engine' => ['name' => 'WebKit'], 'os' => ['name' => 'iOS', 'version' => '8.0'], 'device' => ['type' => 'mobile', 'manufacturer' => 'Apple', 'model' => 'iPhone 6']], $main->toArray());
 }
function hydrateWhichbrowser($data, array $row, array $headers)
{
    if (isset($row['engine']) || isset($row['features']) || isset($row['useragent'])) {
        throw new \Exception('client detection...');
    }
    $data['resRawResult'] = serialize($row);
    $result = $row['result'];
    /*
     * Hydrate...
     */
    $main = new Main();
    if (isset($result['browser'])) {
        $toUse = [];
        foreach ($result['browser'] as $key => $value) {
            if ($key == 'name') {
                $toUse['name'] = $value;
            } elseif ($key == 'type') {
                $toUse['type'] = $value;
            } elseif ($key == 'alias') {
                $toUse['alias'] = $value;
            } elseif ($key == 'version') {
                $toUse['version'] = getWhichbrowserVersion($value);
            } elseif ($key == 'using') {
                $usingToUse = [];
                if (!is_array($value)) {
                    $usingToUse['name'] = $value;
                }
                if (isset($value['name'])) {
                    $usingToUse['name'] = $value['name'];
                }
                if (isset($value['version'])) {
                    $usingToUse['version'] = getWhichbrowserVersion($value['version']);
                }
                $toUse['using'] = new Using($usingToUse);
            } elseif ($key == 'family') {
                $familyToUse = [];
                if (!is_array($value)) {
                    $familyToUse['name'] = $value;
                }
                if (isset($value['name'])) {
                    $familyToUse['name'] = $value['name'];
                }
                if (isset($value['version'])) {
                    $familyToUse['version'] = getWhichbrowserVersion($value['version']);
                }
                $toUse['family'] = new Family($familyToUse);
            } else {
                throw new \Exception('unknown key: ' . $key . ' / ' . print_r($value, true));
            }
        }
        $main->browser->set($toUse);
    }
    if (isset($result['engine'])) {
        $toUse = [];
        foreach ($result['engine'] as $key => $value) {
            if ($key == 'name') {
                $toUse['name'] = $value;
            } elseif ($key == 'version') {
                $toUse['version'] = getWhichbrowserVersion($value);
            } else {
                throw new \Exception('unknown key: ' . $key . ' / ' . print_r($value, true));
            }
        }
        $main->engine->set($toUse);
    }
    if (isset($result['os'])) {
        $toUse = [];
        foreach ($result['os'] as $key => $value) {
            if ($key == 'name') {
                $toUse['name'] = $value;
            } elseif ($key == 'alias') {
                $toUse['alias'] = $value;
            } elseif ($key == 'family') {
                $familyToUse = [];
                if (!is_array($value)) {
                    $familyToUse['name'] = $value;
                }
                if (isset($value['name'])) {
                    $familyToUse['name'] = $value['name'];
                }
                if (isset($value['version'])) {
                    $familyToUse['version'] = getWhichbrowserVersion($value['version']);
                }
                $toUse['family'] = new Family($familyToUse);
            } elseif ($key == 'version') {
                $toUse['version'] = getWhichbrowserVersion($value);
            } else {
                throw new \Exception('unknown key: ' . $key . ' / ' . print_r($value, true));
            }
        }
        $main->os->set($toUse);
    }
    if (isset($result['device'])) {
        $toUse = [];
        foreach ($result['device'] as $key => $value) {
            if ($key == 'type') {
                $toUse['type'] = $value;
            } elseif ($key == 'subtype') {
                $toUse['subtype'] = $value;
            } elseif ($key == 'manufacturer') {
                $toUse['manufacturer'] = $value;
            } elseif ($key == 'model') {
                $toUse['model'] = $value;
            } elseif ($key == 'series') {
                $toUse['series'] = $value;
            } elseif ($key == 'carrier') {
                $toUse['carrier'] = $value;
            } else {
                throw new \Exception('unknown key: ' . $key . ' / ' . $value);
            }
        }
        $main->device->setIdentification($toUse);
    }
    if (isset($result['camouflage'])) {
        $main->camouflage = $result['camouflage'];
    }
    $resultArray = $main->toArray();
    $provider = new WhichBrowser();
    $resultParser = $provider->parse($headers['User-Agent'], $headers);
    $compare1 = $main->toArray();
    $compare2 = $resultParser->getProviderResultRaw();
    if ($compare1 !== $compare2) {
        if (count($headers) > 1) {
            echo 'O';
        } else {
            echo 'E';
        }
    }
    /*
     * convert to our result
     */
    if ($main->getType() === 'bot') {
        $data['resBotIsBot'] = 1;
        if ($main->browser->getName() != '') {
            $data['resBotName'] = $main->browser->getName();
        }
        return $data;
    }
    if ($main->browser->getName() != '') {
        $data['resBrowserName'] = $main->browser->getName();
        if ($main->browser->getVersion() != '') {
            $data['resBrowserVersion'] = $main->browser->getVersion();
        }
    } elseif (isset($main->browser->using) && $main->browser->using instanceof \WhichBrowser\Model\Using && $main->browser->using->getName() != '') {
        $data['resBrowserName'] = $main->browser->using->getName();
        if ($main->browser->using->getVersion() != '') {
            $data['resBrowserVersion'] = $main->browser->using->getVersion();
        }
    }
    if ($main->engine->getName() != '') {
        $data['resEngineName'] = $main->engine->getName();
    }
    if ($main->engine->getVersion() != '') {
        $data['resEngineVersion'] = $main->engine->getVersion();
    }
    if ($main->os->getName() != '') {
        $data['resOsName'] = $main->os->getName();
    }
    if ($main->os->getVersion() != '') {
        $data['resOsVersion'] = $main->os->getVersion();
    }
    if ($main->device->getModel() != '') {
        $data['resDeviceModel'] = $main->device->getModel();
    }
    if ($main->device->getManufacturer() != '') {
        $data['resDeviceBrand'] = $main->device->getManufacturer();
    }
    if ($main->getType() != '') {
        $data['resDeviceType'] = $main->getType();
    }
    if ($main->isMobile() != '') {
        $data['resDeviceIsMobile'] = $main->isMobile();
    }
    return $data;
}