/** * Delete DataSet * @param <type> $dataSetId */ public function Delete($dataSetId) { try { $dbh = PDOConnect::init(); // Delete the Data $data = new DataSetData(); $data->DeleteAll($dataSetId); // Delete security $security = new DataSetGroupSecurity($this->db); $security->UnlinkAll($dataSetId); // Delete columns $dataSetObject = new DataSetColumn($this->db); if (!$dataSetObject->DeleteAll($dataSetId)) { return $this->SetError(25005, __('Cannot delete dataset, columns could not be deleted.')); } // Delete data set $sth = $dbh->prepare('DELETE FROM dataset WHERE DataSetID = :datasetid'); $sth->execute(array('datasetid' => $dataSetId)); return true; } catch (Exception $e) { Debug::LogEntry('error', $e->getMessage()); if (!$this->IsError()) { $this->SetError(25005, sprintf(__('Cannot edit dataset %s'), $dataSet)); } return false; } }
/** * 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 ImportCsv() { $db =& $this->db; $response = new ResponseManager(); $dataSetId = Kit::GetParam('datasetid', _POST, _INT); $overwrite = Kit::GetParam('overwrite', _POST, _CHECKBOX); $ignorefirstrow = Kit::GetParam('ignorefirstrow', _POST, _CHECKBOX); $auth = $this->user->DataSetAuth($dataSetId, true); if (!$auth->edit) { trigger_error(__('Access Denied'), E_USER_ERROR); } // File data $tmpName = Kit::GetParam('hidFileID', _POST, _STRING); if ($tmpName == '') { trigger_error(__('Please ensure you have picked a file and it has finished uploading'), E_USER_ERROR); } // File name and extension (original name) $fileName = Kit::GetParam('txtFileName', _POST, _STRING); $fileName = basename($fileName); $ext = strtolower(substr(strrchr($fileName, "."), 1)); // Check it is a CSV file if ($ext != 'csv') { trigger_error(__('Files with a CSV extension only.'), E_USER_ERROR); } // File upload directory.. get this from the settings object $csvFileLocation = Config::GetSetting('LIBRARY_LOCATION') . 'temp/' . $tmpName; // Enumerate over the columns in the DataSet and offer a column mapping for each one (from the file) $SQL = ""; $SQL .= "SELECT DataSetColumnID "; $SQL .= " FROM datasetcolumn "; $SQL .= sprintf(" WHERE DataSetID = %d ", $dataSetId); $SQL .= " AND DataSetColumnTypeID = 1 "; $SQL .= "ORDER BY ColumnOrder "; // Load results into an array $dataSetColumns = $db->GetArray($SQL); if (!is_array($dataSetColumns)) { trigger_error($db->error()); trigger_error(__('Error getting list of dataSetColumns'), E_USER_ERROR); } $spreadSheetMapping = array(); foreach ($dataSetColumns as $row) { $dataSetColumnId = Kit::ValidateParam($row['DataSetColumnID'], _INT); $spreadSheetColumn = Kit::GetParam('csvImport_' . $dataSetColumnId, _POST, _INT); $spreadSheetMapping[$spreadSheetColumn - 1] = $dataSetColumnId; } $dataSetObject = new DataSetData($db); if (!$dataSetObject->ImportCsv($dataSetId, $csvFileLocation, $spreadSheetMapping, $overwrite == 1, $ignorefirstrow == 1)) { trigger_error($dataSetObject->GetErrorMessage(), E_USER_ERROR); } $response->SetFormSubmitResponse(__('CSV File Imported')); $response->Respond(); }