Ejemplo n.º 1
0
 /**
  * Process the uploaded file.
  *
  * @return void
  */
 public function postProcess()
 {
     $this->controller->resetPage('MapField');
     $fileName = $this->controller->exportValue($this->_name, 'uploadFile');
     $skipColumnHeader = $this->controller->exportValue($this->_name, 'skipColumnHeader');
     $onDuplicate = $this->controller->exportValue($this->_name, 'onDuplicate');
     $dateFormats = $this->controller->exportValue($this->_name, 'dateFormats');
     $savedMapping = $this->controller->exportValue($this->_name, 'savedMapping');
     $this->set('onDuplicate', $onDuplicate);
     $this->set('dateFormats', $dateFormats);
     $this->set('savedMapping', $savedMapping);
     $session = CRM_Core_Session::singleton();
     $session->set("dateTypes", $dateFormats);
     $config = CRM_Core_Config::singleton();
     $seperator = $config->fieldSeparator;
     $mapper = array();
     $parser = new CRM_Activity_Import_Parser_Activity($mapper);
     $parser->setMaxLinesToProcess(100);
     $parser->run($fileName, $seperator, $mapper, $skipColumnHeader, CRM_Import_Parser::MODE_MAPFIELD);
     // add all the necessary variables to the form
     $parser->set($this);
 }
Ejemplo n.º 2
0
 /**
  * Process the mapped fields and map it into the uploaded file
  * preview the file and extract some summary statistics
  *
  * @return void
  * @access public
  */
 public function postProcess()
 {
     $params = $this->controller->exportValues('MapField');
     //reload the mapfield if load mapping is pressed
     if (!empty($params['savedMapping'])) {
         $this->set('savedMapping', $params['savedMapping']);
         $this->controller->resetPage($this->_name);
         return;
     }
     $fileName = $this->controller->exportValue('DataSource', 'uploadFile');
     $skipColumnHeader = $this->controller->exportValue('DataSource', 'skipColumnHeader');
     $config = CRM_Core_Config::singleton();
     $seperator = $config->fieldSeparator;
     $mapperKeys = array();
     $mapper = array();
     $mapperKeys = $this->controller->exportValue($this->_name, 'mapper');
     $mapperKeysMain = array();
     $mapperLocType = array();
     $mapperPhoneType = array();
     for ($i = 0; $i < $this->_columnCount; $i++) {
         $mapper[$i] = $this->_mapperFields[$mapperKeys[$i][0]];
         $mapperKeysMain[$i] = $mapperKeys[$i][0];
         if (CRM_Utils_Array::value(1, $mapperKeys[$i]) && is_numeric($mapperKeys[$i][1])) {
             $mapperLocType[$i] = $mapperKeys[$i][1];
         } else {
             $mapperLocType[$i] = NULL;
         }
         if (CRM_Utils_Array::value(2, $mapperKeys[$i]) && !is_numeric($mapperKeys[$i][2])) {
             $mapperPhoneType[$i] = $mapperKeys[$i][2];
         } else {
             $mapperPhoneType[$i] = NULL;
         }
     }
     $this->set('mapper', $mapper);
     // store mapping Id to display it in the preview page
     if (!empty($params['mappingId'])) {
         $this->set('loadMappingId', $params['mappingId']);
     }
     //Updating Mapping Records
     if (!empty($params['updateMapping'])) {
         $mappingFields = new CRM_Core_DAO_MappingField();
         $mappingFields->mapping_id = $params['mappingId'];
         $mappingFields->find();
         $mappingFieldsId = array();
         while ($mappingFields->fetch()) {
             if ($mappingFields->id) {
                 $mappingFieldsId[$mappingFields->column_number] = $mappingFields->id;
             }
         }
         for ($i = 0; $i < $this->_columnCount; $i++) {
             $updateMappingFields = new CRM_Core_DAO_MappingField();
             $updateMappingFields->id = $mappingFieldsId[$i];
             $updateMappingFields->mapping_id = $params['mappingId'];
             $updateMappingFields->column_number = $i;
             $updateMappingFields->name = $mapper[$i];
             $updateMappingFields->save();
         }
     }
     //Saving Mapping Details and Records
     if (!empty($params['saveMapping'])) {
         $mappingParams = array('name' => $params['saveMappingName'], 'description' => $params['saveMappingDesc'], 'mapping_type_id' => CRM_Core_OptionGroup::getValue('mapping_type', 'Import Activity', 'name'));
         $saveMapping = CRM_Core_BAO_Mapping::add($mappingParams);
         for ($i = 0; $i < $this->_columnCount; $i++) {
             $saveMappingFields = new CRM_Core_DAO_MappingField();
             $saveMappingFields->mapping_id = $saveMapping->id;
             $saveMappingFields->column_number = $i;
             $saveMappingFields->name = $mapper[$i];
             $saveMappingFields->save();
         }
         $this->set('savedMapping', $saveMappingFields->mapping_id);
     }
     $parser = new CRM_Activity_Import_Parser_Activity($mapperKeysMain, $mapperLocType, $mapperPhoneType);
     $parser->run($fileName, $seperator, $mapper, $skipColumnHeader, CRM_Import_Parser::MODE_PREVIEW);
     // add all the necessary variables to the form
     $parser->set($this);
 }
