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
This commit is contained in:
Sean Harvey 2009-05-19 02:43:55 +00:00 committed by Sam Minnee
parent b6569c5dfd
commit 9b903070a0

View File

@ -475,29 +475,31 @@ JS;
function getFieldsFor($childData) { function getFieldsFor($childData) {
// See if our parent class has any many_many relations by this source class // See if our parent class has any many_many relations by this source class
if($this->sourceID()) { if($this->getParentClass()) {
$parentClass = DataObject::get_by_id($this->getParentClass(), $this->sourceID()); if($this->sourceID()) {
} else { $parentClass = DataObject::get_by_id($this->getParentClass(), $this->sourceID());
$parentClass = singleton($this->getParentClass()); } 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;
} }
}
$manyManyRelations = $parentClass->many_many();
if($hasManyRelations) foreach($hasManyRelations as $relation => $class) { $manyManyRelationName = null;
if($class == $this->sourceClass()) { $manyManyComponentSet = null;
$hasManyRelationName = $relation;
$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); $detailFields = $this->getCustomFieldsFor($childData);
if($hasManyRelationName && $childData->ID) { if($this->getParentClass() && $hasManyRelationName && $childData->ID) {
$hasManyComponentSet = $parentClass->getComponents($hasManyRelationName); $hasManyComponentSet = $parentClass->getComponents($hasManyRelationName);
} }