X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FImport%2FDataSource%2FCSV.php;h=79e68a0d7ff21af016d3f4153316d18906047766;hb=f20abb09cde0c320cb082cc7ac9f974017c499e6;hp=6d76bf9fedee6077bdcef12787637f7dccf2bf52;hpb=d8526720e130c39edab90d074858c1cc434a9893;p=civicrm-core.git diff --git a/CRM/Import/DataSource/CSV.php b/CRM/Import/DataSource/CSV.php index 6d76bf9fed..79e68a0d7f 100644 --- a/CRM/Import/DataSource/CSV.php +++ b/CRM/Import/DataSource/CSV.php @@ -68,29 +68,24 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { } /** - * Process the form submission. - * - * @param array $params - * @param string $db - * @param \CRM_Core_Form $form + * Initialize the datasource, based on the submitted values stored in the user job. * + * @throws \API_Exception * @throws \CRM_Core_Exception */ - public function postProcess(&$params, &$db, &$form) { - $file = $params['uploadFile']['name']; + public function initialize(): void { $result = self::_CsvToTable( - $file, - CRM_Utils_Array::value('skipColumnHeader', $params, FALSE), - CRM_Utils_Array::value('import_table_name', $params), - CRM_Utils_Array::value('fieldSeparator', $params, ',') + $this->getSubmittedValue('uploadFile')['name'], + $this->getSubmittedValue('skipColumnHeader'), + $this->getSubmittedValue('fieldSeparator') ?? ',' ); + $this->addTrackingFieldsToTable($result['import_table_name']); - $form->set('originalColHeader', CRM_Utils_Array::value('column_headers', $result)); - $form->set('importTableName', $result['import_table_name']); - $this->dataSourceMetadata = [ + $this->updateUserJobMetadata('DataSource', [ 'table_name' => $result['import_table_name'], - 'column_headers' => $result['column_headers'] ?? NULL, - ]; + 'column_headers' => $this->getSubmittedValue('skipColumnHeader') ? $result['column_headers'] : [], + 'number_of_columns' => $result['number_of_columns'], + ]); } /** @@ -100,8 +95,6 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { * File name to load. * @param bool $headers * Whether the first row contains headers. - * @param string $tableName - * Name of table from which data imported. * @param string $fieldSeparator * Character that separates the various columns in the file. * @@ -112,7 +105,6 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { private static function _CsvToTable( $file, $headers = FALSE, - $tableName = NULL, $fieldSeparator = ',' ) { $result = []; @@ -181,9 +173,6 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { } } - if ($tableName) { - CRM_Core_DAO::executeQuery("DROP TABLE IF EXISTS $tableName"); - } $table = CRM_Utils_SQL_TempTable::build()->setDurable(); $tableName = $table->getName(); CRM_Core_DAO::executeQuery("DROP TABLE IF EXISTS $tableName"); @@ -243,6 +232,7 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { //get the import tmp table name. $result['import_table_name'] = $tableName; + $result['number_of_columns'] = $numColumns; return $result; }