X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FDedupe%2FMerger.php;h=4c273c795c258ea0a4842c95680808808979ef59;hb=db551313046d894dd1e7669f664ca7caac35f6fe;hp=4bd23f7115efb985b754ea6655dbe709b1404e47;hpb=95844f5d98954360e26cb5540232edb655cdbf96;p=civicrm-core.git diff --git a/CRM/Dedupe/Merger.php b/CRM/Dedupe/Merger.php index 4bd23f7115..4c273c795c 100644 --- a/CRM/Dedupe/Merger.php +++ b/CRM/Dedupe/Merger.php @@ -291,7 +291,7 @@ WHERE } /** - * return payment related table. + * Return payment related table. */ static function paymentTables() { static $tables; @@ -303,7 +303,7 @@ WHERE } /** - * return payment update Query. + * Return payment update Query. */ static function paymentSql($tableName, $mainContactId, $otherContactId) { $sqls = array(); @@ -349,9 +349,9 @@ INNER JOIN civicrm_participant participant ON ( participant.id = payment.partic } /** - * @param $mainId - * @param $otherId - * @param $tableName + * @param int $mainId + * @param int $otherId + * @param string $tableName * @param array $tableOperations * @param string $mode * @@ -537,7 +537,7 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m } /** - * Function to batch merge a set of contacts based on rule-group and group. + * Batch merge a set of contacts based on rule-group and group. * * @param int $rgid rule group id * @param int $gid group id @@ -545,13 +545,9 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m * A 'safe' value skips the merge if there are any un-resolved conflicts. * Does a force merge otherwise. * @param boolean $autoFlip wether to let api decide which contact to retain and which to delete. - * - * * @param bool $redirectForPerformance * * @return array|bool - * @internal param array $cacheParams prev-next-cache params based on which next pair of contacts are computed. - * Generally used with batch-merge. * @static * @access public */ @@ -583,7 +579,7 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m } /** - * Function to merge given set of contacts. Performs core operation. + * Merge given set of contacts. Performs core operation. * * @param array $dupePairs set of pair of contacts for whom merge is to be done. * @param array $cacheParams prev-next-cache params based on which next pair of contacts are computed. @@ -600,8 +596,7 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m * @static * @access public */ - static function merge($dupePairs = array( - ), $cacheParams = array(), $mode = 'safe', + static function merge($dupePairs = array(), $cacheParams = array(), $mode = 'safe', $autoFlip = TRUE, $redirectForPerformance = FALSE ) { $cacheKeyString = CRM_Utils_Array::value('cache_key_string', $cacheParams); @@ -816,6 +811,9 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m CRM_Core_DAO::freeResult(); } + // get all contact subtypes + $contactSubTypes = CRM_Contact_BAO_ContactType::subTypePairs(NULL, TRUE, ''); + // FIXME: there must be a better way foreach (array('main', 'other') as $moniker) { $contact = &$$moniker; @@ -823,6 +821,8 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m $value = empty($preferred_communication_method) ? array() : $preferred_communication_method; $specialValues[$moniker] = array( 'preferred_communication_method' => $value, + 'contact_sub_type' => $value, + 'communication_style_id' => $value, ); if (!empty($contact['preferred_communication_method'])){ @@ -840,6 +840,21 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m ), ); CRM_Core_OptionGroup::lookupValues($specialValues[$moniker], $names); + + if (!empty($contact['contact_sub_type'])) { + $specialValues[$moniker]['contact_sub_type'] = implode(CRM_Core_DAO::VALUE_SEPARATOR, $contact['contact_sub_type']); + + // fix contact sub type label for contact with sub type + $subtypes = array(); + foreach ($contact['contact_sub_type'] as $key => $value) { + $subtypes[] = CRM_Utils_Array::retrieveValueRecursive($contactSubTypes, $value); + } + $contact['contact_sub_type_display'] = $specialValues[$moniker]['contact_sub_type_display'] = implode(', ', $subtypes); + } + + if (!empty($contact['communication_style'])) { + $specialValues[$moniker]['communication_style_id_display'] = $contact['communication_style']; + } } static $optionValueFields = array(); @@ -1346,6 +1361,9 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m foreach ($submitted as $key => $value) { if (substr($key, 0, 7) == 'custom_') { $fid = (int) substr($key, 7); + if (empty($cFields[$fid])) { + continue; + } $htmlType = $cFields[$fid]['attributes']['html_type']; switch ($htmlType) { case 'File': @@ -1588,4 +1606,3 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m } } } -