From 9b903070a06ffee82ff815f8123c201b6fd6cbd8 Mon Sep 17 00:00:00 2001 From: Sean Harvey Date: Tue, 19 May 2009 02:43:55 +0000 Subject: [PATCH] BUGFIX If CTF doesn't have a parent class (set to false), avoid breakages in ComplexTableField::getFieldsFor() git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.3@77140 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- forms/ComplexTableField.php | 48 +++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/forms/ComplexTableField.php b/forms/ComplexTableField.php index 26fd0ba11..80525d6dc 100755 --- a/forms/ComplexTableField.php +++ b/forms/ComplexTableField.php @@ -475,29 +475,31 @@ JS; function getFieldsFor($childData) { // See if our parent class has any many_many relations by this source class - if($this->sourceID()) { - $parentClass = DataObject::get_by_id($this->getParentClass(), $this->sourceID()); - } else { - $parentClass = singleton($this->getParentClass()); - } - - $manyManyRelations = $parentClass->many_many(); - $manyManyRelationName = null; - $manyManyComponentSet = null; - - $hasManyRelations = $parentClass->has_many(); - $hasManyRelationName = null; - $hasManyComponentSet = null; - - if($manyManyRelations) foreach($manyManyRelations as $relation => $class) { - if($class == $this->sourceClass()) { - $manyManyRelationName = $relation; + if($this->getParentClass()) { + if($this->sourceID()) { + $parentClass = DataObject::get_by_id($this->getParentClass(), $this->sourceID()); + } else { + $parentClass = singleton($this->getParentClass()); } - } - - if($hasManyRelations) foreach($hasManyRelations as $relation => $class) { - if($class == $this->sourceClass()) { - $hasManyRelationName = $relation; + + $manyManyRelations = $parentClass->many_many(); + $manyManyRelationName = null; + $manyManyComponentSet = null; + + $hasManyRelations = $parentClass->has_many(); + $hasManyRelationName = null; + $hasManyComponentSet = null; + + if($manyManyRelations) foreach($manyManyRelations as $relation => $class) { + if($class == $this->sourceClass()) { + $manyManyRelationName = $relation; + } + } + + if($hasManyRelations) foreach($hasManyRelations as $relation => $class) { + if($class == $this->sourceClass()) { + $hasManyRelationName = $relation; + } } } @@ -510,7 +512,7 @@ JS; $detailFields = $this->getCustomFieldsFor($childData); - if($hasManyRelationName && $childData->ID) { + if($this->getParentClass() && $hasManyRelationName && $childData->ID) { $hasManyComponentSet = $parentClass->getComponents($hasManyRelationName); }