protected function configureSegments() { $brands = DeviceParserAbstract::$deviceBrands; $brandList = implode(", ", $brands); $segment = new Segment(); $segment->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); }