public function transformForImport($fieldData, $moduleMeta, $fillDefault = true, $mergeMode = false) { $moduleFields = $moduleMeta->getModuleFields(); $defaultFieldValues = $this->getDefaultFieldValues($moduleMeta); foreach ($fieldData as $fieldName => $fieldValue) { $fieldInstance = $moduleFields[$fieldName]; if (!is_object($fieldInstance)) { continue; } // specially for Inventory module import which has virtual item line fields if ($fieldInstance->getFieldDataType() == 'owner') { global $adb; if (strpos($fieldValue, '::::') > 0) { $fieldValueDetails = explode('::::', $fieldValue); } else { $fieldValueDetails = explode(':::', $fieldValue); } if (count($fieldValueDetails) == 2) { $fieldValue = $fieldValueDetails[1]; } if (count($fieldValueDetails) == 3) { $user_qry = 'select vtiger_users.id from vtiger_users where ' . $fieldValueDetails[2] . ' = ?'; $res = $adb->pquery($user_qry, array($fieldValueDetails[1])); $ownerId = 0; if ($res and $adb->num_rows($res) > 0) { $ownerId = $adb->query_result($res, 0, 'id'); } } else { $ownerId = getUserId_Ol($fieldValue); if (empty($ownerId)) { $ownerId = getGrpId($fieldValue); } } if (empty($ownerId) && isset($defaultFieldValues[$fieldName])) { $ownerId = $defaultFieldValues[$fieldName]; } if (empty($ownerId) || !Import_Utils::hasAssignPrivilege($moduleMeta->getEntityName(), $ownerId)) { $ownerId = $this->user->id; } $fieldData[$fieldName] = $ownerId; } elseif ($fieldInstance->getFieldDataType() == 'reference') { $entityId = false; if (!empty($fieldValue)) { if (strpos($fieldValue, '::::') > 0) { $fieldValueDetails = explode('::::', $fieldValue); } else { $fieldValueDetails = explode(':::', $fieldValue); } if (count($fieldValueDetails) > 1) { $referenceModuleName = trim($fieldValueDetails[0]); $entityLabel = trim($fieldValueDetails[1]); if (!empty($fieldValueDetails[2])) { $entityId = getEntityId($referenceModuleName, $entityLabel, $fieldValueDetails[2]); } else { $entityId = getEntityId($referenceModuleName, $entityLabel); } } else { $referencedModules = $fieldInstance->getReferenceList(); $entityLabel = $fieldValue; foreach ($referencedModules as $referenceModule) { $referenceModuleName = $referenceModule; if ($referenceModule == 'Users') { $referenceEntityId = getUserId_Ol($entityLabel); if (empty($referenceEntityId) || !Import_Utils::hasAssignPrivilege($moduleMeta->getEntityName(), $referenceEntityId)) { $referenceEntityId = $this->user->id; } } else { $referenceEntityId = getEntityId($referenceModule, $entityLabel); } if ($referenceEntityId != 0) { $entityId = $referenceEntityId; break; } } } if ((empty($entityId) || $entityId == 0) && (!empty($referenceModuleName) and !in_array($referenceModuleName, getInventoryModules()))) { if (isPermitted($referenceModuleName, 'EditView') == 'yes') { $wsEntityIdInfo = $this->createEntityRecord($referenceModuleName, $entityLabel); $wsEntityId = $wsEntityIdInfo['id']; $entityIdComponents = vtws_getIdComponents($wsEntityId); $entityId = $entityIdComponents[1]; } } $fieldData[$fieldName] = $entityId; } else { $referencedModules = $fieldInstance->getReferenceList(); if ($referencedModules[0] == 'Users') { if (isset($defaultFieldValues[$fieldName])) { $fieldData[$fieldName] = $defaultFieldValues[$fieldName]; } if (empty($fieldData[$fieldName]) || !Import_Utils::hasAssignPrivilege($moduleMeta->getEntityName(), $fieldData[$fieldName])) { $fieldData[$fieldName] = $this->user->id; } } else { $fieldData[$fieldName] = ''; } } } elseif ($fieldInstance->getFieldDataType() == 'picklist') { global $default_charset; if (empty($fieldValue) && isset($defaultFieldValues[$fieldName])) { $fieldData[$fieldName] = $fieldValue = $defaultFieldValues[$fieldName]; } $allPicklistDetails = $fieldInstance->getPicklistDetails(); $allPicklistValues = array(); foreach ($allPicklistDetails as $picklistDetails) { $allPicklistValues[] = $picklistDetails['value']; } $encodePicklistValue = $fieldValue; if (!in_array($encodePicklistValue, $allPicklistValues)) { $moduleObject = Vtiger_Module::getInstance($moduleMeta->getEntityName()); $fieldObject = Vtiger_Field::getInstance($fieldName, $moduleObject); $fieldObject->setPicklistValues(array($fieldValue)); } } else { if ($fieldInstance->getFieldDataType() == 'datetime' && !empty($fieldValue)) { if ($fieldValue == null || $fieldValue == '0000-00-00 00:00:00') { $fieldValue = ''; } $valuesList = explode(' ', $fieldValue); if (count($valuesList) == 1) { $fieldValue = ''; } $fieldValue = getValidDBInsertDateTimeValue($fieldValue); if (preg_match("/^[0-9]{2,4}[-][0-1]{1,2}?[0-9]{1,2}[-][0-3]{1,2}?[0-9]{1,2} ([0-1][0-9]|[2][0-3])([:][0-5][0-9]){1,2}\$/", $fieldValue) == 0) { $fieldValue = ''; } $fieldData[$fieldName] = $fieldValue; } if ($fieldInstance->getFieldDataType() == 'date' && !empty($fieldValue)) { if ($fieldValue == null || $fieldValue == '0000-00-00') { $fieldValue = ''; } $fieldValue = getValidDBInsertDateValue($fieldValue); if (preg_match("/^[0-9]{2,4}[-][0-1]{1,2}?[0-9]{1,2}[-][0-3]{1,2}?[0-9]{1,2}\$/", $fieldValue) == 0) { $fieldValue = ''; } $fieldData[$fieldName] = $fieldValue; } if (empty($fieldValue) && isset($defaultFieldValues[$fieldName]) && !$mergeMode) { $fieldData[$fieldName] = $fieldValue = $defaultFieldValues[$fieldName]; } } } if ($fillDefault) { foreach ($defaultFieldValues as $fieldName => $fieldValue) { if (!isset($fieldData[$fieldName])) { $fieldData[$fieldName] = $defaultFieldValues[$fieldName]; } } } if (!$mergeMode) { //Do not check mandatory fields on merge ! foreach ($moduleFields as $fieldName => $fieldInstance) { if (empty($fieldData[$fieldName]) && $fieldInstance->isMandatory()) { return null; } } } return DataTransform::sanitizeData($fieldData, $moduleMeta); }
/** function used to save the records into database * @param array $rows - array of total rows of the csv file * @param array $rows1 - rows to be saved * @param object $focus - object of the corresponding import module * @param int $ret_field_count - total number of fields(columns) available in the csv file * @param int $col_pos_to_field - field position in the mapped array * @param int $start - starting row count value to import * @param int $recordcount - count of records to be import ie., number of records to import * @param string $module - import module * @param int $totalnoofrows - total number of rows available * @param int $skip_required_count - number of records skipped This function will redirect to the ImportStep3 if the available records is greater than the record count (ie., number of records import in a single loop) otherwise (total records less than 500) then it will be redirected to import step last */ function InsertImportRecords($rows, $rows1, $focus, $ret_field_count, $col_pos_to_field, $start, $recordcount, $module, $totalnoofrows, $skip_required_count) { global $current_user; global $adb; global $mod_strings; global $dup_ow_count; global $process_fields; // MWC ** Getting vtiger_users $users_groups_list = array(); $dup_count = 0; $count = 0; $dup_ow_count = 0; $process_fields = 'false'; if ($start == 0) { $_SESSION['totalrows'] = $rows; $_SESSION['return_field_count'] = $ret_field_count; $_SESSION['column_position_to_field'] = $col_pos_to_field; } $ii = $start; // go thru each row, process and save() foreach ($rows1 as $row) { $adb->println("Going to Save the row " . $ii . " =====> "); $adb->println($row); global $mod_strings; $do_save = 1; //MWC $my_userid = $current_user->id; //If we want to set default values for some fields for each entity then we have to set here if ($module == 'Products' || $module == 'Services') { //discontinued is not null. if we unmap active, NULL will be inserted and query will fail $focus->column_fields['discontinued'] = 'on'; } for ($field_count = 0; $field_count < $ret_field_count; $field_count++) { p("col_pos[" . $field_count . "]=" . $col_pos_to_field[$field_count]); if (isset($col_pos_to_field[$field_count])) { p("set =" . $field_count); if (!isset($row[$field_count])) { continue; } p("setting"); // TODO: add check for user input // addslashes, striptags, etc.. $field = $col_pos_to_field[$field_count]; //picklist function is added to avoid duplicate picklist entries $pick_orginal_val = getPicklist($field, $row[$field_count]); if ($pick_orginal_val != null) { $focus->column_fields[$field] = $pick_orginal_val; } elseif ($field == "assignedto" || $field == "assigned_user_id") { //Here we are assigning the user id in column fields, so in function assign_user (ImportLead.php and ImportProduct.php files) we should use the id instead of user name when query the user //or we can use $focus->column_fields['smownerid'] = $users_groups_list[$row[$field_count]]; $row[$field_count] = trim($row[$field_count]); if (empty($users_groups_list[$row[$field_count]])) { $id = getUserId_Ol($row[$field_count]); if (empty($id)) { $id = getGrpId($row[$field_count]); } $users_groups_list[trim($row[$field_count])] = $id; } $focus->column_fields[$field] = $users_groups_list[$row[$field_count]]; p("setting my_userid={$my_userid} for user="******"Setting " . $field . "=" . $row[$field_count]); } } } if ($focus->column_fields['notify_owner'] == '') { $focus->column_fields['notify_owner'] = '0'; } if ($focus->column_fields['reference'] == '') { $focus->column_fields['reference'] = '0'; } if ($focus->column_fields['emailoptout'] == '') { $focus->column_fields['emailoptout'] = '0'; } if ($focus->column_fields['donotcall'] == '') { $focus->column_fields['donotcall'] = '0'; } if ($focus->column_fields['discontinued'] == '') { $focus->column_fields['discontinued'] = '0'; } if ($focus->column_fields['active'] == '') { $focus->column_fields['active'] = '0'; } p("setting done"); p("do save before req vtiger_fields=" . $do_save); $adb->println($focus->required_fields); foreach ($focus->required_fields as $field => $notused) { $fv = trim($focus->column_fields[$field]); if (!isset($fv) || $fv == '') { // Leads Import does not allow an empty lastname because the link is created on the lastname // Without lastname the Lead could not be opened. // But what if the import file has only company and telefone information? // It would be stupid to skip all the companies which don't have a contact person yet! // So we set lastname ="?????" and the user can later enter a name. // So the lastname is still mandatory but may be empty. if ($field == 'lastname' && $module == 'Leads') { $focus->column_fields[$field] = '?????'; } else { p("fv " . $field . " not set"); $do_save = 0; $skip_required_count++; break; } } } if (!isset($focus->column_fields["assigned_user_id"]) || $focus->column_fields["assigned_user_id"] === '' || $focus->column_fields["assigned_user_id"] === NULL) { $focus->column_fields["assigned_user_id"] = $my_userid; } //added for duplicate handling if (is_record_exist($module, $focus, $col_pos_to_field)) { if ($do_save != 0) { $do_save = 0; $dup_count++; } } p("do save=" . $do_save); if ($do_save) { p("saving.."); if (!isset($focus->column_fields["assigned_user_id"]) || $focus->column_fields["assigned_user_id"] == '') { //$focus->column_fields["assigned_user_id"] = $current_user->id; //MWC $focus->column_fields["assigned_user_id"] = $my_userid; } //handle uitype 10 foreach ($focus->importable_fields as $fieldname => $uitype) { $uitype = $focus->importable_fields[$fieldname]; if ($uitype == 10) { //added to handle security permissions for related modules :: for e.g. Accounts/Contacts in Potentials if (method_exists($focus, "add_related_to")) { if (!$focus->add_related_to($module, $fieldname)) { if (array_key_exists($fieldname, $focus->required_fields)) { $do_save = 0; $skip_required_count++; continue 2; } } } } } // now do any special processing for ex., map account with contact and potential if ($process_fields == 'false') { $focus->process_special_fields(); } $focus->saveentity($module); //$focus->saveentity($module); $return_id = $focus->id; $last_import = new UsersLastImport(); $last_import->assigned_user_id = $current_user->id; $last_import->bean_type = $_REQUEST['module']; $last_import->bean_id = $focus->id; $last_import->save(); $count++; } $ii++; } $_REQUEST['count'] = $ii; if (isset($_REQUEST['module'])) { $modulename = vtlib_purify($_REQUEST['module']); } $end = $start + $recordcount; $START = $start + $recordcount; $RECORDCOUNT = $recordcount; $dup_check_type = $_REQUEST['dup_type']; $auto_dup_type = $_REQUEST['auto_type']; if ($end >= $totalnoofrows) { $module = 'Import'; //$_REQUEST['module']; $action = 'ImportSteplast'; //exit; $imported_records = $totalnoofrows - $skip_required_count; if ($imported_records == $totalnoofrows) { $skip_required_count = 0; } if ($dup_check_type == "auto") { if ($auto_dup_type == "ignore") { $dup_info = $mod_strings['Duplicate_Records_Skipped_Info'] . $dup_count; $imported_records -= $dup_count; } else { if ($auto_dup_type == "overwrite") { $dup_info = $mod_strings['Duplicate_Records_Overwrite_Info'] . $dup_ow_count; $imported_records -= $dup_ow_count; } } } else { $dup_info = ""; } if ($imported_records < 0) { $imported_records = 0; } $message = urlencode("<b>" . $mod_strings['LBL_SUCCESS'] . "</b>" . "<br><br>" . $mod_strings['LBL_SUCCESS_1'] . " {$imported_records} " . $mod_strings['of'] . ' ' . $totalnoofrows . "<br><br>" . $mod_strings['LBL_SKIPPED_1'] . " {$skip_required_count} <br><br>" . $dup_info); } else { $module = 'Import'; $action = 'ImportStep3'; } ?> <script> setTimeout("b()",1000); function b() { document.location.href="index.php?action=<?php echo $action; ?> &module=<?php echo $module; ?> &modulename=<?php echo $modulename; ?> &startval=<?php echo $end; ?> &recordcount=<?php echo $RECORDCOUNT; ?> &noofrows=<?php echo $totalnoofrows; ?> &message=<?php echo $message; ?> &skipped_record_count=<?php echo $skip_required_count; ?> &parenttab=<?php echo vtlib_purify($_SESSION['import_parenttab']); ?> &dup_type=<?php echo $dup_check_type; ?> &auto_type=<?php echo $auto_dup_type; ?> "; } </script> <?php $_SESSION['import_display_message'] = '<br>' . $start . ' ' . $mod_strings['to'] . ' ' . $end . ' ' . $mod_strings['of'] . ' ' . $totalnoofrows . ' ' . $mod_strings['are_imported_succesfully']; //return $_SESSION['import_display_message']; }
public function transformForImport($fieldData, $moduleMeta, $fillDefault = true, $checkMandatoryFieldValues = true) { $moduleFields = $moduleMeta->getModuleFields(); $defaultFieldValues = $this->getDefaultFieldValues($moduleMeta); foreach ($fieldData as $fieldName => $fieldValue) { $fieldInstance = $moduleFields[$fieldName]; if ($fieldInstance->getFieldDataType() == 'owner') { $ownerId = getUserId_Ol(trim($fieldValue)); if (empty($ownerId)) { $ownerId = getGrpId($fieldValue); } if (empty($ownerId) && isset($defaultFieldValues[$fieldName])) { $ownerId = $defaultFieldValues[$fieldName]; } if (empty($ownerId) || !Import_Utils_Helper::hasAssignPrivilege($moduleMeta->getEntityName(), $ownerId)) { $ownerId = $this->user->id; } $fieldData[$fieldName] = $ownerId; } elseif ($fieldInstance->getFieldDataType() == 'multipicklist') { $trimmedValue = trim($fieldValue); if (!$trimmedValue && isset($defaultFieldValues[$fieldName])) { $explodedValue = explode(',', $defaultFieldValues[$fieldName]); } else { $explodedValue = explode(' |##| ', $trimmedValue); } foreach ($explodedValue as $key => $value) { $explodedValue[$key] = trim($value); } $implodeValue = implode(' |##| ', $explodedValue); $fieldData[$fieldName] = $implodeValue; } elseif ($fieldInstance->getFieldDataType() == 'reference') { $entityId = false; if (!empty($fieldValue)) { if (strpos($fieldValue, '::::') > 0) { $fieldValueDetails = explode('::::', $fieldValue); } else { if (strpos($fieldValue, ':::') > 0) { $fieldValueDetails = explode(':::', $fieldValue); } else { $fieldValueDetails = $fieldValue; } } if (count($fieldValueDetails) > 1) { $referenceModuleName = trim($fieldValueDetails[0]); $entityLabel = trim($fieldValueDetails[1]); $entityId = getEntityId($referenceModuleName, $entityLabel); } else { $referencedModules = $fieldInstance->getReferenceList(); $entityLabel = $fieldValue; foreach ($referencedModules as $referenceModule) { $referenceModuleName = $referenceModule; if ($referenceModule == 'Users') { $referenceEntityId = getUserId_Ol($entityLabel); if (empty($referenceEntityId) || !Import_Utils_Helper::hasAssignPrivilege($moduleMeta->getEntityName(), $referenceEntityId)) { $referenceEntityId = $this->user->id; } } elseif ($referenceModule == 'Currency') { $referenceEntityId = getCurrencyId($entityLabel); } else { $referenceEntityId = getEntityId($referenceModule, $entityLabel); } if ($referenceEntityId != 0) { $entityId = $referenceEntityId; break; } } } if ((empty($entityId) || $entityId == 0) && !empty($referenceModuleName)) { if (isPermitted($referenceModuleName, 'EditView') == 'yes') { try { $wsEntityIdInfo = $this->createEntityRecord($referenceModuleName, $entityLabel); $wsEntityId = $wsEntityIdInfo['id']; $entityIdComponents = vtws_getIdComponents($wsEntityId); $entityId = $entityIdComponents[1]; } catch (Exception $e) { $entityId = false; } } } $fieldData[$fieldName] = $entityId; } else { $referencedModules = $fieldInstance->getReferenceList(); if ($referencedModules[0] == 'Users') { if (isset($defaultFieldValues[$fieldName])) { $fieldData[$fieldName] = $defaultFieldValues[$fieldName]; } if (empty($fieldData[$fieldName]) || !Import_Utils_Helper::hasAssignPrivilege($moduleMeta->getEntityName(), $fieldData[$fieldName])) { $fieldData[$fieldName] = $this->user->id; } } else { $fieldData[$fieldName] = ''; } } } elseif ($fieldInstance->getFieldDataType() == 'picklist') { $fieldValue = trim($fieldValue); global $default_charset; if (empty($fieldValue) && isset($defaultFieldValues[$fieldName])) { $fieldData[$fieldName] = $fieldValue = $defaultFieldValues[$fieldName]; } $olderCacheEnable = Vtiger_Cache::$cacheEnable; Vtiger_Cache::$cacheEnable = false; if (!isset($this->allPicklistValues[$fieldName])) { $this->allPicklistValues[$fieldName] = $fieldInstance->getPicklistDetails(); } $allPicklistDetails = $this->allPicklistValues[$fieldName]; $allPicklistValues = array(); foreach ($allPicklistDetails as $picklistDetails) { $allPicklistValues[] = $picklistDetails['value']; } $picklistValueInLowerCase = strtolower(htmlentities($fieldValue, ENT_QUOTES, $default_charset)); $allPicklistValuesInLowerCase = array_map('strtolower', $allPicklistValues); $picklistDetails = array_combine($allPicklistValuesInLowerCase, $allPicklistValues); if (!in_array($picklistValueInLowerCase, $allPicklistValuesInLowerCase)) { $moduleObject = Vtiger_Module::getInstance($moduleMeta->getEntityName()); $fieldObject = Vtiger_Field::getInstance($fieldName, $moduleObject); $fieldObject->setPicklistValues(array($fieldValue)); unset($this->allPicklistValues[$fieldName]); } else { $fieldData[$fieldName] = $picklistDetails[$picklistValueInLowerCase]; } Vtiger_Cache::$cacheEnable = $olderCacheEnable; } else { if ($fieldInstance->getFieldDataType() == 'currency') { // While exporting we are exporting as user format, we should import as db format while importing $fieldData[$fieldName] = CurrencyField::convertToDBFormat($fieldValue, $current_user, false); } else { if ($fieldInstance->getFieldDataType() == 'datetime' && !empty($fieldValue)) { if ($fieldValue == null || $fieldValue == '0000-00-00 00:00:00') { $fieldValue = ''; } $valuesList = explode(' ', $fieldValue); if (count($valuesList) == 1) { $fieldValue = ''; } $fieldValue = getValidDBInsertDateTimeValue($fieldValue); if (preg_match("/^[0-9]{2,4}[-][0-1]{1,2}?[0-9]{1,2}[-][0-3]{1,2}?[0-9]{1,2} ([0-1][0-9]|[2][0-3])([:][0-5][0-9]){1,2}\$/", $fieldValue) == 0) { $fieldValue = ''; } $fieldData[$fieldName] = $fieldValue; } if ($fieldInstance->getFieldDataType() == 'date' && !empty($fieldValue)) { if ($fieldValue == null || $fieldValue == '0000-00-00') { $fieldValue = ''; } $fieldValue = getValidDBInsertDateValue($fieldValue); if (preg_match("/^[0-9]{2,4}[-][0-1]{1,2}?[0-9]{1,2}[-][0-3]{1,2}?[0-9]{1,2}\$/", $fieldValue) == 0) { $fieldValue = ''; } $fieldData[$fieldName] = $fieldValue; } if (empty($fieldValue) && isset($defaultFieldValues[$fieldName])) { $fieldData[$fieldName] = $fieldValue = $defaultFieldValues[$fieldName]; } } } } if ($fillDefault) { foreach ($defaultFieldValues as $fieldName => $fieldValue) { if (!isset($fieldData[$fieldName])) { $fieldData[$fieldName] = $defaultFieldValues[$fieldName]; } } } // We should sanitizeData before doing final mandatory check below. $fieldData = DataTransform::sanitizeData($fieldData, $moduleMeta); if ($fieldData != null && $checkMandatoryFieldValues) { foreach ($moduleFields as $fieldName => $fieldInstance) { if (empty($fieldData[$fieldName]) && $fieldInstance->isMandatory()) { return null; } } } return $fieldData; }
public function transformForImport($fieldData, $moduleMeta, $fillDefault=true) { $moduleFields = $moduleMeta->getModuleFields(); $defaultFieldValues = $this->getDefaultFieldValues($moduleMeta); foreach ($fieldData as $fieldName => $fieldValue) { $fieldInstance = $moduleFields[$fieldName]; if ($fieldInstance->getFieldDataType() == 'owner') { $ownerId = getUserId_Ol($fieldValue); if (empty($ownerId)) { $ownerId = getGrpId($fieldValue); } if (empty($ownerId) && isset($defaultFieldValues[$fieldName])) { $ownerId = $defaultFieldValues[$fieldName]; } if(empty($ownerId) || !Import_Utils::hasAssignPrivilege($moduleMeta->getEntityName(), $ownerId)) { $ownerId = $this->user->id; } $fieldData[$fieldName] = $ownerId; } elseif ($fieldInstance->getFieldDataType() == 'reference') { $entityId = false; if (!empty($fieldValue)) { if(strpos($fieldValue, '::::') > 0) { $fieldValueDetails = explode('::::', $fieldValue); } else { $fieldValueDetails = explode(':::', $fieldValue); } if (count($fieldValueDetails) > 1) { $referenceModuleName = trim($fieldValueDetails[0]); $entityLabel = trim($fieldValueDetails[1]); $entityId = getEntityId($referenceModuleName, $entityLabel); } else { $referencedModules = $fieldInstance->getReferenceList(); $entityLabel = $fieldValue; foreach ($referencedModules as $referenceModule) { $referenceModuleName = $referenceModule; if ($referenceModule == 'Users') { $referenceEntityId = getUserId_Ol($entityLabel); if(empty($referenceEntityId) || !Import_Utils::hasAssignPrivilege($moduleMeta->getEntityName(), $referenceEntityId)) { $referenceEntityId = $this->user->id; } } else { $referenceEntityId = getEntityId($referenceModule, $entityLabel); } if ($referenceEntityId != 0) { $entityId = $referenceEntityId; break; } } } if ((empty($entityId) || $entityId == 0) && !empty($referenceModuleName)) { if(isPermitted($referenceModuleName, 'EditView') == 'yes') { $wsEntityIdInfo = $this->createEntityRecord($referenceModuleName, $entityLabel); $wsEntityId = $wsEntityIdInfo['id']; $entityIdComponents = vtws_getIdComponents($wsEntityId); $entityId = $entityIdComponents[1]; } } $fieldData[$fieldName] = $entityId; } else { $referencedModules = $fieldInstance->getReferenceList(); if ($referencedModules[0] == 'Users') { if(isset($defaultFieldValues[$fieldName])) { $fieldData[$fieldName] = $defaultFieldValues[$fieldName]; } if(empty($fieldData[$fieldName]) || !Import_Utils::hasAssignPrivilege($moduleMeta->getEntityName(), $fieldData[$fieldName])) { $fieldData[$fieldName] = $this->user->id; } } else { $fieldData[$fieldName] = ''; } } } elseif ($fieldInstance->getFieldDataType() == 'picklist') { global $default_charset; if (empty($fieldValue) && isset($defaultFieldValues[$fieldName])) { $fieldData[$fieldName] = $fieldValue = $defaultFieldValues[$fieldName]; } $allPicklistDetails = $fieldInstance->getPicklistDetails(); $allPicklistValues = array(); foreach ($allPicklistDetails as $picklistDetails) { $allPicklistValues[] = $picklistDetails['value']; } $encodePicklistValue = htmlentities($fieldValue,ENT_QUOTES,$default_charset); if (!in_array($encodePicklistValue, $allPicklistValues)) { $moduleObject = Vtiger_Module::getInstance($moduleMeta->getEntityName()); $fieldObject = Vtiger_Field::getInstance($fieldName, $moduleObject); $fieldObject->setPicklistValues(array($fieldValue)); } } else { if ($fieldInstance->getFieldDataType() == 'datetime' && !empty($fieldValue)) { if($fieldValue == null || $fieldValue == '0000-00-00 00:00:00') { $fieldValue = ''; } $valuesList = explode(' ', $fieldValue); if(count($valuesList) == 1) $fieldValue = ''; $fieldValue = getValidDBInsertDateTimeValue($fieldValue); if (preg_match("/^[0-9]{2,4}[-][0-1]{1,2}?[0-9]{1,2}[-][0-3]{1,2}?[0-9]{1,2} ([0-1][0-9]|[2][0-3])([:][0-5][0-9]){1,2}$/", $fieldValue) == 0) { $fieldValue = ''; } $fieldData[$fieldName] = $fieldValue; } if ($fieldInstance->getFieldDataType() == 'date' && !empty($fieldValue)) { if($fieldValue == null || $fieldValue == '0000-00-00') { $fieldValue = ''; } $fieldValue = getValidDBInsertDateValue($fieldValue); if (preg_match("/^[0-9]{2,4}[-][0-1]{1,2}?[0-9]{1,2}[-][0-3]{1,2}?[0-9]{1,2}$/", $fieldValue) == 0) { $fieldValue = ''; } $fieldData[$fieldName] = $fieldValue; } if (empty($fieldValue) && isset($defaultFieldValues[$fieldName])) { $fieldData[$fieldName] = $fieldValue = $defaultFieldValues[$fieldName]; } } } if($fillDefault) { foreach($defaultFieldValues as $fieldName => $fieldValue) { if (!isset($fieldData[$fieldName])) { $fieldData[$fieldName] = $defaultFieldValues[$fieldName]; } } } foreach ($moduleFields as $fieldName => $fieldInstance) { if(empty($fieldData[$fieldName]) && $fieldInstance->isMandatory()) { return null; } } return DataTransform::sanitizeData($fieldData, $moduleMeta); }