Ejemplo n.º 1
0
 /**
  * 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;
     }
 }
Ejemplo n.º 2
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));
 }
Ejemplo n.º 3
0
 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();
 }