Ejemplo n.º 3
0
 /**
  * Process the mapped fields and map it into the uploaded file
  * preview the file and extract some summary statistics
  *
  * @return void
  * @access public
  */
 public function postProcess()
 {
     $fileName = $this->controller->exportValue('DataSource', 'uploadFile');
     $skipColumnHeader = $this->controller->exportValue('DataSource', 'skipColumnHeader');
     $invalidRowCount = $this->get('invalidRowCount');
     $conflictRowCount = $this->get('conflictRowCount');
     $onDuplicate = $this->get('onDuplicate');
     $config = CRM_Core_Config::singleton();
     $seperator = $config->fieldSeparator;
     $mapper = $this->controller->exportValue('MapField', 'mapper');
     $mapperKeys = array();
     $mapperLocType = array();
     $mapperPhoneType = array();
     foreach ($mapper as $key => $value) {
         $mapperKeys[$key] = $mapper[$key][0];
         if (CRM_Utils_Array::value(1, $mapper[$key]) && is_numeric($mapper[$key][1])) {
             $mapperLocType[$key] = $mapper[$key][1];
         } else {
             $mapperLocType[$key] = NULL;
         }
         if (CRM_Utils_Array::value(2, $mapper[$key]) && !is_numeric($mapper[$key][2])) {
             $mapperPhoneType[$key] = $mapper[$key][2];
         } else {
             $mapperPhoneType[$key] = NULL;
         }
     }
     $parser = new CRM_Activity_Import_Parser_Activity($mapperKeys, $mapperLocType, $mapperPhoneType);
     $mapFields = $this->get('fields');
     foreach ($mapper as $key => $value) {
         $header = array();
         if (isset($mapFields[$mapper[$key][0]])) {
             $header[] = $mapFields[$mapper[$key][0]];
         }
         $mapperFields[] = implode(' - ', $header);
     }
     $parser->run($fileName, $seperator, $mapperFields, $skipColumnHeader, CRM_Import_Parser::MODE_IMPORT, $onDuplicate);
     // add all the necessary variables to the form
     $parser->set($this, CRM_Import_Parser::MODE_IMPORT);
     // check if there is any error occured
     $errorStack = CRM_Core_Error::singleton();
     $errors = $errorStack->getErrors();
     $errorMessage = array();
     if (is_array($errors)) {
         foreach ($errors as $key => $value) {
             $errorMessage[] = $value['message'];
         }
         $errorFile = $fileName['name'] . '.error.log';
         if ($fd = fopen($errorFile, 'w')) {
             fwrite($fd, implode('\\n', $errorMessage));
         }
         fclose($fd);
         $this->set('errorFile', $errorFile);
         $urlParams = 'type=' . CRM_Import_Parser::ERROR . '&parser=CRM_Activity_Import_Parser';
         $this->set('downloadErrorRecordsUrl', CRM_Utils_System::url('civicrm/export', $urlParams));
         $urlParams = 'type=' . CRM_Import_Parser::CONFLICT . '&parser=CRM_Activity_Import_Parser';
         $this->set('downloadConflictRecordsUrl', CRM_Utils_System::url('civicrm/export', $urlParams));
         $urlParams = 'type=' . CRM_Import_Parser::NO_MATCH . '&parser=CRM_Activity_Import_Parser';
         $this->set('downloadMismatchRecordsUrl', CRM_Utils_System::url('civicrm/export', $urlParams));
     }
 }