/** * @param string $event * @param array $properties * * @internal param array $data */ public function track($event, $properties = []) { $browserInfo = new Browser(); $osInfo = new Os(); $deviceInfo = new Device(); $browserVersion = trim(str_replace('unknown', '', $browserInfo->getName() . ' ' . $browserInfo->getVersion())); $osVersion = trim(str_replace('unknown', '', $osInfo->getName() . ' ' . $osInfo->getVersion())); $hardwareVersion = trim(str_replace('unknown', '', $deviceInfo->getName())); $data = ['Url' => $this->request->getUri(), 'Operating System' => $osVersion, 'Hardware' => $hardwareVersion, '$browser' => $browserVersion, 'Referrer' => $this->request->header('referer'), '$referring_domain' => $this->request->header('referer') ? parse_url($this->request->header('referer'))['host'] : null, 'ip' => $this->request->ip()]; $data = array_filter($data); $properties = array_filter($properties); if (!array_key_exists('$browser', $data) && $browserInfo->isRobot()) { $data['$browser'] = 'Robot'; } parent::track($event, $data + $properties); }
/** * * @param Model\UserAgent $device * @param BrowserDetector\Os $osRaw * @param BrowserDetector\Device $deviceRaw */ private function hydrateDevice(Model\Device $device, BrowserDetector\Os $osRaw, BrowserDetector\Device $deviceRaw) { $device->setModel($this->getRealResult($deviceRaw->getName(), 'device', 'model')); if ($osRaw->isMobile() === true) { $device->setIsMobile(true); } }