requestProcessors = $requestProcessors->getRequestProcessors(); $this->botRequestProcessors = $requestProcessors->getBotRequestProcessors(); $this->logger = $logger; } public function setRequest(Request $request) { $this->request = $request; } public function handle() { $this->checkSiteExists($this->request); /** * For BC reasons we iterate over all visit request processors as well, to ensure a possible request manipulation is applied * For Matomo 6 we should remove that and ensure plugins that also should manipulate bot requests implement a BotRequestProcessor for it * @deprecated */ foreach ($this->requestProcessors as $processor) { $this->logger->debug("Executing " . get_class($processor) . "::manipulateRequest()..."); $processor->manipulateRequest($this->request); } foreach ($this->botRequestProcessors as $processor) { $this->logger->debug("Executing " . get_class($processor) . "::manipulateRequest()..."); $processor->manipulateRequest($this->request); } $this->validateRequest($this->request); $wasHandled = false; foreach ($this->botRequestProcessors as $processor) { $this->logger->debug("Executing " . get_class($processor) . "::handleRequest()..."); $wasHandled |= $processor->handleRequest($this->request); } if ($wasHandled) { $this->markArchivedReportsAsInvalidIfArchiveAlreadyFinished($this->request); } } }