From df81e5c358e620efd6917e9fa2be6f372226b8b8 Mon Sep 17 00:00:00 2001 From: Andreas Fernandez <a.fernandez@scripting-base.de> Date: Fri, 20 Jan 2023 14:16:45 +0100 Subject: [PATCH] [TASK] Replace localization methods in `PageLayoutController` The class `PageLayoutController` has some custom methods to fetch data of localized pages: * `getLocalizedPageRecord()` * `getLocalizedPageTitle()` The same data can be retrieved using the standardized method `PageRepository->getPageOverlay()`, which replaces the aforementioned methods. Resolves: #99613 Releases: main, 11.5 Change-Id: I06a374411b34211ed45d57f30d142ead7c7e6fba Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/77620 Reviewed-by: Oliver Bartsch <bo@cedev.de> Tested-by: Oliver Bartsch <bo@cedev.de> Tested-by: core-ci <typo3@b13.com> --- .../Controller/PageLayoutController.php | 55 ++----------------- 1 file changed, 4 insertions(+), 51 deletions(-) diff --git a/typo3/sysext/backend/Classes/Controller/PageLayoutController.php b/typo3/sysext/backend/Classes/Controller/PageLayoutController.php index cc539391cfe5..77d02bdab9a4 100644 --- a/typo3/sysext/backend/Classes/Controller/PageLayoutController.php +++ b/typo3/sysext/backend/Classes/Controller/PageLayoutController.php @@ -539,33 +539,8 @@ class PageLayoutController */ protected function getLocalizedPageTitle(): string { - if ($this->current_sys_language > 0) { - $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class) - ->getQueryBuilderForTable('pages'); - $queryBuilder->getRestrictions() - ->removeAll() - ->add(GeneralUtility::makeInstance(DeletedRestriction::class)) - ->add(GeneralUtility::makeInstance(WorkspaceRestriction::class, (int)$this->getBackendUser()->workspace)); - $localizedPage = $queryBuilder - ->select('*') - ->from('pages') - ->where( - $queryBuilder->expr()->eq( - $GLOBALS['TCA']['pages']['ctrl']['transOrigPointerField'], - $queryBuilder->createNamedParameter($this->id, Connection::PARAM_INT) - ), - $queryBuilder->expr()->eq( - $GLOBALS['TCA']['pages']['ctrl']['languageField'], - $queryBuilder->createNamedParameter($this->current_sys_language, Connection::PARAM_INT) - ) - ) - ->setMaxResults(1) - ->executeQuery() - ->fetchAssociative(); - BackendUtility::workspaceOL('pages', $localizedPage); - return $localizedPage['title']; - } - return $this->pageinfo['title']; + $pageLocalizationRecord = $this->pageRepository->getPageOverlay($this->id, $this->current_sys_language); + return $this->current_sys_language <= 0 ? $this->pageinfo['title'] : ($pageLocalizationRecord['title'] ?? ''); } /** @@ -853,35 +828,13 @@ class PageLayoutController && $this->current_sys_language > 0 && $this->isPageEditable($this->current_sys_language) ) { - $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages'); - $queryBuilder->getRestrictions() - ->removeAll() - ->add(GeneralUtility::makeInstance(DeletedRestriction::class)) - ->add(GeneralUtility::makeInstance(WorkspaceRestriction::class, $this->getBackendUser()->workspace)); - $overlayRecord = $queryBuilder - ->select('uid') - ->from('pages') - ->where( - $queryBuilder->expr()->eq( - $GLOBALS['TCA']['pages']['ctrl']['transOrigPointerField'], - $queryBuilder->createNamedParameter($this->id, Connection::PARAM_INT) - ), - $queryBuilder->expr()->eq( - $GLOBALS['TCA']['pages']['ctrl']['languageField'], - $queryBuilder->createNamedParameter($this->current_sys_language, Connection::PARAM_INT) - ) - ) - ->setMaxResults(1) - ->executeQuery() - ->fetchAssociative(); - BackendUtility::workspaceOL('pages', $overlayRecord, $this->getBackendUser()->workspace); - // Edit button + $overlayRecord = $this->pageRepository->getPageOverlay($this->id, $this->current_sys_language); $url = (string)$this->uriBuilder->buildUriFromRoute( 'record_edit', [ 'edit' => [ 'pages' => [ - $overlayRecord['uid'] => 'edit', + $overlayRecord['_PAGES_OVERLAY_UID'] => 'edit', ], ], 'returnUrl' => $request->getAttribute('normalizedParams')->getRequestUri(), -- GitLab