Changeset View
Changeset View
Standalone View
Standalone View
branches/5.2.x/core/units/helpers/csv_helper.php
Show First 20 Lines • Show All 55 Lines • ▼ Show 20 Line(s) | |||||
$this->Application->StoreVar('export_rand', $get_rand); | $this->Application->StoreVar('export_rand', $get_rand); | ||||
$first_step = true; | $first_step = true; | ||||
} | } | ||||
$file = fopen($export_data['file_name'], $first_step ? 'w' : 'a'); | $file = fopen($export_data['file_name'], $first_step ? 'w' : 'a'); | ||||
$prefix_elems = preg_split('/\.|_/', $export_data['prefix'], 2); | $prefix_elems = preg_split('/\.|_/', $export_data['prefix'], 2); | ||||
$grids = $this->Application->getUnitOption($prefix_elems[0], 'Grids'); | $grid_config = $this->getGridColumns($export_data); | ||||
$grid_config = $grids[$export_data['grid']]['Fields']; | |||||
$list_params = Array ('per_page' => $export_data['step'], 'grid' => $export_data['grid']); | $list_params = Array ('per_page' => $export_data['step'], 'grid' => $export_data['grid']); | ||||
/** @var kDBList $list */ | /** @var kDBList $list */ | ||||
$list = $this->Application->recallObject(rtrim(implode('.', $prefix_elems), '.'), $prefix_elems[0] . '_List', $list_params); | $list = $this->Application->recallObject(rtrim(implode('.', $prefix_elems), '.'), $prefix_elems[0] . '_List', $list_params); | ||||
$list->SetPage($export_data['page']); | $list->SetPage($export_data['page']); | ||||
$list->Query(); | $list->Query(); | ||||
▲ Show 20 Lines • Show All 135 Lines • ▼ Show 20 Line(s) | |||||
$import_data['updated'] = 0; | $import_data['updated'] = 0; | ||||
$file = fopen($filename, 'r'); | $file = fopen($filename, 'r'); | ||||
// getting first line for headers | // getting first line for headers | ||||
$headers = fgetcsv($file, 8192, $import_data['delimiter'], $import_data['enclosure']); | $headers = fgetcsv($file, 8192, $import_data['delimiter'], $import_data['enclosure']); | ||||
fclose($file); | fclose($file); | ||||
$prefix_elems = preg_split('/\.|_/', $import_data['prefix'], 2); | $prefix_elems = preg_split('/\.|_/', $import_data['prefix'], 2); | ||||
$grids = $this->Application->getUnitOption($prefix_elems[0], 'Grids'); | $grid_config = $this->getGridColumns($import_data); | ||||
$grid_config = $grids[ $import_data['grid'] ]['Fields']; | |||||
$field_list = Array(); | $field_list = Array(); | ||||
foreach($grid_config as $field_name => $field_data) { | foreach($grid_config as $field_name => $field_data) { | ||||
if(isset($field_data['export_field'])) { | if(isset($field_data['export_field'])) { | ||||
$field_name = $field_data['export_field']; | $field_name = $field_data['export_field']; | ||||
} | } | ||||
$field_title = isset($field_data['title']) ? $field_data['title'] : 'column:la_fld_' . $field_name; | $field_title = isset($field_data['title']) ? $field_data['title'] : 'column:la_fld_' . $field_name; | ||||
$field_label = $this->Application->Phrase($field_title); | $field_label = $this->Application->Phrase($field_title); | ||||
▲ Show 20 Lines • Show All 71 Lines • ▼ Show 20 Line(s) | |||||
} | } | ||||
if($fail) continue; | if($fail) continue; | ||||
if($object->Load($key_array)) { | if($object->Load($key_array)) { | ||||
$action = 'Update'; | $action = 'Update'; | ||||
break; | break; | ||||
} | } | ||||
} | } | ||||
// 2. set object fields | // 2. set object fields. | ||||
$grid_config = $this->getGridColumns($import_data); | |||||
foreach($import_data['field_list'] as $position => $field_name) { | foreach ( $import_data['field_list'] as $position => $field_name ) { | ||||
if(isset($data[$position])) { | 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]); | $object->SetField($field_name, $data[$position]); | ||||
} | } | ||||
} | } | ||||
// 3. validate item and run event | // 3. validate item and run event | ||||
$status = $object->Validate(); | $status = $object->Validate(); | ||||
$import_event->status = $status ? kEvent::erSUCCESS : kEvent::erFAIL; | $import_event->status = $status ? kEvent::erSUCCESS : kEvent::erFAIL; | ||||
$this->Application->HandleEvent($import_event); | $this->Application->HandleEvent($import_event); | ||||
Show All 28 Lines | |||||
} | } | ||||
else { | else { | ||||
$percent_complete = floor($import_data['lines_processed'] / $import_data['total_lines'] * 100); | $percent_complete = floor($import_data['lines_processed'] / $import_data['total_lines'] * 100); | ||||
if($percent_complete > 99) $percent_complete = 99; | if($percent_complete > 99) $percent_complete = 99; | ||||
echo $percent_complete; | echo $percent_complete; | ||||
} | } | ||||
} | } | ||||
/** | |||||
* 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); | |||||
$grids = $this->Application->getUnitOption($prefix_elements[0], 'Grids'); | |||||
return $grids[$import_data['grid']]['Fields']; | |||||
} | |||||
function ImportData($name) | function ImportData($name) | ||||
{ | { | ||||
$import_data = unserialize($this->Application->RecallVar('import_data')); | $import_data = unserialize($this->Application->RecallVar('import_data')); | ||||
return isset($import_data[$name]) ? $import_data[$name] : false; | return isset($import_data[$name]) ? $import_data[$name] : false; | ||||
} | } | ||||
function GetNotImportedLines() | function GetNotImportedLines() | ||||
{ | { | ||||
Show All 19 Lines |