* Import clipboard data * * @NoAdminRequired * @param int $objectId * @param $import * @param bool $isDataset * @return array|false * @throws \OCP\DB\Exception */
($objectId, $import, bool $isDataset)
| 465 | * @throws \OCP\DB\Exception |
| 466 | */ |
| 467 | public function importClipboard($objectId, $import, bool $isDataset) |
| 468 | { |
| 469 | $datasetId = $this->getDatasetId($objectId, $isDataset); |
| 470 | if ($datasetId != '') { |
| 471 | $insert = $update = $errorMessage = $errorCounter = 0; |
| 472 | $delimiter = ''; |
| 473 | |
| 474 | if ($import === '') { |
| 475 | $errorMessage = $this->l10n->t('No data'); |
| 476 | } else { |
| 477 | $delimiter = $this->detectDelimiter($import); |
| 478 | $rows = str_getcsv($import, "\n"); |
| 479 | |
| 480 | foreach ($rows as &$row) { |
| 481 | $row = str_getcsv($row, $delimiter); |
| 482 | $numberOfColumns = count($row); |
| 483 | // last column needs to be a float |
| 484 | $row[2] = $this->floatvalue($row[$numberOfColumns - 1]); |
| 485 | if ($row[2] === false) { |
| 486 | $errorCounter++; |
| 487 | } else { |
| 488 | if ($numberOfColumns < 3) $row[1] = null; |
| 489 | $action = $this->StorageService->update($datasetId, $row[0], $row[1], $row[2]); |
| 490 | $insert = $insert + $action['insert']; |
| 491 | $update = $update + $action['update']; |
| 492 | } |
| 493 | if ($errorCounter === 2) { |
| 494 | // first error is ignored; might be due to header row |
| 495 | $errorMessage = $this->l10n->t('Last field must be a valid number'); |
| 496 | break; |
| 497 | } |
| 498 | } |
| 499 | } |
| 500 | |
| 501 | $result = [ |
| 502 | 'insert' => $insert, |
| 503 | 'update' => $update, |
| 504 | 'delimiter' => $delimiter, |
| 505 | 'error' => $errorMessage, |
| 506 | ]; |
| 507 | |
| 508 | // Update the Context Chat backend |
| 509 | $this->DatasetService->provider($datasetId); |
| 510 | |
| 511 | //if ($errorMessage === 0) $this->ActivityManager->triggerEvent($dataset, ActivityManager::OBJECT_DATA, ActivityManager::SUBJECT_DATA_ADD_IMPORT); |
| 512 | return $result; |
| 513 | } else { |
| 514 | return false; |
| 515 | } |
| 516 | } |
| 517 | |
| 518 | /** |
| 519 | * Import data into dataset from an internal or external file |
nothing calls this directly
no test coverage detected