/**
* {@inheritdoc}
*/
public function getFilteredNodes(array $filterConfig, $languageCode, $webspaceKey, $preview = false, $api = false, $exclude = [])
{
$limit = isset($filterConfig['limitResult']) ? $filterConfig['limitResult'] : null;
$initParams = ['config' => $filterConfig];
if ($exclude) {
$initParams['excluded'] = $exclude;
}
$this->queryBuilder->init($initParams);
$data = $this->queryExecutor->execute($webspaceKey, [$languageCode], $this->queryBuilder, true, -1, $limit);
if ($api) {
if (isset($filterConfig['dataSource'])) {
if ($this->webspaceManager->findWebspaceByKey($filterConfig['dataSource']) !== null) {
$node = $this->sessionManager->getContentNode($filterConfig['dataSource']);
} else {
$node = $this->sessionManager->getSession()->getNodeByIdentifier($filterConfig['dataSource']);
}
} else {
$node = $this->sessionManager->getContentNode($webspaceKey);
}
$parentNode = $this->getParentNode($node->getIdentifier(), $webspaceKey, $languageCode);
$result = $this->prepareNode($parentNode, $webspaceKey, $languageCode, 1, false);
$result['_embedded']['nodes'] = $data;
$result['total'] = count($result['_embedded']['nodes']);
} else {
$result = $data;
}
return $result;
}