X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FImport%2FDataSource%2FCSV.php;h=79e68a0d7ff21af016d3f4153316d18906047766;hb=f20abb09cde0c320cb082cc7ac9f974017c499e6;hp=9e0c83087763adb5d228be901d423a153a554ba2;hpb=2e89bdd3cc217f4cb52bb0abb1bb7aa6b6c617f2;p=civicrm-core.git diff --git a/CRM/Import/DataSource/CSV.php b/CRM/Import/DataSource/CSV.php index 9e0c830877..79e68a0d7f 100644 --- a/CRM/Import/DataSource/CSV.php +++ b/CRM/Import/DataSource/CSV.php @@ -18,6 +18,13 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { const NUM_ROWS_TO_INSERT = 100; + /** + * Form fields declared for this datasource. + * + * @var string[] + */ + protected $submittableFields = ['skipColumnHeader', 'uploadField']; + /** * Provides information about the data source. * @@ -28,14 +35,6 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { return ['title' => ts('Comma-Separated Values (CSV)')]; } - /** - * Set variables up before form is built. - * - * @param CRM_Core_Form $form - */ - public function preProcess(&$form) { - } - /** * This is function is called by the form object to get the DataSource's form snippet. * @@ -49,9 +48,7 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { public function buildQuickForm(&$form) { $form->add('hidden', 'hidden_dataSource', 'CRM_Import_DataSource_CSV'); - $config = CRM_Core_Config::singleton(); - - $uploadFileSize = CRM_Utils_Number::formatUnitSize($config->maxFileSize . 'm', TRUE); + $uploadFileSize = CRM_Utils_Number::formatUnitSize(Civi::settings()->get('maxFileSize') . 'm', TRUE); //Fetch uploadFileSize from php_ini when $config->maxFileSize is set to "no limit". if (empty($uploadFileSize)) { $uploadFileSize = CRM_Utils_Number::formatUnitSize(ini_get('upload_max_filesize'), TRUE); @@ -71,25 +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('original_col_header', $result)); - $form->set('importTableName', $result['import_table_name']); + $this->updateUserJobMetadata('DataSource', [ + 'table_name' => $result['import_table_name'], + 'column_headers' => $this->getSubmittedValue('skipColumnHeader') ? $result['column_headers'] : [], + 'number_of_columns' => $result['number_of_columns'], + ]); } /** @@ -99,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. * @@ -111,7 +105,6 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { private static function _CsvToTable( $file, $headers = FALSE, - $tableName = NULL, $fieldSeparator = ',' ) { $result = []; @@ -135,7 +128,7 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { // create the column names from the CSV header or as col_0, col_1, etc. if ($headers) { //need to get original headers. - $result['original_col_header'] = $firstrow; + $result['column_headers'] = $firstrow; $strtolower = function_exists('mb_strtolower') ? 'mb_strtolower' : 'strtolower'; $columns = array_map($strtolower, $firstrow); @@ -180,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"); @@ -242,7 +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; }