Commit 80a38d73 authored by Benni Mack's avatar Benni Mack Committed by Anja Leichsenring
Browse files

[!!!][TASK] Remove t3ver_count and t3ver_tstamp db fields

The patch drops handling and existence of two further
workspaces related db fields:

* t3ver_tstamp has been occassionally set to 'now' when
records in a workspaces were edited. However, the field
was never displayed in the backend and is of little use
since it only holds only a 'last' value. A change
history on workspace records is available through the
'info' button in the workspace module. This is powered
by sys_history and shows modifications with date/time.

* t3ver_count is also never rendered in the backend. It
has been used in the (non-default) 'swap' workspace actions
where live records become the new workspace records. The
field was then incremented by one. The loose wording around
that is, it's an 'archived' record. However, if swapping a
second time, the workspace record does not count two as one
would expect, but still one. Only after another swap, the
workspace record would have the value two in this field.
Together with the fact this field has never been shown/used,
the weird behavior, and that swapping is an uncommon case
that needs to be explicitely enabled and used, the field
is dropped now.

Resolves: #89137
Releases: master
Change-Id: I7cdfe6e867c14462395d7398123b14464835c1bf
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/65145


Tested-by: default avatarTYPO3com <noreply@typo3.com>
Tested-by: Christian Kuhn's avatarChristian Kuhn <lolli@schwarzbu.ch>
Tested-by: Anja Leichsenring's avatarAnja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Christian Kuhn's avatarChristian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Anja Leichsenring's avatarAnja Leichsenring <aleichsenring@ab-softlab.de>
parent 0970231d
......@@ -40,8 +40,6 @@ class InlineOverrideChildTca implements FormDataProviderInterface
't3ver_wsid',
't3ver_state',
't3ver_stage',
't3ver_count',
't3ver_tstamp',
't3ver_move_id',
];
......
......@@ -65,7 +65,6 @@ class PageTreeRepository
't3ver_wsid',
't3ver_state',
't3ver_stage',
't3ver_tstamp',
't3ver_move_id',
'perms_userid',
'perms_user',
......
......@@ -2095,7 +2095,6 @@ class BackendUtility
if (static::isTableWorkspaceEnabled($table)) {
$fields[] = $prefix . 't3ver_state';
$fields[] = $prefix . 't3ver_wsid';
$fields[] = $prefix . 't3ver_count';
}
if (!empty($GLOBALS['TCA'][$table]['ctrl']['selicon_field'])) {
$fields[] = $prefix . $GLOBALS['TCA'][$table]['ctrl']['selicon_field'];
......
......@@ -556,7 +556,7 @@ class BackendUtilityTest extends UnitTestCase
'versioningWS' => true
]
],
'expectedFields' => 'uid,t3ver_state,t3ver_wsid,t3ver_count'
'expectedFields' => 'uid,t3ver_state,t3ver_wsid'
],
'selicon_field set' => [
'table' => 'test_table',
......
......@@ -1434,9 +1434,7 @@ class DataHandler implements LoggerAwareInterface
case 't3ver_oid':
case 't3ver_wsid':
case 't3ver_state':
case 't3ver_count':
case 't3ver_stage':
case 't3ver_tstamp':
break;
case 'l10n_state':
$fieldArray[$field] = $fieldValue;
......@@ -3235,7 +3233,7 @@ class DataHandler implements LoggerAwareInterface
}
$data = [];
$nonFields = array_unique(GeneralUtility::trimExplode(',', 'uid,perms_userid,perms_groupid,perms_user,perms_group,perms_everybody,t3ver_oid,t3ver_wsid,t3ver_state,t3ver_count,t3ver_stage,t3ver_tstamp,' . $excludeFields, true));
$nonFields = array_unique(GeneralUtility::trimExplode(',', 'uid,perms_userid,perms_groupid,perms_user,perms_group,perms_everybody,t3ver_oid,t3ver_wsid,t3ver_state,t3ver_stage,' . $excludeFields, true));
BackendUtility::workspaceOL($table, $row, $this->BE_USER->workspace);
$row = BackendUtility::purgeComputedPropertiesFromRecord($row);
......@@ -3538,7 +3536,7 @@ class DataHandler implements LoggerAwareInterface
}
// Set up fields which should not be processed. They are still written - just passed through no-questions-asked!
$nonFields = ['uid', 'pid', 't3ver_oid', 't3ver_wsid', 't3ver_state', 't3ver_count', 't3ver_stage', 't3ver_tstamp', 'perms_userid', 'perms_groupid', 'perms_user', 'perms_group', 'perms_everybody'];
$nonFields = ['uid', 'pid', 't3ver_oid', 't3ver_wsid', 't3ver_state', 't3ver_stage', 'perms_userid', 'perms_groupid', 'perms_user', 'perms_group', 'perms_everybody'];
// Merge in override array.
$row = array_merge($row, $overrideArray);
......@@ -5329,9 +5327,7 @@ class DataHandler implements LoggerAwareInterface
't3ver_oid' => $id,
't3ver_wsid' => $this->BE_USER->workspace,
't3ver_state' => (string)($delete ? new VersionState(VersionState::DELETE_PLACEHOLDER) : new VersionState(VersionState::DEFAULT_STATE)),
't3ver_count' => 0,
't3ver_stage' => 0,
't3ver_tstamp' => 0
];
if ($GLOBALS['TCA'][$table]['ctrl']['editlock']) {
$overrideArray[$GLOBALS['TCA'][$table]['ctrl']['editlock']] = 0;
......
......@@ -421,38 +421,6 @@ class DefaultTcaSchema
);
}
// workspaces t3ver_count column
if (!empty($tableDefinition['ctrl']['versioningWS'])
&& (bool)$tableDefinition['ctrl']['versioningWS'] === true
&& !$this->isColumnDefinedForTable($tables, $tableName, 't3ver_count')
) {
$tables[$tablePosition]->addColumn(
$this->quote('t3ver_count'),
'integer',
[
'default' => 0,
'notnull' => true,
'unsigned' => true,
]
);
}
// workspaces t3ver_tstamp column
if (!empty($tableDefinition['ctrl']['versioningWS'])
&& (bool)$tableDefinition['ctrl']['versioningWS'] === true
&& !$this->isColumnDefinedForTable($tables, $tableName, 't3ver_tstamp')
) {
$tables[$tablePosition]->addColumn(
$this->quote('t3ver_tstamp'),
'integer',
[
'default' => 0,
'notnull' => true,
'unsigned' => true,
]
);
}
// workspaces t3ver_move_id column
if (!empty($tableDefinition['ctrl']['versioningWS'])
&& (bool)$tableDefinition['ctrl']['versioningWS'] === true
......@@ -555,8 +523,6 @@ class DefaultTcaSchema
$prioritizedFieldNames[] = 't3ver_state';
$prioritizedFieldNames[] = 't3ver_stage';
$prioritizedFieldNames[] = 't3ver_move_id';
$prioritizedFieldNames[] = 't3ver_count';
$prioritizedFieldNames[] = 't3ver_tstamp';
}
return $prioritizedFieldNames;
......
.. include:: ../../Includes.txt
=======================================================================
Breaking: #89137 - Database fields t3ver_tstamp and t3ver_count dropped
=======================================================================
See :issue:`89137`
Description
===========
The two workspace related database fields :sql:`t3ver_tstamp` and :sql:`t3ver_count` together
with their handling have been dropped from all workspace aware database tables.
Impact
======
The core did not show these fields to the user. It's very unlikely extensions made use of these
fields. Admins upgrading to core v11 can usually assume zero impact for their site functionality.
Affected Installations
======================
All instances are affected by this change, the database analyzer will propose to drop the fields
from a lot of tables including :sql:`pages` and :sql:`tt_content`.
Migration
=========
Use the database analyzer during upgrade to drop the fields from affected database tables.
.. index:: Database, NotScanned, ext:workspaces
......@@ -743,48 +743,6 @@ class DefaultTcaSchemaTest extends UnitTestCase
self::assertEquals($expectedColumn, $result[0]->getColumn('t3ver_stage'));
}
/**
* @test
*/
public function enrichAddsT3verCount()
{
$GLOBALS['TCA']['aTable']['ctrl'] = [
'versioningWS' => true,
];
$result = $this->subject->enrich([$this->defaultTable]);
$expectedColumn = new Column(
'`t3ver_count`',
Type::getType('integer'),
[
'default' => 0,
'notnull' => true,
'unsigned' => true,
]
);
self::assertEquals($expectedColumn, $result[0]->getColumn('t3ver_count'));
}
/**
* @test
*/
public function enrichAddsT3verTstamp()
{
$GLOBALS['TCA']['aTable']['ctrl'] = [
'versioningWS' => true,
];
$result = $this->subject->enrich([$this->defaultTable]);
$expectedColumn = new Column(
'`t3ver_tstamp`',
Type::getType('integer'),
[
'default' => 0,
'notnull' => true,
'unsigned' => true,
]
);
self::assertEquals($expectedColumn, $result[0]->getColumn('t3ver_tstamp'));
}
/**
* @test
*/
......
......@@ -155,7 +155,7 @@ class CleanFlexFormsCommand extends Command
$versions = BackendUtility::selectVersionsOfRecord(
$tableName,
$rowSub['uid'],
'uid,t3ver_wsid,t3ver_count',
'uid,t3ver_wsid',
null,
true
);
......@@ -195,7 +195,7 @@ class CleanFlexFormsCommand extends Command
}
// Add any versions of pages
if ($pageId > 0) {
$versions = BackendUtility::selectVersionsOfRecord('pages', $pageId, 'uid,t3ver_oid,t3ver_wsid,t3ver_count', null, true);
$versions = BackendUtility::selectVersionsOfRecord('pages', $pageId, 'uid,t3ver_oid,t3ver_wsid', null, true);
if (is_array($versions)) {
foreach ($versions as $verRec) {
if (!$verRec['_CURRENT_VERSION']) {
......
......@@ -193,7 +193,7 @@ class DeletedRecordsCommand extends Command
$versions = BackendUtility::selectVersionsOfRecord(
$tableName,
$recordOnPage['uid'],
'uid,t3ver_wsid,t3ver_count,' . $deletedField,
'uid,t3ver_wsid,' . $deletedField,
null,
true
) ?: [];
......@@ -230,7 +230,7 @@ class DeletedRecordsCommand extends Command
$versions = BackendUtility::selectVersionsOfRecord(
'pages',
$pageId,
'uid,t3ver_oid,t3ver_wsid,t3ver_count',
'uid,t3ver_oid,t3ver_wsid',
null,
true
) ?: [];
......
......@@ -177,7 +177,7 @@ Manual repair suggestions:
while ($rowSub = $result->fetch()) {
$allRecords[$tableName][$rowSub['uid']] = $rowSub['uid'];
// Add any versions of those records:
$versions = BackendUtility::selectVersionsOfRecord($tableName, $rowSub['uid'], 'uid,t3ver_wsid,t3ver_count', null, true);
$versions = BackendUtility::selectVersionsOfRecord($tableName, $rowSub['uid'], 'uid,t3ver_wsid', null, true);
if (is_array($versions)) {
foreach ($versions as $verRec) {
if (!$verRec['_CURRENT_VERSION']) {
......@@ -215,7 +215,7 @@ Manual repair suggestions:
// Add any versions of pages
if ($pageId > 0) {
$versions = BackendUtility::selectVersionsOfRecord('pages', $pageId, 'uid,t3ver_oid,t3ver_wsid,t3ver_count', null, true);
$versions = BackendUtility::selectVersionsOfRecord('pages', $pageId, 'uid,t3ver_oid,t3ver_wsid', null, true);
if (is_array($versions)) {
foreach ($versions as $verRec) {
if (!$verRec['_CURRENT_VERSION']) {
......
......@@ -124,7 +124,7 @@ class DatabaseIntegrityCheck
->from('pages')
->orderBy('sorting');
if ($versions) {
$queryBuilder->addSelect('t3ver_wsid', 't3ver_count');
$queryBuilder->addSelect('t3ver_wsid');
$queryBuilder->where(
$queryBuilder->expr()->eq('t3ver_oid', $queryBuilder->createNamedParameter($theID, \PDO::PARAM_INT))
);
......@@ -147,9 +147,6 @@ class DatabaseIntegrityCheck
if ($row['deleted']) {
$this->recStats['deleted']['pages'][$newID] = $newID;
}
if ($versions && $row['t3ver_count'] >= 1) {
$this->recStats['published_versions']['pages'][$newID] = $newID;
}
if ($row['deleted']) {
$this->recStats['deleted']++;
}
......@@ -210,9 +207,6 @@ class DatabaseIntegrityCheck
if ($row['deleted']) {
$this->recStats['deleted'][$table][$newID] = $newID;
}
if ($versions && $row['t3ver_count'] >= 1 && $row['t3ver_wsid'] == 0) {
$this->recStats['published_versions'][$table][$newID] = $newID;
}
// Select all versions of this record:
if ($this->genTreeIncludeVersions && BackendUtility::isTableWorkspaceEnabled($table)) {
$this->genTree_records($newID, $table, true);
......
......@@ -278,7 +278,6 @@ class WorkspaceVersionRecordsCommand extends Command
->select(
'deleted',
'title',
't3ver_count',
't3ver_wsid'
)
->from('pages')
......@@ -291,10 +290,6 @@ class WorkspaceVersionRecordsCommand extends Command
$workspaceId = (int)$pageRecord['t3ver_wsid'];
$this->foundRecords['all_versioned_records']['pages'][$rootID] = $rootID;
// If it has been published and is in archive now...
if ($pageRecord['t3ver_count'] >= 1 && $workspaceId === 0) {
$this->foundRecords['published_versions']['pages'][$rootID] = $rootID;
}
// If it has been published and is in archive now...
if ($workspaceId === 0) {
$this->foundRecords['versions_in_live']['pages'][$rootID] = $rootID;
}
......@@ -327,18 +322,13 @@ class WorkspaceVersionRecordsCommand extends Command
->execute();
while ($rowSub = $result->fetch()) {
// Add any versions of those records
$versions = BackendUtility::selectVersionsOfRecord($tableName, $rowSub['uid'], 'uid,t3ver_wsid,t3ver_count' . ($GLOBALS['TCA'][$tableName]['ctrl']['delete'] ? ',' . $GLOBALS['TCA'][$tableName]['ctrl']['delete'] : ''), null, true);
$versions = BackendUtility::selectVersionsOfRecord($tableName, $rowSub['uid'], 'uid,t3ver_wsid' . ($GLOBALS['TCA'][$tableName]['ctrl']['delete'] ? ',' . $GLOBALS['TCA'][$tableName]['ctrl']['delete'] : ''), null, true);
if (is_array($versions)) {
foreach ($versions as $verRec) {
if (!$verRec['_CURRENT_VERSION']) {
// Register version
$this->foundRecords['all_versioned_records'][$tableName][$verRec['uid']] = $verRec['uid'];
$workspaceId = (int)$verRec['t3ver_wsid'];
if ($verRec['t3ver_count'] >= 1 && $workspaceId === 0) {
// Only register published versions in LIVE workspace
// (published versions in draft workspaces are allowed)
$this->foundRecords['published_versions'][$tableName][$verRec['uid']] = $verRec['uid'];
}
if ($workspaceId === 0) {
$this->foundRecords['versions_in_live'][$tableName][$verRec['uid']] = $verRec['uid'];
}
......@@ -379,7 +369,7 @@ class WorkspaceVersionRecordsCommand extends Command
}
// Add any versions of pages
if ($rootID > 0) {
$versions = BackendUtility::selectVersionsOfRecord('pages', $rootID, 'uid,t3ver_oid,t3ver_wsid,t3ver_count', null, true);
$versions = BackendUtility::selectVersionsOfRecord('pages', $rootID, 'uid,t3ver_oid,t3ver_wsid', null, true);
if (is_array($versions)) {
foreach ($versions as $verRec) {
if (!$verRec['_CURRENT_VERSION']) {
......
......@@ -129,11 +129,10 @@ class PreviewController
// fetch the next and previous stage
$workspaceItemsArray = $this->workspaceService->selectVersionsInWorkspace(
$this->stageService->getWorkspaceId(),
$filter = 1,
$stage = -99,
-99,
$this->pageId,
$recursionLevel = 0,
$selectionType = 'tables_modify'
0,
'tables_modify'
);
[, $nextStage] = $this->stageService->getNextStageForElementCollection($workspaceItemsArray);
[, $previousStage] = $this->stageService->getPreviousStageForElementCollection($workspaceItemsArray);
......
......@@ -428,11 +428,10 @@ class ActionHandler
$cmdMapArray = [];
$workspaceItemsArray = $this->workspaceService->selectVersionsInWorkspace(
$this->stageService->getWorkspaceId(),
$filter = 1,
$stage = -99,
-99,
$pageId,
$recursionLevel = 0,
$selectionType = 'tables_modify'
0,
'tables_modify'
);
foreach ($workspaceItemsArray as $tableName => $items) {
foreach ($items as $item) {
......@@ -751,21 +750,19 @@ class ActionHandler
{
$workspaceItemsArray = $this->workspaceService->selectVersionsInWorkspace(
$this->stageService->getWorkspaceId(),
$filter = 1,
$stage = -99,
-99,
$id,
$recursionLevel = 0,
$selectionType = 'tables_modify'
0,
'tables_modify'
);
[$currentStage, $previousStage] = $this->stageService->getPreviousStageForElementCollection($workspaceItemsArray);
// get only the relevant items for processing
$workspaceItemsArray = $this->workspaceService->selectVersionsInWorkspace(
$this->stageService->getWorkspaceId(),
$filter = 1,
$currentStage['uid'],
$id,
$recursionLevel = 0,
$selectionType = 'tables_modify'
0,
'tables_modify'
);
$stageFormFields = $this->getSentToStageWindow($previousStage['uid']);
$result = array_merge($stageFormFields, [
......@@ -785,21 +782,19 @@ class ActionHandler
{
$workspaceItemsArray = $this->workspaceService->selectVersionsInWorkspace(
$this->stageService->getWorkspaceId(),
$filter = 1,
$stage = -99,
-99,
$id,
$recursionLevel = 0,
$selectionType = 'tables_modify'
0,
'tables_modify'
);
[$currentStage, $nextStage] = $this->stageService->getNextStageForElementCollection($workspaceItemsArray);
// get only the relevant items for processing
$workspaceItemsArray = $this->workspaceService->selectVersionsInWorkspace(
$this->stageService->getWorkspaceId(),
$filter = 1,
$currentStage['uid'],
$id,
$recursionLevel = 0,
$selectionType = 'tables_modify'
0,
'tables_modify'
);
$stageFormFields = $this->getSentToStageWindow($nextStage['uid']);
$result = array_merge($stageFormFields, [
......@@ -821,11 +816,10 @@ class ActionHandler
// fetch the next and previous stage
$workspaceItemsArray = $this->workspaceService->selectVersionsInWorkspace(
$this->stageService->getWorkspaceId(),
$filter = 1,
$stage = -99,
-99,
$id,
$recursionLevel = 0,
$selectionType = 'tables_modify'
0,
'tables_modify'
);
[, $nextStage] = $this->stageService->getNextStageForElementCollection($workspaceItemsArray);
[, $previousStage] = $this->stageService->getPreviousStageForElementCollection($workspaceItemsArray);
......
......@@ -97,7 +97,14 @@ class RemoteServer
if (!isset($parameter->language) || !MathUtility::canBeInterpretedAsInteger($parameter->language)) {
$parameter->language = null;
}
$versions = $this->workspaceService->selectVersionsInWorkspace($this->getCurrentWorkspace(), 0, -99, $pageId, $parameter->depth, 'tables_select', $parameter->language);
$versions = $this->workspaceService->selectVersionsInWorkspace(
$this->getCurrentWorkspace(),
-99,
$pageId,
$parameter->depth,
'tables_select',
$parameter->language
);
$data = $this->gridDataService->generateGridListFromVersions($versions, $parameter, $this->getCurrentWorkspace());
return $data;
}
......@@ -500,7 +507,14 @@ class RemoteServer
$affectedElements[] = CombinedRecord::create($element->table, $element->liveId, $element->versionId);
}
} elseif ($parameters->type === 'all') {
$versions = $this->workspaceService->selectVersionsInWorkspace($this->getCurrentWorkspace(), 0, -99, -1, 0, 'tables_select', $this->validateLanguageParameter($parameters));
$versions = $this->workspaceService->selectVersionsInWorkspace(
$this->getCurrentWorkspace(),
-99,
-1,
0,
'tables_select',
$this->validateLanguageParameter($parameters)
);
foreach ($versions as $table => $tableElements) {
foreach ($tableElements as $element) {
$affectedElement = CombinedRecord::create($table, $element['t3ver_oid'], $element['uid']);
......
......@@ -673,7 +673,6 @@ class DataHandlerHook
$swapVersion['t3ver_wsid'] = (int)$curVersion['t3ver_wsid'];
}
}
$swapVersion['t3ver_tstamp'] = $GLOBALS['EXEC_TIME'];
$swapVersion['t3ver_stage'] = 0;
if (!$swapIntoWS) {
$swapVersion['t3ver_state'] = (string)new VersionState(VersionState::DEFAULT_STATE);
......@@ -708,8 +707,6 @@ class DataHandlerHook
// Mark curVersion to contain the oid
$curVersion['t3ver_oid'] = (int)$id;
$curVersion['t3ver_wsid'] = $swapIntoWS ? (int)$tmp_wsid : 0;
$curVersion['t3ver_tstamp'] = $GLOBALS['EXEC_TIME'];
$curVersion['t3ver_count'] = $curVersion['t3ver_count'] + 1;
// Increment lifecycle counter
$curVersion['t3ver_stage'] = 0;
if (!$swapIntoWS) {
......@@ -996,7 +993,7 @@ class DataHandlerHook
} else {
$connection->update(
$table,
['t3ver_tstamp' => $GLOBALS['EXEC_TIME'], $deleteField => 1],
[$deleteField => 1],
['uid' => (int)$versionId]
);
}
......@@ -1006,11 +1003,6 @@ class DataHandlerHook
$dataHandler->deleteEl($table, $liveRecord['uid'], true, true);
// purge new placeholder as it has been created just for the sake of pointing to a version
} elseif ($liveState->equals(VersionState::NEW_PLACEHOLDER)) {
$connection->update(
$table,
['t3ver_tstamp' => $GLOBALS['EXEC_TIME']],
['uid' => (int)$liveRecord['uid']]
);
// THIS assumes that the record was placeholder ONLY for ONE record (namely $id)
$dataHandler->deleteEl($table, $liveRecord['uid'], true);
}
......
<
......@@ -167,14 +167,19 @@ class WorkspaceService implements SingletonInterface
if ($wsid > 0) {
// Define stage to select:
$stage = -99;
if ($wsid > 0) {
$workspaceRec = BackendUtility::getRecord('sys_workspace', $wsid);
if ($workspaceRec['publish_access'] & 1) {
$stage = StagesService::STAGE_PUBLISH_ID;
}
$workspaceRec = BackendUtility::getRecord('sys_workspace', $wsid);
if ($workspaceRec['publish_access'] & 1) {
$stage = StagesService::STAGE_PUBLISH_ID;
}
// Select all versions to swap:
$versions = $this->selectVersionsInWorkspace($wsid, 0, $stage, $pageId ?: -1, 999, 'tables_modify', $language);
$versions = $this->selectVersionsInWorkspace(
$wsid,
$stage,
$pageId ?: -1,
999,
'tables_modify',
$language
);
// Traverse the selection to build CMD array:
foreach ($versions as $table => $records) {
foreach ($records as $rec) {
......@@ -203,7 +208,14 @@ class WorkspaceService implements SingletonInterface
// Define stage to select:
$stage = -99;
// Select all versions to swap:
$versions = $this->selectVersionsInWorkspace($wsid, 0, $stage, $pageId ?: -1, 999, 'tables_modify', $language);
$versions = $this->selectVersionsInWorkspace(
$wsid,
$stage,
$pageId ?: -1,
999,
'tables_modify',
$language
);
// Traverse the selection to build CMD array:
foreach ($versions as $table => $records) {
foreach ($records as $rec) {
......@@ -221,7 +233,6 @@ class WorkspaceService implements SingletonInterface
* User for auto-publishing for selecting versions for publication
*
* @param int $wsid Workspace ID. If -99, will select ALL versions from ANY workspace. If -98 will select all but ONLINE. >=-1 will select from the actual workspace
* @param int $filter Lifecycle filter: 1 = select all drafts (never-published), 2 = select all published one or more times (archive/multiple), anything else selects all.
* @param int $stage Stage filter: -99 means no filtering, otherwise it will be used to select only elements with that stage. For publishing, that would be "10
* @param int $pageId Page id: Live page for which to find versions in workspace!
* @param int $recursionLevel Recursion Level - select versions recursive - parameter is only relevant if $pageId != -1
......@@ -229,10 +240,9 @@ class WorkspaceService implements SingletonInterface
* @param int $language Select specific language only
* @return array Array of all records uids etc. First key is table name, second key incremental integer. Records are associative arrays with uid and t3ver_oidfields. The pid of the online record is found as "livepid" the pid of the offline record is found in "wspid
*/
public function selectVersionsInWorkspace($wsid, $filter = 0, $stage = -99, $pageId = -1, $recursionLevel = 0, $selectionType = 'tables_select', $language = null)
public function selectVersionsInWorkspace($wsid, $stage = -99, $pageId = -1, $recursionLevel = 0, $selectionType = 'tables_select', $language = null)
{
$wsid = (int)$wsid;
$filter = (int)$filter;
$output = [];
// Contains either nothing or a list with live-uids
if ($pageId != -1 && $recursionLevel > 0) {
......@@ -260,8 +270,8 @@ class WorkspaceService implements SingletonInterface