示例#1
0
 /**
  * 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));
 }
示例#2
0
 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();
 }