/** * DataSet Import CSV * @return <XiboAPIResponse> */ public function DataSetImportCsv() { // Auth if (!$this->user->PageAuth('dataset')) { return $this->Error(1, 'Access Denied'); } $dataSetId = $this->GetParam('dataSetId', _INT); $auth = $this->user->DataSetAuth($dataSetId, true); if (!$auth->edit) { return $this->Error(1, 'Access Denied'); } // Expect a file id $fileId = $this->GetParam('fileId', _INT); if (!$this->user->FileAuth($fileId)) { return $this->Error(1, 'Access Denied'); } $file = new File(); if (!($csvFileLocation = $file->GetPath($fileId))) { return $this->Error($file->GetErrorNumber(), $file->GetErrorMessage()); } // Other parameters // Filter using HTML string because _STRING strips some of the JSON characters. $spreadSheetMapping = $this->GetParam('spreadSheetMapping', _HTMLSTRING); $overwrite = $this->GetParam('overwrite', _INT); $ignoreFirstRow = $this->GetParam('ignoreFirstRow', _INT); // Convert the spread sheet mapping into an Array $spreadSheetMapping = json_decode($spreadSheetMapping, true); // Check that the columns match the columns for this dataset $dataSetColumnObject = new DataSetColumn(); // Make an array with the datasetcolumnid as the key $columns = array(); foreach ($dataSetColumnObject->GetColumns($dataSetId) as $col) { $columns[$col['datasetcolumnid']] = true; } // Look through each column we have been provided and see if it matches foreach ($spreadSheetMapping as $key => $value) { if (!array_key_exists($value, $columns)) { return $this->Error(1000, __('The column mappings you have provided are invalid. Please ensure you have the correct DataSetColumnIDs.')); } } $dataSetObject = new DataSetData(); if (!$dataSetObject->ImportCsv($dataSetId, $csvFileLocation, $spreadSheetMapping, $overwrite == 1, $ignoreFirstRow == 1)) { return $this->Error($dataSetObject->GetErrorNumber(), $dataSetObject->GetErrorMessage()); } return $this->Respond($this->ReturnId('success', true)); }
public function DataSetColumnsForm() { $db =& $this->db; $response = new ResponseManager(); $helpManager = new HelpManager($db, $this->user); $dataSetId = Kit::GetParam('datasetid', _GET, _INT); $dataSet = Kit::GetParam('dataset', _GET, _STRING); $auth = $this->user->DataSetAuth($dataSetId, true); if (!$auth->edit) { trigger_error(__('Access Denied')); } $SQL = ""; $SQL .= "SELECT DataSetColumnID, Heading, datatype.DataType, datasetcolumntype.DataSetColumnType, ListContent, ColumnOrder "; $SQL .= " FROM datasetcolumn "; $SQL .= " INNER JOIN `datatype` "; $SQL .= " ON datatype.DataTypeID = datasetcolumn.DataTypeID "; $SQL .= " INNER JOIN `datasetcolumntype` "; $SQL .= " ON datasetcolumntype.DataSetColumnTypeID = datasetcolumn.DataSetColumnTypeID "; $SQL .= sprintf(" WHERE DataSetID = %d ", $dataSetId); $SQL .= "ORDER BY ColumnOrder "; Kit::ClassLoader('datasetcolumn'); $dataSetColumnObject = new DataSetColumn($db); // Load results into an array if (!($dataSetColumns = $dataSetColumnObject->GetColumns($dataSetId))) { trigger_error($dataSetColumnObject->GetErrorMessage(), E_USER_ERROR); } $rows = array(); foreach ($dataSetColumns as $row) { $row['datatype'] = __($row['datatype']); $row['datasetcolumntype'] = __($row['datasetcolumntype']); // Edit $row['buttons'][] = array('id' => 'dataset_button_edit', 'url' => 'index.php?p=dataset&q=EditDataSetColumnForm&datasetid=' . $dataSetId . '&datasetcolumnid=' . $row['datasetcolumnid'] . '&dataset=' . $dataSet, 'text' => __('Edit')); if ($auth->del) { // Delete $row['buttons'][] = array('id' => 'dataset_button_delete', 'url' => 'index.php?p=dataset&q=DeleteDataSetColumnForm&datasetid=' . $dataSetId . '&datasetcolumnid=' . $row['datasetcolumnid'] . '&dataset=' . $dataSet, 'text' => __('Delete')); } $rows[] = $row; } Theme::Set('table_rows', $rows); $form = Theme::RenderReturn('dataset_form_column_grid'); $response->SetFormRequestResponse($form, sprintf(__('Columns for %s'), $dataSet), '550px', '400px'); $response->AddButton(__('Help'), 'XiboHelpRender("' . $helpManager->Link('DataSet', 'ViewColumns') . '")'); $response->AddButton(__('Close'), 'XiboDialogClose()'); $response->AddButton(__('Add Column'), 'XiboFormRender("index.php?p=dataset&q=AddDataSetColumnForm&datasetid=' . $dataSetId . '&dataset=' . $dataSet . '")'); $response->Respond(); }