storedSegmentService = $storedSegmentService; parent::__construct($logTablesProvider); } public function getSelectQueryString(SegmentExpression $segmentExpression, $select, $from, $where, $bind, $groupBy, $orderBy, $limit) { $result = parent::getSelectQueryString($segmentExpression, $select, $from, $where, $bind, $groupBy, $orderBy, $limit); $prefixParts = array(); if (SettingsServer::isArchivePhpTriggered()) { $prefixParts[] = 'trigger = CronArchive'; } $idSegments = $this->getSegmentIdOfExpression($segmentExpression); if (!empty($idSegments)) { $prefixParts[] = "idSegments = [" . implode(', ', $idSegments) . "]"; } if (!empty($prefixParts)) { $result['sql'] = "/* " . implode(', ', $prefixParts) . " */\n" . $result['sql']; } return $result; } private function getSegmentIdOfExpression(SegmentExpression $segmentExpression) { $allSegments = $this->storedSegmentService->getAllSegmentsAndIgnoreVisibility(); $idSegments = array(); foreach ($allSegments as $segment) { if ($segmentExpression->getSegmentDefinition() == $segment['definition']) { $idSegments[] = $segment['idsegment']; } } return $idSegments; } }