MCPcopy Create free account
hub / github.com/Rello/analytics / importClipboard

Method importClipboard

lib/Service/DataloadService.php:467–516  ·  view source on GitHub ↗

* Import clipboard data * * @NoAdminRequired * @param int $objectId * @param $import * @param bool $isDataset * @return array|false * @throws \OCP\DB\Exception */

($objectId, $import, bool $isDataset)

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 6

getDatasetIdMethod · 0.95
detectDelimiterMethod · 0.95
floatvalueMethod · 0.95
tMethod · 0.45
updateMethod · 0.45
providerMethod · 0.45

Tested by

no test coverage detected