/** * @param $recordConfig * @param $record * @return mixed */ private function hideRecordIfNotTranslated($recordConfig, $record) { $language = GeneralUtility::_GET('L'); if ($record['sys_language_uid'] !== '-1' && intval($language) !== 0 && intval($recordConfig['hideIfNotTranslated']) === 1) { $record = $this->pageRepository->getRecordOverlay($recordConfig['table'], $record, $language); if (intval($record['l10n_parent']) !== 0) { return $record; } return null; } return $record; }
/** * Generates a list of content objects with sectionIndex enabled * available on a specific page * * Used for menus with sectionIndex enabled * * @param string $altSortField Alternative sorting field * @param integer $pid The page id to search for sections * @throws UnexpectedValueException if the query to fetch the content elements unexpectedly fails * @return array */ protected function sectionIndex($altSortField, $pid = NULL) { $pid = (int) ($pid ?: $this->id); $basePageRow = $this->sys_page->getPage($pid); if (!is_array($basePageRow)) { return array(); } $configuration = $this->mconf['sectionIndex.']; $useColPos = 0; if (trim($configuration['useColPos']) !== '' || is_array($configuration['useColPos.'])) { $useColPos = $GLOBALS['TSFE']->cObj->stdWrap($configuration['useColPos'], $configuration['useColPos.']); $useColPos = (int) $useColPos; } $selectSetup = array('pidInList' => $pid, 'orderBy' => $altSortField, 'languageField' => 'sys_language_uid', 'where' => $useColPos >= 0 ? 'colPos=' . $useColPos : ''); if ($basePageRow['content_from_pid']) { // If the page is configured to show content from a referenced page the sectionIndex contains only contents of // the referenced page $selectSetup['pidInList'] = $basePageRow['content_from_pid']; } $resource = $this->parent_cObj->exec_getQuery('tt_content', $selectSetup); if (!$resource) { $message = 'SectionIndex: Query to fetch the content elements failed!'; throw new \UnexpectedValueException($message, 1337334849); } $result = array(); while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($resource)) { $this->sys_page->versionOL('tt_content', $row); if ($GLOBALS['TSFE']->sys_language_contentOL && $basePageRow['_PAGES_OVERLAY_LANGUAGE']) { $row = $this->sys_page->getRecordOverlay('tt_content', $row, $basePageRow['_PAGES_OVERLAY_LANGUAGE'], $GLOBALS['TSFE']->sys_language_contentOL); } if ($this->mconf['sectionIndex.']['type'] !== 'all') { $doIncludeInSectionIndex = $row['sectionIndex'] >= 1; $doHeaderCheck = $this->mconf['sectionIndex.']['type'] === 'header'; $isValidHeader = ((int) $row['header_layout'] !== 100 || !empty($this->mconf['sectionIndex.']['includeHiddenHeaders'])) && trim($row['header']) !== ''; if (!$doIncludeInSectionIndex || $doHeaderCheck && !$isValidHeader) { continue; } } if (is_array($row)) { $uid = $row['uid']; $result[$uid] = $basePageRow; $result[$uid]['title'] = $row['header']; $result[$uid]['nav_title'] = $row['header']; $result[$uid]['subtitle'] = $row['subheader']; $result[$uid]['starttime'] = $row['starttime']; $result[$uid]['endtime'] = $row['endtime']; $result[$uid]['fe_group'] = $row['fe_group']; $result[$uid]['media'] = $row['media']; $result[$uid]['header_layout'] = $row['header_layout']; $result[$uid]['bodytext'] = $row['bodytext']; $result[$uid]['image'] = $row['image']; $result[$uid]['sectionIndex_uid'] = $uid; } } $GLOBALS['TYPO3_DB']->sql_free_result($resource); return $result; }
/** * Generates a list of content objects with sectionIndex enabled * available on a specific page * * Used for menus with sectionIndex enabled * * @param string $altSortField Alternative sorting field * @param int $pid The page id to search for sections * @throws \UnexpectedValueException if the query to fetch the content elements unexpectedly fails * @return array */ protected function sectionIndex($altSortField, $pid = null) { $pid = (int) ($pid ?: $this->id); $basePageRow = $this->sys_page->getPage($pid); if (!is_array($basePageRow)) { return []; } $tsfe = $this->getTypoScriptFrontendController(); $configuration = $this->mconf['sectionIndex.']; $useColPos = 0; if (trim($configuration['useColPos']) !== '' || is_array($configuration['useColPos.'])) { $useColPos = $tsfe->cObj->stdWrap($configuration['useColPos'], $configuration['useColPos.']); $useColPos = (int) $useColPos; } $selectSetup = ['pidInList' => $pid, 'orderBy' => $altSortField, 'languageField' => 'sys_language_uid', 'where' => $useColPos >= 0 ? 'colPos=' . $useColPos : '']; if ($basePageRow['content_from_pid']) { // If the page is configured to show content from a referenced page the sectionIndex contains only contents of // the referenced page $selectSetup['pidInList'] = $basePageRow['content_from_pid']; } $statement = $this->parent_cObj->exec_getQuery('tt_content', $selectSetup); if (!$statement) { $message = 'SectionIndex: Query to fetch the content elements failed!'; throw new \UnexpectedValueException($message, 1337334849); } $result = []; while ($row = $statement->fetch()) { $this->sys_page->versionOL('tt_content', $row); if ($tsfe->sys_language_contentOL && $basePageRow['_PAGES_OVERLAY_LANGUAGE']) { $row = $this->sys_page->getRecordOverlay('tt_content', $row, $basePageRow['_PAGES_OVERLAY_LANGUAGE'], $tsfe->sys_language_contentOL); } if ($this->mconf['sectionIndex.']['type'] !== 'all') { $doIncludeInSectionIndex = $row['sectionIndex'] >= 1; $doHeaderCheck = $this->mconf['sectionIndex.']['type'] === 'header'; $isValidHeader = ((int) $row['header_layout'] !== 100 || !empty($this->mconf['sectionIndex.']['includeHiddenHeaders'])) && trim($row['header']) !== ''; if (!$doIncludeInSectionIndex || $doHeaderCheck && !$isValidHeader) { continue; } } if (is_array($row)) { $uid = $row['uid']; $result[$uid] = $basePageRow; $result[$uid]['title'] = $row['header']; $result[$uid]['nav_title'] = $row['header']; // Prevent false exclusion in filterMenuPages, thus: Always show tt_content records $result[$uid]['nav_hide'] = 0; $result[$uid]['subtitle'] = $row['subheader']; $result[$uid]['starttime'] = $row['starttime']; $result[$uid]['endtime'] = $row['endtime']; $result[$uid]['fe_group'] = $row['fe_group']; $result[$uid]['media'] = $row['media']; $result[$uid]['header_layout'] = $row['header_layout']; $result[$uid]['bodytext'] = $row['bodytext']; $result[$uid]['image'] = $row['image']; $result[$uid]['sectionIndex_uid'] = $uid; } } return $result; }