setCategory('General_Visit'); $segment->setSegment('deviceType'); $segment->setName('DevicesDetection_DeviceType'); $segment->setAcceptedValues($deviceTypeList); $segment->setSqlFilter(function ($type) use ($deviceTypeList, $deviceTypes) { $index = array_search(strtolower(trim(urldecode($type))), $deviceTypes); if ($index === false) { throw new Exception("deviceType segment must be one of: $deviceTypeList"); } return $index; }); $this->addSegment($segment); } public function getName() { return Piwik::translate('DevicesDetection_DeviceType'); } /** * @param Request $request * @param Visitor $visitor * @param Action|null $action * @return mixed */ public function onNewVisit(Request $request, Visitor $visitor, $action) { $userAgent = $request->getUserAgent(); $parser = $this->getUAParser($userAgent); return $parser->getDevice(); } /** * @param Request $request * @param Visitor $visitor * @param Action|null $action * @return mixed */ public function onAnyGoalConversion(Request $request, Visitor $visitor, $action) { return $visitor->getVisitorColumn($this->columnName); } }