public function getBotInformation() { if (!$this->deviceDetector->isBot()) { throw new \Exception(Yii::t("app", "Isn't a Bot.")); } return $this->deviceDetector->getBot(); }
/** * @dataProvider getBotFixtures */ public function testParseBots($fixtureData) { $ua = $fixtureData['user_agent']; $dd = new DeviceDetector($ua); $dd->parse(); $this->assertTrue($dd->isBot()); $botData = $dd->getBot(); $this->assertEquals($botData['name'], $fixtureData['name']); // client and os will always be unknown for bots $this->assertEquals($dd->getOs('short_name'), DeviceDetector::UNKNOWN); $this->assertEquals($dd->getClient('short_name'), DeviceDetector::UNKNOWN); }
public function detect($userAgent = null, $advanced = false) { $userAgent = $userAgent ?: env('HTTP_USER_AGENT'); DeviceParserAbstract::setVersionTruncation(DeviceParserAbstract::VERSION_TRUNCATION_NONE); $detect = new DeviceDetector($userAgent); $detect->parse(); $return = []; if ($detect->isBot()) { $return['bot'] = $detect->getBot(); return $return; } //device wrapper $devicelist = ['desktop' => 'computer', 'smartphone' => 'phone', 'tablet' => 'tablet', 'feature phone' => 'phone']; $os = $detect->getOs(); $client = $detect->getClient(); $devicename = $detect->getDeviceName(); $devicetype = isset($devicelist[$devicename]) ? $devicelist[$devicename] : 'computer'; //legacy params $return['device'] = $devicename; $return['type'] = $devicetype; $return['brand'] = $detect->getBrandName(); $return['os'] = $os['name']; $return['os_version'] = $os['version']; $return['os_code'] = $os['short_name']; $return['browser'] = $client['name']; $return['browser_version'] = $client['version']; $return['browser_code'] = $client['short_name']; $return['browser_type'] = $client['type']; $return['browser_engine'] = $client['engine']; if (!$advanced) { return array_map('trim', $return); } //advanced params $osFamily = OperatingSystem::getOsFamily($os['short_name']); $return['os_family'] = $osFamily !== false ? $osFamily : 'Unknown'; $return['model'] = $detect->getModel(); $browserFamily = Browser::getBrowserFamily($client['short_name']); $return['browser_family'] = $browserFamily !== false ? $browserFamily : 'Unknown'; $touch = $detect->isTouchEnabled(); $return['touch'] = $touch[0]; unset($os, $client, $osFamily, $browserFamily, $touch); return array_map('trim', $return); }
/** * Parses a useragent and returns the detected data * * ATTENTION: Use that method only for testing or very small applications * To get fast results from DeviceDetector you need to make your own implementation, * that should use one of the caching mechanisms. See README.md for more information. * * @internal * @deprecated * * @param string $ua UserAgent to parse * * @return array */ public static function getInfoFromUserAgent($ua) { $deviceDetector = new DeviceDetector($ua); $deviceDetector->parse(); if ($deviceDetector->isBot()) { return array('user_agent' => $deviceDetector->getUserAgent(), 'bot' => $deviceDetector->getBot()); } $osFamily = OperatingSystem::getOsFamily($deviceDetector->getOs('short_name')); $browserFamily = \DeviceDetector\Parser\Client\Browser::getBrowserFamily($deviceDetector->getClient('short_name')); $processed = array('user_agent' => $deviceDetector->getUserAgent(), 'os' => $deviceDetector->getOs(), 'client' => $deviceDetector->getClient(), 'device' => array('type' => $deviceDetector->getDeviceName(), 'brand' => $deviceDetector->getBrand(), 'model' => $deviceDetector->getModel()), 'os_family' => $osFamily !== false ? $osFamily : 'Unknown', 'browser_family' => $browserFamily !== false ? $browserFamily : 'Unknown'); return $processed; }
<?php require_once 'vendor/autoload.php'; use DeviceDetector\DeviceDetector; $userAgent = $argv[1]; $dd = new DeviceDetector($userAgent); $dd->parse(); if ($dd->isBot()) { var_dump($botInfo = $dd->getBot()); } else { $clientInfo = $dd->getClient(); // holds information about browser, feed reader, media player, ... $osInfo = $dd->getOs(); $device = $dd->getDevice(); $brand = $dd->getBrand(); $model = $dd->getModel(); var_dump($clientInfo, $osInfo, $device, $brand, $model); }
/** * * @param DeviceDetector $dd * * @return array */ private function getResultRaw(DeviceDetector $dd) { $raw = ['client' => $dd->getClient(), 'operatingSystem' => $dd->getOs(), 'device' => ['brand' => $dd->getBrand(), 'brandName' => $dd->getBrandName(), 'model' => $dd->getModel(), 'device' => $dd->getDevice(), 'deviceName' => $dd->getDeviceName()], 'bot' => $dd->getBot(), 'extra' => ['isBot' => $dd->isBot(), 'isBrowser' => $dd->isBrowser(), 'isFeedReader' => $dd->isFeedReader(), 'isMobileApp' => $dd->isMobileApp(), 'isPIM' => $dd->isPIM(), 'isLibrary' => $dd->isLibrary(), 'isMediaPlayer' => $dd->isMediaPlayer(), 'isCamera' => $dd->isCamera(), 'isCarBrowser' => $dd->isCarBrowser(), 'isConsole' => $dd->isConsole(), 'isFeaturePhone' => $dd->isFeaturePhone(), 'isPhablet' => $dd->isPhablet(), 'isPortableMediaPlayer' => $dd->isPortableMediaPlayer(), 'isSmartDisplay' => $dd->isSmartDisplay(), 'isSmartphone' => $dd->isSmartphone(), 'isTablet' => $dd->isTablet(), 'isTV' => $dd->isTV(), 'isDesktop' => $dd->isDesktop(), 'isMobile' => $dd->isMobile(), 'isTouchEnabled' => $dd->isTouchEnabled()]]; return $raw; }