From 1201f6c8bbb8aec1228f094e0ee21feb46adc176 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Tue, 6 Mar 2012 00:58:44 +0100 Subject: [PATCH] BUGFIX Saving records in ListboxField->saveInto() and PermissionCheckboxSetField->saveInto() so we have a database ID to relate to (was previously customised in MemberTableField->saveComplexTableField(), which is now deprecated) --- forms/ListboxField.php | 1 + security/PermissionCheckboxSetField.php | 3 +++ tests/security/MemberTest.php | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/forms/ListboxField.php b/forms/ListboxField.php index e56a331d0..42aeb3291 100644 --- a/forms/ListboxField.php +++ b/forms/ListboxField.php @@ -174,6 +174,7 @@ class ListboxField extends DropdownField { $fieldname = $this->name; if($fieldname && $record && ($record->has_many($fieldname) || $record->many_many($fieldname))) { $idList = (is_array($this->value)) ? array_values($this->value) : array(); + if(!$record->ID) $record->write(); // record needs to have an ID in order to set relationships $record->$fieldname()->setByIDList($idList); } elseif($fieldname && $record) { if($this->value) { diff --git a/security/PermissionCheckboxSetField.php b/security/PermissionCheckboxSetField.php index 4a25d2b7f..b852096f5 100644 --- a/security/PermissionCheckboxSetField.php +++ b/security/PermissionCheckboxSetField.php @@ -226,6 +226,9 @@ class PermissionCheckboxSetField extends FormField { } if($fieldname && $record && ($record->has_many($fieldname) || $record->many_many($fieldname))) { + + if(!$record->ID) $record->write(); // We need a record ID to write permissions + $idList = array(); if($this->value) foreach($this->value as $id => $bool) { if($bool) { diff --git a/tests/security/MemberTest.php b/tests/security/MemberTest.php index 3a8161e44..0ad978c1e 100644 --- a/tests/security/MemberTest.php +++ b/tests/security/MemberTest.php @@ -344,7 +344,7 @@ class MemberTest extends FunctionalTest { $grouplessMember->addToGroupByCode('memberless'); - $this->assertEquals($memberlessGroup->Members()->Count(), 1); + $this->assertEquals($memberlessGroup->Members()->Count(), 0); $this->assertEquals($grouplessMember->Groups()->Count(), 1); $grouplessMember->addToGroupByCode('somegroupthatwouldneverexist', 'New Group');