setSegment('deviceBrand'); $segment->setName('DevicesDetection_DeviceBrand'); $segment->setAcceptedValues($brandList); $segment->setSqlFilter(function ($brand) use ($brandList, $brands) { if ($brand == Piwik::translate('General_Unknown')) { return ''; } $index = array_search(trim(urldecode($brand)), $brands); if ($index === false) { throw new \Exception("deviceBrand segment must be one of: $brandList"); } return $index; }); $this->addSegment($segment); } /** * @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->getBrand(); } }