/** * Create a DataObject from the given SQL row. * * @param array $row * @return DataObject */ protected function createDataObject($row) { // remove any composed fields $add = array(); if ($this->_compositeExtraFields) { foreach ($this->_compositeExtraFields as $fieldName => $composed) { // convert joined extra fields into their composite field types. $value = array(); foreach ($composed as $subField => $subSpec) { if (isset($row[$fieldName . $subSpec])) { $value[$subSpec] = $row[$fieldName . $subSpec]; // don't duplicate data in the record unset($row[$fieldName . $subSpec]); } } $obj = Object::create_from_string($this->extraFields[$fieldName], $fieldName); $obj->setValue($value, null, false); $add[$fieldName] = $obj; } } $dataObject = parent::createDataObject($row); foreach ($add as $fieldName => $obj) { $dataObject->{$fieldName} = $obj; } return $dataObject; }