Merge pull request #868 from halkyon/dataobject_model

BUG Fixing model not being set before populateDefaults()
This commit is contained in:
Sam Minnée 2012-10-11 21:12:10 -07:00
commit a4afea127e

View File

@ -312,7 +312,6 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
* Singletons don't have their defaults set. * Singletons don't have their defaults set.
*/ */
public function __construct($record = null, $isSingleton = false, $model = null) { public function __construct($record = null, $isSingleton = false, $model = null) {
parent::__construct(); parent::__construct();
// Set the fields data. // Set the fields data.
@ -366,6 +365,10 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
HTTP::register_modification_date($record['LastEdited']); HTTP::register_modification_date($record['LastEdited']);
} }
// this must be called before populateDefaults(), as field getters on a DataObject
// may call getComponent() and others, which rely on $this->model being set.
$this->model = $model ? $model : DataModel::inst();
// Must be called after parent constructor // Must be called after parent constructor
if(!$isSingleton && (!isset($this->record['ID']) || !$this->record['ID'])) { if(!$isSingleton && (!isset($this->record['ID']) || !$this->record['ID'])) {
$this->populateDefaults(); $this->populateDefaults();
@ -373,8 +376,6 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
// prevent populateDefaults() and setField() from marking overwritten defaults as changed // prevent populateDefaults() and setField() from marking overwritten defaults as changed
$this->changed = array(); $this->changed = array();
$this->model = $model ? $model : DataModel::inst();
} }
/** /**