$importJob->isComplete(TRUE);
}
- /**
- * Process the mapped fields and map it into the uploaded file.
- */
- public function postProcessOld() {
-
- $doGeocodeAddress = $this->controller->exportValue('DataSource', 'doGeocodeAddress');
- $invalidRowCount = $this->get('invalidRowCount');
- $conflictRowCount = $this->get('conflictRowCount');
- $onDuplicate = $this->get('onDuplicate');
- $newGroupName = $this->controller->exportValue($this->_name, 'newGroupName');
- $newGroupDesc = $this->controller->exportValue($this->_name, 'newGroupDesc');
- $newGroupType = $this->controller->exportValue($this->_name, 'newGroupType');
- $groups = $this->controller->exportValue($this->_name, 'groups');
- $allGroups = $this->get('groups');
- $newTagName = $this->controller->exportValue($this->_name, 'newTagName');
- $newTagDesc = $this->controller->exportValue($this->_name, 'newTagDesc');
- $tag = $this->controller->exportValue($this->_name, 'tag');
- $allTags = $this->get('tag');
-
- $mapper = $this->controller->exportValue('MapField', 'mapper');
-
- $mapperKeys = [];
- $mapperLocTypes = [];
- $mapperPhoneTypes = [];
- $mapperRelated = [];
- $mapperRelatedContactType = [];
- $mapperRelatedContactDetails = [];
- $mapperRelatedContactLocType = [];
- $mapperRelatedContactPhoneType = [];
-
- foreach ($mapper as $key => $value) {
- $mapperKeys[$key] = $mapper[$key][0];
- if (is_numeric($mapper[$key][1])) {
- $mapperLocTypes[$key] = $mapper[$key][1];
- }
- else {
- $mapperLocTypes[$key] = NULL;
- }
-
- if (CRM_Utils_Array::value($key, $mapperKeys) == 'phone') {
- $mapperPhoneTypes[$key] = $mapper[$key][2];
- }
- else {
- $mapperPhoneTypes[$key] = NULL;
- }
-
- list($id, $first, $second) = explode('_', $mapper[$key][0]);
- if (($first == 'a' && $second == 'b') || ($first == 'b' && $second == 'a')) {
- $relationType = new CRM_Contact_DAO_RelationshipType();
- $relationType->id = $id;
- $relationType->find(TRUE);
- $fieldName = "contact_type_$second";
- $mapperRelatedContactType[$key] = $relationType->$fieldName;
- $mapperRelated[$key] = $mapper[$key][0];
- $mapperRelatedContactDetails[$key] = $mapper[$key][1];
- $mapperRelatedContactLocType[$key] = $mapper[$key][2];
- $mapperRelatedContactPhoneType[$key] = $mapper[$key][3];
- }
- else {
- $mapperRelated[$key] = NULL;
- $mapperRelatedContactType[$key] = NULL;
- $mapperRelatedContactDetails[$key] = NULL;
- $mapperRelatedContactLocType[$key] = NULL;
- $mapperRelatedContactPhoneType[$key] = NULL;
- }
- }
-
- $parser = new CRM_Contact_Import_Parser_Contact($mapperKeys, $mapperLocTypes,
- $mapperPhoneTypes, $mapperRelated, $mapperRelatedContactType,
- $mapperRelatedContactDetails, $mapperRelatedContactLocType,
- $mapperRelatedContactPhoneType
- );
-
- $mapFields = $this->get('fields');
-
- $locationTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Address', 'location_type_id');
- $phoneTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Phone', 'phone_type_id');
-
- foreach ($mapper as $key => $value) {
- $header = [];
- list($id, $first, $second) = explode('_', $mapper[$key][0]);
- if (($first == 'a' && $second == 'b') || ($first == 'b' && $second == 'a')) {
- $relationType = new CRM_Contact_DAO_RelationshipType();
- $relationType->id = $id;
- $relationType->find(TRUE);
-
- $header[] = $relationType->name_a_b;
- $header[] = ucwords(str_replace("_", " ", $mapper[$key][1]));
-
- if (isset($mapper[$key][2])) {
- $header[] = $locationTypes[$mapper[$key][2]];
- }
- if (isset($mapper[$key][3])) {
- $header[] = $phoneTypes[$mapper[$key][3]];
- }
- }
- else {
- if (isset($mapFields[$mapper[$key][0]])) {
- $header[] = $mapFields[$mapper[$key][0]];
- if (isset($mapper[$key][1])) {
- $header[] = $locationTypes[$mapper[$key][1]];
- }
- if (isset($mapper[$key][2])) {
- $header[] = $phoneTypes[$mapper[$key][2]];
- }
- }
- }
- $mapperFields[] = implode(' - ', $header);
- }
-
- $tableName = $this->get('importTableName');
- //print "Running parser on table: $tableName<br/>";
- $parser->run($tableName, $mapperFields,
- CRM_Import_Parser::MODE_IMPORT,
- $this->get('contactType'),
- $this->get('primaryKeyName'),
- $this->get('statusFieldName'),
- $onDuplicate,
- $this->get('statusID'),
- $this->get('totalRowCount'),
- $doGeocodeAddress,
- CRM_Contact_Import_Parser_Contact::DEFAULT_TIMEOUT,
- $this->get('contactSubType'),
- $this->get('dedupe')
- );
-
- // add the new contacts to selected groups
- $contactIds = $parser->getImportedContacts();
-
- // add the new related contacts to selected groups
- $relatedContactIds = &$parser->getRelatedImportedContacts();
-
- $this->set('relatedCount', count($relatedContactIds));
- $newGroupId = NULL;
-
- //changed below if-statement "if ($newGroup) {" to "if ($newGroupName) {"
- if ($newGroupName) {
- /* Create a new group */
-
- $gParams = array(
- 'name' => $newGroupName,
- 'title' => $newGroupName,
- 'description' => $newGroupDesc,
- 'group_type' => $newGroupType,
- 'is_active' => TRUE,
- );
- $group = CRM_Contact_BAO_Group::create($gParams);
- $groups[] = $newGroupId = $group->id;
- }
-
- if (is_array($groups)) {
- $groupAdditions = [];
- foreach ($groups as $groupId) {
- $addCount = CRM_Contact_BAO_GroupContact::addContactsToGroup($contactIds, $groupId);
- if (!empty($relatedContactIds)) {
- $addRelCount = CRM_Contact_BAO_GroupContact::addContactsToGroup($relatedContactIds, $groupId);
- }
- $totalCount = $addCount[1] + $addRelCount[1];
- if ($groupId == $newGroupId) {
- $name = $newGroupName;
- $new = TRUE;
- }
- else {
- $name = $allGroups[$groupId];
- $new = FALSE;
- }
- $groupAdditions[] = array(
- 'url' => CRM_Utils_System::url('civicrm/group/search',
- 'reset=1&force=1&context=smog&gid=' . $groupId
- ),
- 'name' => $name,
- 'added' => $totalCount,
- 'notAdded' => $addCount[2] + $addRelCount[2],
- 'new' => $new,
- );
- }
- $this->set('groupAdditions', $groupAdditions);
- }
-
- $newTagId = NULL;
- if ($newTagName) {
- /* Create a new Tag */
-
- $tagParams = array(
- 'name' => $newTagName,
- 'title' => $newTagName,
- 'description' => $newTagDesc,
- 'is_active' => TRUE,
- );
- $addedTag = CRM_Core_BAO_Tag::add($tagParams);
- $tag[$addedTag->id] = 1;
- }
- //add Tag to Import
-
- if (is_array($tag)) {
-
- $tagAdditions = [];
- foreach ($tag as $tagId => $val) {
- $addTagCount = CRM_Core_BAO_EntityTag::addContactsToTag($contactIds, $tagId);
- if (!empty($relatedContactIds)) {
- $addRelTagCount = CRM_Core_BAO_EntityTag::addContactsToTag($relatedContactIds, $tagId);
- }
- $totalTagCount = $addTagCount[1] + $addRelTagCount[1];
- if ($tagId == $addedTag->id) {
- $tagName = $newTagName;
- $new = TRUE;
- }
- else {
- $tagName = $allTags[$tagId];
- $new = FALSE;
- }
- $tagAdditions[] = array(
- 'url' => CRM_Utils_System::url('civicrm/contact/search',
- 'reset=1&force=1&context=smog&id=' . $tagId
- ),
- 'name' => $tagName,
- 'added' => $totalTagCount,
- 'notAdded' => $addTagCount[2] + $addRelTagCount[2],
- 'new' => $new,
- );
- }
- $this->set('tagAdditions', $tagAdditions);
- }
-
- // add all the necessary variables to the form
- $parser->set($this, CRM_Import_Parser::MODE_IMPORT);
-
- // check if there is any error occurred
-
- $errorStack = CRM_Core_Error::singleton();
- $errors = $errorStack->getErrors();
- $errorMessage = [];
-
- if (is_array($errors)) {
- foreach ($errors as $key => $value) {
- $errorMessage[] = $value['message'];
- }
-
- // there is no fileName since this is a sql import
- // so fudge it
- $config = CRM_Core_Config::singleton();
- $errorFile = $config->uploadDir . "sqlImport.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_Contact_Import_Parser_Contact';
- $this->set('downloadErrorRecordsUrl', CRM_Utils_System::url('civicrm/export', $urlparams));
-
- $urlParams = 'type=' . CRM_Import_Parser::CONFLICT . '&parser=CRM_Contact_Import_Parser_Contact';
- $this->set('downloadConflictRecordsUrl', CRM_Utils_System::url('civicrm/export', $urlParams));
-
- $urlParams = 'type=' . CRM_Import_Parser::NO_MATCH . '&parser=CRM_Contact_Import_Parser_Contact';
- $this->set('downloadMismatchRecordsUrl', CRM_Utils_System::url('civicrm/export', $urlParams));
- }
- }
-
}