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) . "]"; } $select = 'SELECT'; if (!empty($prefixParts) && 0 === strpos(trim($result['sql']), $select)) { $result['sql'] = trim($result['sql']); $result['sql'] = 'SELECT /* ' . implode(', ', $prefixParts) . ' */' . substr($result['sql'], strlen($select)); } 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; } }