Index: branches/5.3.x/core/units/helpers/csv_helper.php =================================================================== diff -u -N -r16519 -r16600 --- branches/5.3.x/core/units/helpers/csv_helper.php (.../csv_helper.php) (revision 16519) +++ branches/5.3.x/core/units/helpers/csv_helper.php (.../csv_helper.php) (revision 16600) @@ -1,6 +1,6 @@ _getGridColumns($prefix_elements[0], $export_data['grid']); + $grid_config = $this->getGridColumns($export_data); $list_params = Array ('per_page' => $export_data['step'], 'grid' => $export_data['grid']); @@ -218,7 +218,7 @@ fclose($file); $prefix_elements = preg_split('/\.|_/', $import_data['prefix'], 2); - $grid_config = $this->_getGridColumns($prefix_elements[0], $import_data['grid']); + $grid_config = $this->getGridColumns($import_data); $field_list = Array(); @@ -274,21 +274,6 @@ return true; } - /** - * Returns columns of given grid - * - * @param string $prefix - * @param string $grid_name - * @return Array - * @access protected - */ - protected function _getGridColumns($prefix, $grid_name) - { - $grid = $this->Application->getUnitConfig($prefix)->getGridByName($grid_name); - - return $grid['Fields']; - } - function ImportStep() { $import_data = unserialize($this->Application->RecallVar('import_data')); @@ -333,9 +318,32 @@ } } - // 2. set object fields - foreach($import_data['field_list'] as $position => $field_name) { - if(isset($data[$position])) { + // 2. set object fields. + $grid_config = $this->getGridColumns($import_data); + + foreach ( $import_data['field_list'] as $position => $field_name ) { + if ( isset($data[$position]) ) { + $formatter_class = $object->GetFieldOption($field_name, 'formatter'); + + if ( $formatter_class !== false ) { + $formatter = $this->Application->recallObject($formatter_class); + + if ( $formatter instanceof kDateFormatter ) { + if ( isset($grid_config[$field_name]['format']) ) { + $format = $grid_config[$field_name]['format']; + } + else { + $format = $object->GetFieldOption($field_name, 'format'); + } + + // Use export format during import. + $object->SetFieldOption($field_name, 'input_format', $format); + + // Read date/time from single column. + $object->SetDBField($field_name . '_combined', 1); + } + } + $object->SetField($field_name, $data[$position]); } } @@ -380,6 +388,21 @@ } } + /** + * Returns grid columns. + * + * @param array $import_data Import data. + * + * @return array + */ + protected function getGridColumns(array $import_data) + { + $prefix_elements = preg_split('/\.|_/', $import_data['prefix'], 2); + $grid = $this->Application->getUnitConfig($prefix_elements[0])->getGridByName($import_data['grid']); + + return $grid['Fields']; + } + function ImportData($name) { $import_data = unserialize($this->Application->RecallVar('import_data'));