From abe4049c3d2c703864bb2abc98f59aed5d871fd7 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Tue, 9 Mar 2010 20:30:34 +0000 Subject: [PATCH] BUGFIX Unsetting 'ID' parameter in MemberTableField->addtogroup() to avoid confusion between Group and Member records (regression from r100716) (from r100720) git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/cms/branches/2.4@100721 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- code/MemberTableField.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/MemberTableField.php b/code/MemberTableField.php index 2e6cfe8e..0b6c6d17 100755 --- a/code/MemberTableField.php +++ b/code/MemberTableField.php @@ -170,9 +170,7 @@ class MemberTableField extends ComplexTableField { $identifierField = Member::get_unique_identifier_field(); $className = self::$data_class; $record = null; - if(isset($data['ID']) && $data['ID']) { - $record = DataObject::get_by_id($className, $data['ID']); - } elseif(isset($data[$identifierField])) { + if(isset($data[$identifierField])) { $record = DataObject::get_one( $className, sprintf('"%s" = \'%s\'', $identifierField, $data[$identifierField]) @@ -184,7 +182,10 @@ class MemberTableField extends ComplexTableField { // Update an existing record, or populate a new one. // If values on an existing (autocompleted) record have been changed, - // they will overwrite current data. + // they will overwrite current data. We need to unset 'ID' + // record as it points to the group rather than the member record, and would + // cause the member to be written to a potentially existing record. + unset($data['ID']); $record->update($data); // Validate record, mainly password restrictions.