/** * @constructor */ public function __construct() { $mongo = Registry::get("MongoDB"); if (!$mongo) { $m = new MongoClient(); $mongo = $m->stats; Registry::set("MongoDB", $mongo); } $parser = Registry::get("UAParser"); if (!$parser) { $parser = UAParser\Parser::create(); Registry::set("UAParser", $parser); } }
/** * Create a new BrowserInfo object for the given user agent string. * Instances may not be created directly, use the static newFromContext method instead. * * @param string $userAgent */ protected function parseUserAgent($userAgent) { /** * A ua-parser object looks like this (simplified version of the actual object) * @source https://github.com/tobie/ua-parser * * ua->family: Chrome * ua->major: 24 * ua->minor: 0 * ua->patch: 1312 * os->family: Mac OS X * os->major: 10 * os->minor: 8 * os->patch: 2 * device->family: * toFullString: Chrome 24.0.1312/Mac OS X 10.8.2 */ $parser = UAParser\Parser::create(); $parsed = $parser->parse($userAgent); $uaData = new stdClass(); $uaData->browserFamily = $parsed->ua->family; $uaData->browserMajor = $parsed->ua->major; $uaData->browserMinor = $parsed->ua->minor; $uaData->browserPatch = $parsed->ua->patch; $uaData->osFamily = $parsed->os->family; $uaData->osMajor = $parsed->os->major; $uaData->osMinor = $parsed->os->minor; $uaData->osPatch = $parsed->os->patch; $uaData->deviceFamily = $parsed->device->family; $uaData->deviceMajor = null; // deprecated $uaData->deviceMinor = null; // deprecated $uaData->displayInfo = self::getDisplayInfo($uaData); $this->rawUserAgent = $userAgent; $this->uaData = $uaData; return $this; }