private function getSuggestedValuesForSegmentName($idSite, $segment, $maxSuggestionsToReturn)
{
$startDate = Date::now()->subDay(60)->toString();
$requestLastVisits = "method=Live.getLastVisitsDetails\n &idSite={$idSite}\n &period=range\n &date={$startDate},today\n &format=original\n &serialize=0\n &flat=1";
$segmentName = $segment['segment'];
// Select non empty fields only
// Note: this optimization has only a very minor impact
$requestLastVisits .= "&segment={$segmentName}" . urlencode('!=');
// By default Live fetches all actions for all visitors, but we'd rather do this only when required
if ($this->doesSegmentNeedActionsData($segmentName)) {
$requestLastVisits .= "&filter_limit=400";
} else {
$requestLastVisits .= "&doNotFetchActions=1";
$requestLastVisits .= "&filter_limit=800";
}
$request = new Request($requestLastVisits);
$table = $request->process();
if (empty($table)) {
throw new \Exception("There was no data to suggest for {$segmentName}");
}
if (isset($segment['suggestedValuesCallback']) && $this->doesSuggestedValuesCallbackNeedData($segment['suggestedValuesCallback'])) {
$values = call_user_func($segment['suggestedValuesCallback'], $idSite, $maxSuggestionsToReturn, $table);
} else {
$values = $this->getSegmentValuesFromVisitorLog($segmentName, $table);
}
return $values;
}