public function __construct(array $record, array $options = null) { if (isset($options['model'])) { $this->_Model = $options['model']; } else { if (!empty($this->_modelName)) { $modelName = $this->_modelName; } else { $className = get_class($this); $prefix = ActiveRecordBehavior::$defaultSettings['prefix']; if (substr($className, 0, strlen($prefix)) == $prefix) { $modelName = substr($className, strlen($prefix)); } else { $modelName = $className; } } $this->_modelName = $modelName; App::import('Model', $modelName); $this->_Model = ClassRegistry::init($modelName); } if (isset($record[$this->_Model->alias])) { $this->_Record = $record[$this->_Model->alias]; } else { $this->_Record = $record; } if (empty($options['norefresh'])) { $oldRecord = $this->_Record; $this->refresh(); $this->_Record = $oldRecord + $this->_Record; } $defaultFields = $this->_Model->activeRecordBehaviorSettings('defaults'); $this->_Record += $defaultFields(); $this->_directDelete = $this->_Model->activeRecordBehaviorSettings('directDelete'); if (isset($options['directDelete'])) { $this->_directDelete = $options['directDelete']; } $create = true; if (isset($options['create'])) { $create = $options['create']; } if ($create) { ActiveRecordManager::create($this); $this->_created = true; $this->_changed = true; } foreach ($this->_Model->associations() as $associationType) { foreach ($this->_Model->{$associationType} as $associationName => $associationDefinition) { $association = new ActiveRecordAssociation($associationName, $this, $associationType, $associationDefinition, $record, $create); $this->_associations[$associationName] = $association; unset($this->_Record[$associationName]); } } foreach ($this->_Record as $key => $value) { $this->_originalRecord[$key] = $value; } App::uses(get_class($this) . 'Immutable', 'Model/' . $this->_Model->activeRecordBehaviorSettings('subfolder')); }