'isExcludedVisit' ); } public function isTrackerPlugin() { return true; } public function isExcludedVisit(bool &$excluded, Request $request) { $userAgent = $request->getUserAgent(); $userAgent = Common::unsanitizeInputValue($userAgent); // $deviceDetector = StaticContainer::get(DeviceDetectorFactory::class)->makeInstance($userAgent); // create new DeviceDetector with full data $deviceDetector = new DeviceDetector($userAgent); $deviceDetector->setCache(new DeviceDetectorCache(86400)); $deviceDetector->parse(); $isBot = $deviceDetector->isBot(); if ($isBot) { $request->setMetadata("BotTracking", "isBot", $deviceDetector->isBot()); $botMeta = $deviceDetector->getBot(); $request->setMetadata("BotTracking", "botName", $botMeta["name"]); $request->setMetadata("BotTracking", "botCategory", $botMeta["category"]); $request->setMetadata("BotTracking", "botProducer", $botMeta["producer"]["name"]); $excluded = false; } } }