public function extractFieldFromRow(array $row)
{
$storageFieldDef = $this->extractStorageFieldFromRow($row);
$field = new FieldDefinition();
$field->id = (int) $row['ezcontentclass_attribute_id'];
$field->name = unserialize($row['ezcontentclass_attribute_serialized_name_list']);
$field->description = unserialize($row['ezcontentclass_attribute_serialized_description_list']);
// Unset redundant data
unset($field->name['always-available'], $field->name[0], $field->description['always-available'], $field->description[0]);
$field->identifier = $row['ezcontentclass_attribute_identifier'];
$field->fieldGroup = $row['ezcontentclass_attribute_category'];
$field->fieldType = $row['ezcontentclass_attribute_data_type_string'];
$field->isTranslatable = $row['ezcontentclass_attribute_can_translate'] == 1;
$field->isRequired = $row['ezcontentclass_attribute_is_required'] == 1;
$field->isInfoCollector = $row['ezcontentclass_attribute_is_information_collector'] == 1;
$field->isSearchable = (bool) $row['ezcontentclass_attribute_is_searchable'];
$field->position = (int) $row['ezcontentclass_attribute_placement'];
$this->toFieldDefinition($storageFieldDef, $field);
return $field;
}