/** * Map the columns for an import. */ public function mapColumnsAction() { if (!$this->_sessionIsValid()) { $this->_helper->flashMessenger(__('Import settings expired. Please try again.'), 'error'); $this->_helper->redirector->goto('index'); return; } require_once CSV_IMPORT_DIRECTORY . '/forms/Mapping.php'; $form = new CsvImport_Form_Mapping(array('itemTypeId' => $this->session->itemTypeId, 'columnNames' => $this->session->columnNames, 'columnExamples' => $this->session->columnExamples, 'fileDelimiter' => $this->session->fileDelimiter, 'tagDelimiter' => $this->session->tagDelimiter, 'elementDelimiter' => $this->session->elementDelimiter, 'automapColumnNamesToElements' => $this->session->automapColumnNamesToElements)); $this->view->form = $form; if (!$this->getRequest()->isPost()) { return; } if (!$form->isValid($this->getRequest()->getPost())) { $this->_helper->flashMessenger(__('Invalid form input. Please try again.'), 'error'); return; } $columnMaps = $form->getColumnMaps(); if (count($columnMaps) == 0) { $this->_helper->flashMessenger(__('Please map at least one column to an element, file, or tag.'), 'error'); return; } $csvImport = new CsvImport_Import(); foreach ($this->session->getIterator() as $key => $value) { $setMethod = 'set' . ucwords($key); if (method_exists($csvImport, $setMethod)) { $csvImport->{$setMethod}($value); } } $csvImport->setColumnMaps($columnMaps); if ($csvImport->queue()) { $this->_dispatchImportTask($csvImport, CsvImport_ImportTask::METHOD_START); $this->_helper->flashMessenger(__('Import started. Reload this page for status updates.'), 'success'); } else { $this->_helper->flashMessenger(__('Import could not be started. Please check error logs for more details.'), 'error'); } $this->session->unsetAll(); $this->_helper->redirector->goto('browse'); }
/** * Map the columns for an import (second step if needed or wished). */ public function mapColumnsAction() { if (!$this->_sessionIsValid()) { $this->_helper->flashMessenger(__('Import settings expired. Please try again.'), 'error'); $this->_helper->redirector->goto('index'); return; } require_once CSV_IMPORT_DIRECTORY . '/forms/Mapping.php'; $parameters = array('columnNames' => $this->session->columnNames, 'columnExamples' => $this->session->columnExamples, 'elementDelimiter' => $this->session->elementDelimiter, 'tagDelimiter' => $this->session->tagDelimiter, 'fileDelimiter' => $this->session->fileDelimiter, 'itemTypeId' => $this->session->itemTypeId, 'collectionId' => $this->session->collectionId, 'isPublic' => $this->session->recordsArePublic, 'isFeatured' => $this->session->recordsAreFeatured, 'elementsAreHtml' => $this->session->elementsAreHtml); $parameters += array('action' => $this->session->action, 'identifierField' => $this->session->identifierField); $form = new CsvImport_Form_Mapping($parameters); if (!$form) { $this->_helper->flashMessenger(__('Invalid form input. Please try again.'), 'error'); $this->_helper->redirector->goto('index'); } $this->view->form = $form; $this->view->csvFile = basename($this->session->originalFilename); if (!$this->getRequest()->isPost()) { return; } if (!$form->isValid($this->getRequest()->getPost())) { $this->_helper->flashMessenger(__('Invalid form input. Please try again.'), 'error'); return; } $columnMaps = $form->getColumnMaps(); if (count($columnMaps) == 0) { $this->_helper->flashMessenger(__('Please map at least one column to an element, file, or tag.'), 'error'); return; } // Check if there is an identifier column. $isSetIdentifier = false; foreach ($columnMaps as $columnMap) { if ($columnMap instanceof CsvImport_ColumnMap_Identifier) { $isSetIdentifier = true; break; } } if (!$isSetIdentifier) { $this->_helper->flashMessenger(__('Please map a column to the special value "Identifier".'), 'error'); return; } $this->session->columnMaps = $columnMaps; $this->_launchImport(); }