[BUGFIX] Wrong sys_refindex for deleted child records 90/31590/3
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 11:51:34 +0000 (13:51 +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/31590
Reviewed-by: Markus Klein <klein.t3@reelworx.at>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
typo3/sysext/core/Classes/Database/ReferenceIndex.php

index 073c59f..7700a65 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: