diff --git a/CRM/Core/BAO/Mapping.php b/CRM/Core/BAO/Mapping.php index 5a3c65e5b237..a171aaeffcec 100644 --- a/CRM/Core/BAO/Mapping.php +++ b/CRM/Core/BAO/Mapping.php @@ -611,84 +611,7 @@ public static function buildMappingForm(&$form, $mappingType, $mappingId, $colum $jsSet = FALSE; if (isset($mappingId)) { - $locationId = isset($mappingLocation[$x][$i]) ? $mappingLocation[$x][$i] : 0; - if (isset($mappingName[$x][$i])) { - if (is_array($mapperFields[$mappingContactType[$x][$i]])) { - - if (isset($mappingRelation[$x][$i])) { - $relLocationId = isset($mappingLocation[$x][$i]) ? $mappingLocation[$x][$i] : 0; - if (!$relLocationId && in_array($mappingName[$x][$i], $specialFields)) { - $relLocationId = " "; - } - - $relPhoneType = isset($mappingPhoneType[$x][$i]) ? $mappingPhoneType[$x][$i] : NULL; - - $defaults["mapper[$x][$i]"] = [ - $mappingContactType[$x][$i], - $mappingRelation[$x][$i], - $locationId, - $phoneType, - $mappingName[$x][$i], - $relLocationId, - $relPhoneType, - ]; - - if (!$locationId) { - $noneArray[] = [$x, $i, 2]; - } - if (!$phoneType && !$imProvider) { - $noneArray[] = [$x, $i, 3]; - } - if (!$mappingName[$x][$i]) { - $noneArray[] = [$x, $i, 4]; - } - if (!$relLocationId) { - $noneArray[] = [$x, $i, 5]; - } - if (!$relPhoneType) { - $noneArray[] = [$x, $i, 6]; - } - $noneArray[] = [$x, $i, 2]; - } - else { - $phoneType = isset($mappingPhoneType[$x][$i]) ? $mappingPhoneType[$x][$i] : NULL; - $imProvider = isset($mappingImProvider[$x][$i]) ? $mappingImProvider[$x][$i] : NULL; - if (!$locationId && in_array($mappingName[$x][$i], $specialFields)) { - $locationId = " "; - } - - $defaults["mapper[$x][$i]"] = [ - $mappingContactType[$x][$i], - $mappingName[$x][$i], - $locationId, - $phoneType, - ]; - if (!$mappingName[$x][$i]) { - $noneArray[] = [$x, $i, 1]; - } - if (!$locationId) { - $noneArray[] = [$x, $i, 2]; - } - if (!$phoneType && !$imProvider) { - $noneArray[] = [$x, $i, 3]; - } - - $noneArray[] = [$x, $i, 4]; - $noneArray[] = [$x, $i, 5]; - $noneArray[] = [$x, $i, 6]; - } - - $jsSet = TRUE; - - if (CRM_Utils_Array::value($i, CRM_Utils_Array::value($x, $mappingOperator))) { - $defaults["operator[$x][$i]"] = CRM_Utils_Array::value($i, $mappingOperator[$x]); - } - - if (CRM_Utils_Array::value($i, CRM_Utils_Array::value($x, $mappingValue))) { - $defaults["value[$x][$i]"] = CRM_Utils_Array::value($i, $mappingValue[$x]); - } - } - } + list($mappingName, $defaults, $noneArray, $jsSet) = self::loadSavedMapping($mappingLocation, $x, $i, $mappingName, $mapperFields, $mappingContactType, $mappingRelation, $specialFields, $mappingPhoneType, $defaults, $noneArray, $mappingImProvider, $mappingOperator, $mappingValue); } //Fix for Search Builder if ($mappingType == 'Export') { @@ -1051,6 +974,110 @@ protected static function getMappingParams($defaults, $v) { return $saveMappingFields; } + /** + * Load saved mapping. + * + * @param $mappingLocation + * @param int $x + * @param int $i + * @param $mappingName + * @param $mapperFields + * @param $mappingContactType + * @param $mappingRelation + * @param array $specialFields + * @param $mappingPhoneType + * @param $phoneType + * @param array $defaults + * @param array $noneArray + * @param $imProvider + * @param $mappingImProvider + * @param $mappingOperator + * @param $mappingValue + * + * @return array + */ + protected static function loadSavedMapping($mappingLocation, int $x, int $i, $mappingName, $mapperFields, $mappingContactType, $mappingRelation, array $specialFields, $mappingPhoneType, array $defaults, array $noneArray, $mappingImProvider, $mappingOperator, $mappingValue) { + $locationId = isset($mappingLocation[$x][$i]) ? $mappingLocation[$x][$i] : 0; + if (isset($mappingName[$x][$i])) { + if (is_array($mapperFields[$mappingContactType[$x][$i]])) { + + if (isset($mappingRelation[$x][$i])) { + $relLocationId = isset($mappingLocation[$x][$i]) ? $mappingLocation[$x][$i] : 0; + if (!$relLocationId && in_array($mappingName[$x][$i], $specialFields)) { + $relLocationId = " "; + } + + $relPhoneType = isset($mappingPhoneType[$x][$i]) ? $mappingPhoneType[$x][$i] : NULL; + + $defaults["mapper[$x][$i]"] = [ + $mappingContactType[$x][$i], + $mappingRelation[$x][$i], + $locationId, + $phoneType, + $mappingName[$x][$i], + $relLocationId, + $relPhoneType, + ]; + + if (!$locationId) { + $noneArray[] = [$x, $i, 2]; + } + if (!$phoneType && !$imProvider) { + $noneArray[] = [$x, $i, 3]; + } + if (!$mappingName[$x][$i]) { + $noneArray[] = [$x, $i, 4]; + } + if (!$relLocationId) { + $noneArray[] = [$x, $i, 5]; + } + if (!$relPhoneType) { + $noneArray[] = [$x, $i, 6]; + } + $noneArray[] = [$x, $i, 2]; + } + else { + $phoneType = isset($mappingPhoneType[$x][$i]) ? $mappingPhoneType[$x][$i] : NULL; + $imProvider = isset($mappingImProvider[$x][$i]) ? $mappingImProvider[$x][$i] : NULL; + if (!$locationId && in_array($mappingName[$x][$i], $specialFields)) { + $locationId = " "; + } + + $defaults["mapper[$x][$i]"] = [ + $mappingContactType[$x][$i], + $mappingName[$x][$i], + $locationId, + $phoneType, + ]; + if (!$mappingName[$x][$i]) { + $noneArray[] = [$x, $i, 1]; + } + if (!$locationId) { + $noneArray[] = [$x, $i, 2]; + } + if (!$phoneType && !$imProvider) { + $noneArray[] = [$x, $i, 3]; + } + + $noneArray[] = [$x, $i, 4]; + $noneArray[] = [$x, $i, 5]; + $noneArray[] = [$x, $i, 6]; + } + + $jsSet = TRUE; + + if (CRM_Utils_Array::value($i, CRM_Utils_Array::value($x, $mappingOperator))) { + $defaults["operator[$x][$i]"] = CRM_Utils_Array::value($i, $mappingOperator[$x]); + } + + if (CRM_Utils_Array::value($i, CRM_Utils_Array::value($x, $mappingValue))) { + $defaults["value[$x][$i]"] = CRM_Utils_Array::value($i, $mappingValue[$x]); + } + } + } + return [$mappingName, $defaults, $noneArray, $jsSet]; + } + /** * Function returns all custom fields with group title and * field label