public function __construct(DataObject $controller, $name, $title = null, $className = null, $source = array(), $addTitle = null, $defaultsProperties = array(), $form = null) { $hasOne = false; if (!$title) { $this->title = self::name_to_label($name); } if (!$className) { if (substr($name, -2) == 'ID') { $name = substr($name, 0, -2); } if (!($hasOne = $className = $controller->has_one($name)) && !($className = $controller->belongs_to($name)) && (($settings = $controller->has_many($name)) || ($settings = $controller->many_many($name)))) { if (is_array($settings)) { $className = $settings[1]; } else { $className = $settings; } $this->fieldType = 'CheckboxSetField'; } if (!$className) { trigger_error('Couldn\'t determine class type from field name "' . $name . '". Please define the class name.'); } if ($hasOne) { $name .= 'ID'; } } else { if ($rels = $controller->has_many() + $controller->many_many()) { foreach ($rels as $rel => $class) { if ($class == $className || ClassInfo::is_subclass_of($class, $className)) { $this->fieldType = 'CheckboxSetField'; break; } } } } if (!class_exists($className)) { trigger_error($className . ' class doesn\'t exist'); } $this->setDefaults($defaultsProperties); $this->className = $className; $this->controller = $controller; parent::__construct($name, $title, $source, null, $form); }