2 declare(strict_types = 1);
19 use Psr\Http\Message\ServerRequestInterface;
52 $table = $this->config[
'table'];
56 'No configuration found for sitemap ' . $this->
getKey(),
61 $pids = !empty($this->config[
'pid']) ? GeneralUtility::intExplode(
',', $this->config[
'pid']) : [];
62 $lastModifiedField = $this->config[
'lastModifiedField'] ??
'tstamp';
63 $sortField = $this->config[
'sortField'] ??
'sorting';
65 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
66 ->getQueryBuilderForTable($table);
69 if (!empty(
$GLOBALS[
'TCA'][$table][
'ctrl'][
'languageField'])) {
70 $constraints[] = $queryBuilder->expr()->in(
71 $GLOBALS[
'TCA'][$table][
'ctrl'][
'languageField'],
80 $recursiveLevel = isset($this->config[
'recursive']) ? (int)$this->config[
'recursive'] : 0;
81 if ($recursiveLevel) {
83 foreach ($pids as $pid) {
84 $list = $this->cObj->getTreeList($pid, $recursiveLevel);
86 $newList = array_merge($newList, explode(
',', $list));
89 $pids = array_merge($pids, $newList);
92 $constraints[] = $queryBuilder->expr()->in(
'pid', $pids);
95 if (!empty($this->config[
'additionalWhere'])) {
99 $queryBuilder->select(
'*')
102 if (!empty($constraints)) {
103 $queryBuilder->where(
108 $rows = $queryBuilder->orderBy($sortField)
112 foreach ($rows as $row) {
115 'lastMod' => (int)$row[$lastModifiedField]
126 $pageId = $this->config[
'url'][
'pageId'] ??
$GLOBALS[
'TSFE']->id;
127 $additionalParams = [];
132 $additionalParamsString = http_build_query(
140 'parameter' => $pageId,
141 'additionalParams' => $additionalParamsString ?
'&' . $additionalParamsString :
'',
142 'forceAbsoluteUrl' => 1,
143 'useCacheHash' => $this->config[
'url'][
'useCacheHash'] ?? 0
146 $data[
'loc'] = $this->cObj->typoLink_URL($typoLinkConfig);
158 if (!empty($this->config[
'url'][
'fieldToParameterMap']) &&
159 \is_array($this->config[
'url'][
'fieldToParameterMap'])) {
160 foreach ($this->config[
'url'][
'fieldToParameterMap'] as $field => $urlPart) {
161 $additionalParams[$urlPart] = $data[$field];
165 return $additionalParams;
174 if (!empty($this->config[
'url'][
'additionalGetParameters']) &&
175 is_array($this->config[
'url'][
'additionalGetParameters'])) {
176 foreach ($this->config[
'url'][
'additionalGetParameters'] as $extension => $extensionConfig) {
177 foreach ($extensionConfig as
$key => $value) {
178 $additionalParams[$extension .
'[' .
$key .
']'] = $value;
183 return $additionalParams;
192 $context = GeneralUtility::makeInstance(Context::class);
193 return (
int)$context->getPropertyFromAspect(
'language',
'id');