Index: t3lib/class.t3lib_tcemain.php =================================================================== --- t3lib/class.t3lib_tcemain.php (.../tags/t3_410) (Revision 22) +++ t3lib/class.t3lib_tcemain.php (.../branches/bug-3531) (Revision 80) @@ -3957,6 +3957,25 @@ } } + // traverse through all columns and check for mm-refs to update + foreach ($TCA[$table]['columns'] as $col) { + if ($col['config']['MM'] != '') { + $addWhere = ' AND tablenames="'.$table.'"'; + foreach ($col['config']['MM_match_fields'] as $field_name => $field_value) { + $addWhere = ' AND '.$field_name.'="'.$field_value.'"'; + } + + // first swap the records for the new element to the negative uid + $GLOBALS['TYPO3_DB']->exec_UPDATEquery($col['config']['MM'], 'uid_foreign='.$swapWith.$addWhere, Array('uid_foreign' => -$swapWith)); + + // then swap the old record to the new uid + $GLOBALS['TYPO3_DB']->exec_UPDATEquery($col['config']['MM'], 'uid_foreign='.$id.$addWhere, Array('uid_foreign' => $swapWith)); + + // and then finally swap the new record to the old uid + $GLOBALS['TYPO3_DB']->exec_UPDATEquery($col['config']['MM'], 'uid_foreign=-'.$swapWith.$addWhere, Array('uid_foreign' => $id)); + } + } + if (!count($sqlErrors)) { // Checking for delete: