Index: class.t3lib_tcemain.php =================================================================== --- class.t3lib_tcemain.php (.../tags/t3_410/t3lib) (Revision 22) +++ class.t3lib_tcemain.php (.../branches/bug-3531/t3lib) (Revision 81) @@ -3957,6 +3957,27 @@ } } + // 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.'"'; + if (is_array($col['config']['MM_match_fields'])) { + 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: