public function createRow(array $data = array(), $defaultSource = null)
{
$cols = $this->_getCols();
$defaults = array_combine($cols, array_fill(0, count($cols), null));
// nothing provided at call-time, take the class value
if ($defaultSource == null) {
$defaultSource = $this->_defaultSource;
}
if (!in_array($defaultSource, array(self::DEFAULT_CLASS, self::DEFAULT_DB, self::DEFAULT_NONE))) {
$defaultSource = self::DEFAULT_NONE;
}
if ($defaultSource == self::DEFAULT_DB) {
foreach ($this->_metadata as $metadataName => $metadata) {
if ($metadata['DEFAULT'] != null && ($metadata['NULLABLE'] !== true || $metadata['NULLABLE'] === true && isset($this->_defaultValues[$metadataName]) && $this->_defaultValues[$metadataName] === true) && !(isset($this->_defaultValues[$metadataName]) && $this->_defaultValues[$metadataName] === false)) {
$defaults[$metadataName] = $metadata['DEFAULT'];
}
}
} elseif ($defaultSource == self::DEFAULT_CLASS && $this->_defaultValues) {
foreach ($this->_defaultValues as $defaultName => $defaultValue) {
if (array_key_exists($defaultName, $defaults)) {
$defaults[$defaultName] = $defaultValue;
}
}
}
$config = array('table' => $this, 'data' => $defaults, 'readOnly' => false, 'stored' => false);
$rowClass = $this->getRowClass();
if (!class_exists($rowClass)) {
require_once 'Zend/Loader.php';
Zend_Loader::loadClass($rowClass);
}
$row = new $rowClass($config);
$row->setFromArray($data);
return $row;
}