/** * * @return \Gems_Task_TaskRunnerBatch */ protected function getImportMergeBatch() { $batch = $this->loader->getTaskRunnerBatch('track_import_create_' . $this->formData['importId']); $import = $this->loadImportData(); $batch->setVariable('import', $import); $batch->setVariable('trackEngine', $this->trackEngine); if ($batch->isFinished()) { return $batch; } if (!$batch->isLoaded()) { $batch->addTask('Tracker\\Merge\\MergeTrackImportTask', $this->formData); $fieldDef = $this->trackEngine->getFieldsDefinition(); foreach ($import['fields'] as $lineNr => &$fieldData) { $field = $fieldDef->getFieldByOrder($fieldData['gtf_id_order']); if ($field instanceof FieldInterface) { $fieldData['gtf_id_field'] = $field->getFieldId(); } $batch->addTask('Tracker\\Import\\CreateTrackFieldImportTask', $lineNr, $fieldData); } foreach ($import['rounds'] as $lineNr => $roundData) { $batch->addTask('Tracker\\Import\\CreateTrackRoundImportTask', $lineNr, $roundData); } if (isset($import['deactivateRounds'])) { foreach ($import['deactivateRounds'] as $roundId => $roundDescription) { $batch->addTask('Tracker\\Merge\\DeactivateTrackFieldTask', $roundId, $roundDescription); } } $batch->addTask('AddTask', 'Tracker\\Import\\FinishTrackImport'); } return $batch; }
/** * Processes the field values and returns the new complete field data * * @param array $newFieldData The new field values, may be partial, field set by code overwrite field set by key * @param array $oldFieldData The old field values * @param \Gems_Tracker_Engine_TrackEngineInterface $trackEngine * @return array The processed data in the format key1 => val1, code1 => val1, key2 => val2 */ protected function _mergeFieldValues(array $newFieldData, array $oldFieldData, \Gems_Tracker_Engine_TrackEngineInterface $trackEngine) { $fieldMap = $trackEngine->getFieldsDefinition()->getFieldCodes(); $output = array(); foreach ($fieldMap as $key => $code) { if ($code) { if (isset($newFieldData[$code])) { $output[$key] = $newFieldData[$code]; $output[$code] = $newFieldData[$code]; } elseif (isset($newFieldData[$key])) { $output[$key] = $newFieldData[$key]; $output[$code] = $newFieldData[$key]; } elseif (isset($oldFieldData[$code])) { $output[$key] = $oldFieldData[$code]; $output[$code] = $oldFieldData[$code]; } elseif (isset($oldFieldData[$key])) { $output[$key] = $oldFieldData[$key]; $output[$code] = $oldFieldData[$key]; } else { $output[$key] = null; $output[$code] = null; } } else { if (isset($newFieldData[$key])) { $output[$key] = $newFieldData[$key]; } elseif (isset($oldFieldData[$key])) { $output[$key] = $oldFieldData[$key]; } else { $output[$key] = null; } } } return $output; }