if(isset($list[$name])) user_error("collateDataFields() I noticed that a field called '$name' appears twice in your form: '{$formName}'. One is a '{$field->class}' and the other is a '{$list[$name]->class}'", E_USER_ERROR);

$list[$name] =$field;

}

}

}

}

}

functionsetForm($form) {

foreach($this->childrenas$f) if(is_object($f)) $f->setForm($form);

parent::setForm($form);

}

functionsetColumnCount($columnCount) {

$this->columnCount=$columnCount;

}

functionisComposite() { returntrue; }

functionhasData() { returnfalse; }

publicfunctionfieldByName($name) {

return$this->children->fieldByName($name);

}

/**

* Add a new child field to the end of the set.

*/

publicfunctionpush(FormField$field) {

$this->children->push($field);

}

/**

* @uses FieldSet->insertBefore()

*/

publicfunctioninsertBefore($field, $insertBefore) {

$ret=$this->children->insertBefore($field, $insertBefore);

$this->sequentialSet=null;

return$ret;

}

/**

* @deprecated 2.3 Use insertBefore

*/

publicfunctioninsertBeforeRecursive($field, $insertBefore) {

return$this->children->insertBefore($field, $insertBefore);

}

publicfunctioninsertAfter($field, $insertAfter) {

$ret=$this->children->insertAfter($field, $insertAfter);

$this->sequentialSet=null;

return$ret;

}

/**

* Remove a field from this CompositeField by Name.

* The field could also be inside a CompositeField.

*

* @param string $fieldName The name of the field

* @param boolean $dataFieldOnly If this is true, then a field will only

* be removed if it's a data field. Dataless fields, such as tabs, will