[BUGFIX] Remove t3ver_swapmode code blocks
authorOliver Hader <oliver@typo3.org>
Tue, 3 Jul 2012 19:41:37 +0000 (21:41 +0200)
committerOliver Hader <oliver.hader@typo3.org>
Wed, 4 Jul 2012 08:17:51 +0000 (10:17 +0200)
The different ways of versioning (element, page, branch) have
been defined to element versioning some TYPO3 version ago. With
TYPO3 4.7, those settings, especially the handling of the field
t3ver_swapmode has been removed from t3lib_TCEmain.

Since the default value of t3ver_swapmode is not -1 anymore,
but 0 instead, this will lead to inconsistent side-effects.

The solution is to remove all occurrences.

Change-Id: Ie729287cac07d6e5d3d88a23d1291f4d701b8ea4
Fixes: #38608
Releases: 6.0, 4.7
Reviewed-on: http://review.typo3.org/12553
Reviewed-by: Georg Ringer
Tested-by: Georg Ringer
Reviewed-by: Oliver Hader
Tested-by: Oliver Hader
15 files changed:
t3lib/class.t3lib_admin.php
t3lib/class.t3lib_befunc.php
t3lib/class.t3lib_browsetree.php
t3lib/class.t3lib_page.php
t3lib/class.t3lib_pagetree.php
t3lib/class.t3lib_tcemain.php
t3lib/class.t3lib_userauthgroup.php
t3lib/stddb/tables.sql
typo3/class.db_list.inc
typo3/class.db_list_extra.inc
typo3/sysext/cms/classes/class.tx_cms_backendlayout.php
typo3/sysext/cms/layout/class.tx_cms_layout.php
typo3/sysext/cms/tslib/class.tslib_fe.php
typo3/sysext/lowlevel/class.tx_lowlevel_cleaner_core.php
typo3/sysext/recycler/classes/helper/class.tx_recycler_helper.php

