/**
  * 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();
 }