diff --git a/lib/Controller/DataSet.php b/lib/Controller/DataSet.php index d5d406dde5..960e472171 100644 --- a/lib/Controller/DataSet.php +++ b/lib/Controller/DataSet.php @@ -729,6 +729,9 @@ public function editForm(Request $request, Response $response, $id) // Retrieve data sources from the event $dataConnectorSources = $event->getDataConnectorSources(); + // retrieve the columns of the selected dataset + $dataSet->getColumn(); + // Set the form $this->getState()->template = 'dataset-form-edit'; $this->getState()->setData([ diff --git a/lib/Helper/DataSetUploadHandler.php b/lib/Helper/DataSetUploadHandler.php index 0b5a2c8dfc..c48d6b312a 100644 --- a/lib/Helper/DataSetUploadHandler.php +++ b/lib/Helper/DataSetUploadHandler.php @@ -62,6 +62,12 @@ protected function handleFormData($file, $index) throw new AccessDeniedException(); } + // Check if there are any columns defined in the dataset + if (count($dataSet->getColumn()) === 0) { + $controller->getLog()->error('Import failed: No columns defined in the dataset.'); + throw new InvalidArgumentException('Import failed: No columns defined in the dataset.'); + } + // We are allowed to edit - pull all required parameters from the request object $overwrite = $sanitizer->getCheckbox('overwrite'); $ignoreFirstRow = $sanitizer->getCheckbox('ignorefirstrow'); @@ -95,7 +101,6 @@ protected function handleFormData($file, $index) $firstRow = true; $i = 0; - $handle = fopen($controller->getConfig()->getSetting('LIBRARY_LOCATION') . 'temp/' . $fileName, 'r'); while (($data = fgetcsv($handle)) !== FALSE ) { $i++; diff --git a/views/dataset-form-edit.twig b/views/dataset-form-edit.twig index 9a70fcb8d6..ab59fb4eb4 100644 --- a/views/dataset-form-edit.twig +++ b/views/dataset-form-edit.twig @@ -94,6 +94,10 @@ {{ forms.dropdown("dataConnectorSource", "single", title, dataSet.dataConnectorSource, dataConnectorSources, "id", "name", helpText) }} + {% if dataSet.columns|length == 0 %} + {{ forms.message("No columns have been configured for this dataset. Please configure your columns accordingly."|trans, "alert alert-warning") }} + {% endif %} + {% if dataSet.isActive() %} {{ forms.message("This DataSet has been accessed or updated recently, which means the CMS will keep it active."|trans, "alert alert-success") }} {% endif %}