[BUGFIX] Wrong sys_refindex for deleted child records 38/31738/2
authorOliver Hader <oliver@typo3.org>
Thu, 10 Jul 2014 16:53:03 +0000 (18:53 +0200)
committerOliver Hader <oliver.hader@typo3.org>
Wed, 23 Jul 2014 12:11:46 +0000 (14:11 +0200)
Workspace actions using the DataHandler trigger a reprocessing
of the reference index. However, it happened that index entries
of the live workspace have been deleted or modified.

The reason for that is a missing SQL statement to limit those
actions to the current workspace only.

The result can be seen in e.g. the workspace module after
having deleted an IRRE child record and how the nesting could
not be determined correctly for that particular record.

Resolves: #59874
Releases: 6.2, 6.3
Change-Id: I850e2fe88999ce8db280d4ef426e43c85fff06da
Reviewed-on: https://review.typo3.org/31738
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
typo3/sysext/core/Classes/Database/ReferenceIndex.php

index b61d749..db28300 100644 (file)
@@ -110,7 +110,7 @@ class ReferenceIndex {
                        'addedNodes' => 0
                );
                // Get current index from Database:
-               $currentRels = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('*', 'sys_refindex', 'tablename=' . $GLOBALS['TYPO3_DB']->fullQuoteStr($table, 'sys_refindex') . ' AND recuid=' . (int)$uid, '', '', '', 'hash');
+               $currentRels = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('*', 'sys_refindex', 'tablename=' . $GLOBALS['TYPO3_DB']->fullQuoteStr($table, 'sys_refindex') . ' AND recuid=' . (int)$uid . ' AND workspace=' . (int)$this->getWorkspaceId(), '', '', '', 'hash');
                // First, test to see if the record exists (including deleted-flagged)
                if (BackendUtility::getRecordRaw($table, 'uid=' . (int)$uid, 'uid')) {
                        // Then, get relations: