[BUGFIX] Versioning: Fetch language-field if table localizable
authorJozef Spisiak <jozef@pixelant.se>
Mon, 21 Nov 2011 00:22:28 +0000 (01:22 +0100)
committerStefan Neufeind <typo3.neufeind@speedpartner.de>
Mon, 21 Nov 2011 23:49:25 +0000 (00:49 +0100)
If a table is localizable also fetch the language-field.
This is needed for checks with language-access-rights.

Change-Id: Id1f44f0e9708c76cfc859418206ed02bccc2d24a
Fixes: #29208
Releases: 4.5, 4.6, 4.7
Reviewed-on: http://review.typo3.org/6757
Reviewed-by: Stefan Neufeind
Tested-by: Stefan Neufeind
typo3/sysext/workspaces/Classes/Service/Workspaces.php

index 8365b5b..4a59143 100644 (file)
@@ -245,6 +245,9 @@ class Tx_Workspaces_Service_Workspaces implements t3lib_Singleton {
        protected function selectAllVersionsFromPages($table, $pageList, $wsid, $filter, $stage) {
 
                $fields = 'A.uid, A.t3ver_oid, A.t3ver_stage, ' . ($table==='pages' ? ' A.t3ver_swapmode,' : '') . 'B.pid AS wspid, B.pid AS livepid';
+               if (t3lib_BEfunc::isTableLocalizable($table)) {
+                       $fields .= ', A.' . $GLOBALS['TCA'][$table]['ctrl']['languageField'];
+               }
                $from = $table . ' A,' . $table . ' B';
 
                        // Table A is the offline version and pid=-1 defines offline
@@ -473,6 +476,8 @@ class Tx_Workspaces_Service_Workspaces implements t3lib_Singleton {
 
                if (t3lib_BEfunc::isTableLocalizable($table)) {
                        $languageUid = $record[$GLOBALS['TCA'][$table]['ctrl']['languageField']];
+               } else {
+                       return TRUE;
                }
 
                return $GLOBALS['BE_USER']->checkLanguageAccess($languageUid);