index 6347bed..8c05a8e 100644 (file)
@@ -111,7 +111,7 @@ class t3lib_admin {
 
                if ($versions) {
                        $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
-                               'uid,title,doktype,deleted,t3ver_wsid,t3ver_id,t3ver_count,t3ver_swapmode' . (t3lib_extMgm::isLoaded('cms') ? ',hidden' : ''),
+                               'uid,title,doktype,deleted,t3ver_wsid,t3ver_id,t3ver_count' . (t3lib_extMgm::isLoaded('cms') ? ',hidden' : ''),
                                'pages',
                                'pid=-1 AND t3ver_oid=' . intval($theID) . ' ' . ((!$this->genTree_includeDeleted) ? 'AND deleted=0' : '') . $this->perms_clause,
                                '',
index a21c583..f176121 100644 (file)
@@ -4003,34 +4003,6 @@ final class t3lib_BEfunc {
        }
 
        /**
-        * Will fetch the rootline for the pid, then check if anywhere in the rootline there is a branch point and if so everything is allowed of course.
-        * Alternatively; if the page of the PID itself is a version and swapmode is zero (page+content) then tables from versioning_followPages are allowed as well.
-        *
-        * @param       integer         Page id inside of which you want to edit/create/delete something.
-        * @param       string          Table name you are checking for. If you don't give the table name ONLY "branch" types are found and returned TRUE. Specifying table you might also get a positive response if the pid is a "page" versioning type AND the table has "versioning_followPages" set.
-        * @param       boolean         If set, the keyword "branchpoint" or "first" is not returned by rather the "t3ver_stage" value of the branch-point.
-        * @return      mixed           Returns either "branchpoint" (if branch) or "first" (if page) or FALSE if nothing. Alternatively, it returns the value of "t3ver_stage" for the branchpoint (if any)
-        * @deprecated since TYPO3 4.4, will be removed in TYPO3 4.7, as branch versioning is not supported anymore
-        */
-       public static function isPidInVersionizedBranch($pid, $table = '', $returnStage = FALSE) {
-               t3lib_div::logDeprecatedFunction();
-               $rl = self::BEgetRootLine($pid);
-               $c = 0;
-
-               foreach ($rl as $rec) {
-                       if ($rec['_ORIG_pid'] == -1) {
-                                       // In any case: is it a branchpoint, then OK...
-                               if ($rec['t3ver_swapmode'] > 0) {
-                                       return $returnStage ? (int) $rec['t3ver_stage'] : 'branchpoint'; // OK, we are in a versionized branch
-                               } elseif ($c == 0 && $rec['t3ver_swapmode'] == 0 && $table && $GLOBALS['TCA'][$table]['ctrl']['versioning_followPages']) { // First level: So $table must be versioning_followPages
-                                       return $returnStage ? (int) $rec['t3ver_stage'] : 'first'; // OK, we are in a versionized branch
-                               }
-                       }
-                       $c++;
-               }
-       }
-
-       /**
         * Will return where clause de-selecting new(/deleted)-versions from other workspaces.
         * If in live-workspace, don't show "MOVE-TO-PLACEHOLDERS" records if versioningWS is 2 (allows moving)
         *
@@ -4488,4 +4460,4 @@ final class t3lib_BEfunc {
        }
 }
 
-?>
\ No newline at end of file
+?>
index 7833523..ae2fe1e 100644 (file)
@@ -80,7 +80,7 @@ class t3lib_browseTree extends t3lib_treeView {
 
                $this->fieldArray = array_merge(
                        $this->fieldArray,
-                       array('doktype', 'php_tree_stop', 't3ver_id', 't3ver_state', 't3ver_wsid', 't3ver_swapmode', 't3ver_state', 't3ver_move_id')
+                       array('doktype', 'php_tree_stop', 't3ver_id', 't3ver_state', 't3ver_wsid', 't3ver_state', 't3ver_move_id')
                );
                if (t3lib_extMgm::isLoaded('cms')) {
                        $this->fieldArray = array_merge(
index 4136c14..5f0e22c 100644 (file)
@@ -586,7 +586,7 @@ class t3lib_pageSelect {
                }
 
                        // Initialize:
-               $selFields = t3lib_div::uniqueList('pid,uid,t3ver_oid,t3ver_wsid,t3ver_state,t3ver_swapmode,title,alias,nav_title,media,layout,hidden,starttime,endtime,fe_group,extendToSubpages,doktype,TSconfig,storage_pid,is_siteroot,mount_pid,mount_pid_ol,fe_login_mode,backend_layout_next_level,' . $GLOBALS['TYPO3_CONF_VARS']['FE']['addRootLineFields']);
+               $selFields = t3lib_div::uniqueList('pid,uid,t3ver_oid,t3ver_wsid,t3ver_state,title,alias,nav_title,media,layout,hidden,starttime,endtime,fe_group,extendToSubpages,doktype,TSconfig,storage_pid,is_siteroot,mount_pid,mount_pid_ol,fe_login_mode,backend_layout_next_level,' . $GLOBALS['TYPO3_CONF_VARS']['FE']['addRootLineFields']);
                $this->error_getRootLine = '';
                $this->error_getRootLine_failPid = 0;
 
@@ -1389,4 +1389,4 @@ class t3lib_pageSelect {
        }
 }
 
-?>
\ No newline at end of file
+?>
index 9406455..c2c6270 100644 (file)
@@ -50,7 +50,6 @@ class t3lib_pageTree extends t3lib_treeView {
                'php_tree_stop',
                't3ver_id',
                't3ver_state',
-               't3ver_swapmode'
        );
        var $defaultList = 'uid,pid,tstamp,sorting,deleted,perms_userid,perms_groupid,perms_user,perms_group,perms_everybody,crdate,cruser_id';
        var $setRecs = 0;
index 9675f44..b544074 100644 (file)
@@ -992,7 +992,6 @@ class t3lib_TCEmain {
                                                case 't3ver_id':
                                                case 't3ver_wsid':
                                                case 't3ver_state':
-                                               case 't3ver_swapmode':
                                                case 't3ver_count':
                                                case 't3ver_stage':
                                                case 't3ver_tstamp':
@@ -7380,4 +7379,4 @@ class t3lib_TCEmain {
                return $elements;
        }
 }
-?>
\ No newline at end of file
+?>
index c200906..d4c1338 100644 (file)
@@ -817,8 +817,7 @@ abstract class t3lib_userAuthGroup extends t3lib_userAuth {
                        && !$this->workspaceRec['disable_autocreate'] // Auto-creation must not be disabled.
                        && $GLOBALS['TCA'][$table]['ctrl']['versioningWS'] // Table must be versionizable
                        && $recpid >= 0 // The PID of the record must NOT be -1 or less (would indicate that it already was a version!)
-                       && !t3lib_BEfunc::getWorkspaceVersionOfRecord($this->workspace, $table, $id, 'uid') // There must be no existing version of this record in workspace.
-                       && !t3lib_BEfunc::isPidInVersionizedBranch($recpid, $table)) { // PID must NOT be in a versionized branch either
+                       && !t3lib_BEfunc::getWorkspaceVersionOfRecord($this->workspace, $table, $id, 'uid')) { // There must be no existing version of this record in workspace.
                        return TRUE;
                } elseif ($this->workspaceRec['disable_autocreate']) {
                        t3lib_div::deprecationLog('Usage of disable_autocreate feature is deprecated since 4.5.');
@@ -2136,4 +2135,4 @@ This is a dump of the failures:
        }
 }
 
-?>
\ No newline at end of file
+?>
index cc084e7..f11019d 100644 (file)
@@ -118,7 +118,6 @@ CREATE TABLE pages (
   t3ver_stage int(11) DEFAULT '0' NOT NULL,
   t3ver_count int(11) DEFAULT '0' NOT NULL,
   t3ver_tstamp int(11) DEFAULT '0' NOT NULL,
-  t3ver_swapmode tinyint(4) DEFAULT '0' NOT NULL,
   t3ver_move_id int(11) DEFAULT '0' NOT NULL,
   t3_origuid int(11) DEFAULT '0' NOT NULL,
   tstamp int(11) unsigned DEFAULT '0' NOT NULL,
index 76cd0a1..07ec34e 100644 (file)
@@ -292,12 +292,7 @@ class recordList extends t3lib_recordList {
 
                                        // Find ID to use (might be different for "versioning_followPages" tables)
                                if (intval($this->searchLevels) == 0) {
-                                       if ($GLOBALS['TCA'][$tableName]['ctrl']['versioning_followPages'] && $this->pageRecord['_ORIG_pid'] == -1
-                                               && $this->pageRecord['t3ver_swapmode'] == 0) {
-                                               $this->pidSelect = 'pid='.intval($this->pageRecord['_ORIG_uid']);
-                                       } else {
-                                               $this->pidSelect = 'pid='.intval($this->id);
-                                       }
+                                       $this->pidSelect = 'pid=' . intval($this->id);
                                }
 
                                        // Finally, render the list:
@@ -834,9 +829,6 @@ class recordList extends t3lib_recordList {
                                                $fieldListArr[] = 't3ver_id';
                                                $fieldListArr[] = 't3ver_state';
                                                $fieldListArr[] = 't3ver_wsid';
-                                               if ($table === 'pages') {
-                                                       $fieldListArr[] = 't3ver_swapmode';
-                                               }
                                        }
                                }
                        } else {
@@ -902,4 +894,4 @@ class recordList extends t3lib_recordList {
                }
        }
 }
-?>
\ No newline at end of file
+?>
index 9d22426..94d1dd1 100644 (file)
@@ -312,8 +312,6 @@ class localRecordList extends recordList {
                        $selectFields[] = 't3ver_id';
                        $selectFields[] = 't3ver_state';
                        $selectFields[] = 't3ver_wsid';
-                               // Filtered out when pages in makeFieldList()
-                       $selectFields[] = 't3ver_swapmode';
                }
                if ($l10nEnabled) {
                        $selectFields[] = $GLOBALS['TCA'][$table]['ctrl']['languageField'];
@@ -1844,4 +1842,4 @@ class localRecordList extends recordList {
                exit;
        }
 }
-?>
\ No newline at end of file
+?>
index bbe61fc..98bfbbd 100644 (file)
@@ -113,8 +113,8 @@ class tx_cms_BackendLayout {
 
                for ($i = count($rootline); $i > 0; $i--) {
                        $page = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow(
-                                       // pid and t3ver_swapmode needed here for workspaceOL()
-                               'uid, pid, t3ver_swapmode, backend_layout, backend_layout_next_level',
+                                       // pid is needed here for workspaceOL()
+                               'uid, pid, backend_layout, backend_layout_next_level',
                                'pages',
                                'uid=' . intval($rootline[$i]['uid'])
                        );
index 0420a0f..8f4abea 100755 (executable)
@@ -324,8 +324,8 @@ class tx_cms_layout extends recordList {
         * @return mixed Uid of the backend layout record or NULL if no layout should be used
         */
        function getSelectedBackendLayoutUid($id) {
-                       // uid, pid, t3ver_swapmode needed for workspaceOL()
-               $page = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow('uid, pid, t3ver_swapmode, backend_layout', 'pages', 'uid=' . $id);
+                       // uid and pid are needed for workspaceOL()
+               $page = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow('uid, pid, backend_layout', 'pages', 'uid=' . $id);
                t3lib_BEfunc::workspaceOL('pages', $page);
 
                $backendLayoutUid = intval($page['backend_layout']);
@@ -2239,4 +2239,4 @@ class tx_cms_layout extends recordList {
                return strip_tags($content);
        }
 }
-?>
\ No newline at end of file
+?>
index bb004b4..fd2b04c 100644 (file)
@@ -858,15 +858,6 @@ class tslib_fe {
                        // Make sure it's an integer
                $this->type = intval($this->type);
 
-                       // Look for alternative content PID if page is under version preview:
-               if ($this->fePreview) {
-                               // Current page must have been an offline version and have swapmode set to 0:
-                       if ($this->page['_ORIG_pid'] == -1 && $this->page['t3ver_swapmode'] == 0) {
-                                       // Setting contentPid here for preview might not be completely correct to do. Strictly the "_ORIG_uid" value should be used for tables where "versioning_followPages" is set and for others not. However this is a working quick-fix to display content elements at least!
-                               $this->contentPid = $this->page['_ORIG_uid'];
-                       }
-               }
-
                        // Call post processing function for id determination:
                if (is_array($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['determineId-PostProc'])) {
                        $_params = array('pObj' => &$this);
index fd8ac6d..c7014f0 100644 (file)
@@ -359,11 +359,12 @@ class tx_lowlevel_cleaner_core extends t3lib_cli {
         * @param integer $depth Depth
         * @param integer $echoLevel Echo Level
         * @param string $callBack Call back function (from this class or subclass)
-        * @param string $versionSwapmode DON'T set from outside, internal. (indicates we are inside a version of a page)
+        * @param string $versionSwapmode DON'T set from outside, internal. (indicates we are inside a version of a page) - will be "SWAPMODE:-1" or empty
         * @param integer $rootIsVersion DON'T set from outside, internal. (1: Indicates that rootID is a version of a page, 2: ...that it is even a version of a version (which triggers a warning!)
         * @param string $accumulatedPath Internal string that accumulates the path
         * @return void
         * @access private
+        * @todo $versionSwapmode needs to be cleaned up, since page and branch version (0, 1) does not exist anymore
         */
        function genTree_traverse($rootID, $depth, $echoLevel = 0, $callBack = '', $versionSwapmode = '', $rootIsVersion = 0, $accumulatedPath = '') {
 
@@ -567,11 +568,11 @@ class tx_lowlevel_cleaner_core extends t3lib_cli {
 
                                // Add any versions of pages
                        if ($rootID > 0 && $this->genTree_traverseVersions) {
-                               $versions = t3lib_BEfunc::selectVersionsOfRecord('pages', $rootID, 'uid,t3ver_oid,t3ver_wsid,t3ver_count,t3ver_swapmode', 0, TRUE);
+                               $versions = t3lib_BEfunc::selectVersionsOfRecord('pages', $rootID, 'uid,t3ver_oid,t3ver_wsid,t3ver_count', 0, TRUE);
                                if (is_array($versions)) {
                                        foreach ($versions as $verRec) {
                                                if (!$verRec['_CURRENT_VERSION']) {
-                                                       $this->genTree_traverse($verRec['uid'], $depth, $echoLevel, $callBack, 'SWAPMODE:'.t3lib_utility_Math::forceIntegerInRange($verRec['t3ver_swapmode'], -1, 1), $versionSwapmode?2:1, $accumulatedPath.' [#OFFLINE VERSION: WS#'.$verRec['t3ver_wsid'].'/Cnt:'.$verRec['t3ver_count'].']');
+                                                       $this->genTree_traverse($verRec['uid'], $depth, $echoLevel, $callBack, 'SWAPMODE:-1', ($versionSwapmode ? 2 : 1), $accumulatedPath . ' [#OFFLINE VERSION: WS#' . $verRec['t3ver_wsid'] . '/Cnt:' . $verRec['t3ver_count'] . ']');
                                                }
                                        }
                                }
index 17b684b..ab5b5a4 100644 (file)
@@ -92,7 +92,7 @@ class tx_recycler_helper {
                while ($uid != 0 && $loopCheck > 0) {
                        $loopCheck--;
                        $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
-                               'uid,pid,title,deleted,t3ver_oid,t3ver_wsid,t3ver_swapmode',
+                               'uid,pid,title,deleted,t3ver_oid,t3ver_wsid',
                                'pages',
                                'uid=' . intval($uid) . (strlen(trim($clause)) ? ' AND ' . $clause : '')
                        );
@@ -105,9 +105,6 @@ class tx_recycler_helper {
                                if (is_array($row)) {
                                        t3lib_BEfunc::fixVersioningPid('pages', $row);
 
-                                       if ($row['_ORIG_pid'] && $row['t3ver_swapmode'] > 0) {  // Branch points
-                                               $output = ' [#VEP#]' . $output;         // Adding visual token - Versioning Entry Point - that tells that THIS position was where the versionized branch got connected to the main tree. I will have to find a better name or something...
-                                       }
                                        $uid = $row['pid'];
                                        $output = '/' . htmlspecialchars(t3lib_div::fixed_lgd_cs($row['title'], $titleLimit)) . $output;