<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.4 |
+ | CiviCRM version 4.5 |
+--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2013 |
+ | Copyright CiviCRM LLC (c) 2004-2014 |
+--------------------------------------------------------------------+
| This file is a part of CiviCRM. |
| |
/**
*
* @package CRM
- * @copyright CiviCRM LLC (c) 2004-2013
+ * @copyright CiviCRM LLC (c) 2004-2014
* $Id$
*
*/
}
/**
- * Return tables and their fields referencing civicrm_contact.contact_id explicitely
+ * Return tables and their fields referencing civicrm_contact.contact_id explicitly
*/
static function cidRefs() {
static $cidRefs;
if (!$cidRefs) {
- // FIXME: this should be generated dynamically from the schema's
- // foreign keys referencing civicrm_contact(id)
- $cidRefs = array(
- 'civicrm_acl_cache' => array('contact_id'),
- 'civicrm_activity_contact' => array('contact_id'),
- 'civicrm_case_contact' => array('contact_id'),
- 'civicrm_contact' => array('primary_contact_id'),
- 'civicrm_contribution' => array('contact_id', 'honor_contact_id'),
- 'civicrm_contribution_page' => array('created_id'),
- 'civicrm_contribution_recur' => array('contact_id'),
- 'civicrm_contribution_soft' => array('contact_id'),
- 'civicrm_custom_group' => array('created_id'),
- 'civicrm_entity_tag' => array('entity_id'),
- 'civicrm_event' => array('created_id'),
- 'civicrm_grant' => array('contact_id'),
- 'civicrm_group_contact' => array('contact_id'),
- 'civicrm_group_organization' => array('organization_id'),
- 'civicrm_log' => array('modified_id'),
- 'civicrm_mailing' => array('created_id', 'scheduled_id'),
- 'civicrm_mailing_event_queue' => array('contact_id'),
- 'civicrm_mailing_event_subscribe' => array('contact_id'),
- 'civicrm_membership' => array('contact_id'),
- 'civicrm_membership_log' => array('modified_id'),
- 'civicrm_membership_type' => array('member_of_contact_id'),
- 'civicrm_note' => array('contact_id'),
- 'civicrm_participant' => array('contact_id'),
- 'civicrm_pcp' => array('contact_id'),
- 'civicrm_relationship' => array('contact_id_a', 'contact_id_b'),
- 'civicrm_uf_match' => array('contact_id'),
- 'civicrm_uf_group' => array('created_id'),
- 'civicrm_pledge' => array('contact_id'),
- );
-
- $cidRefs += self::getMultiValueCustomSets('cidRefs');
-
- // Add ContactReference custom fields CRM-9561
- $sql = "SELECT cg.table_name, cf.column_name
- FROM civicrm_custom_group cg, civicrm_custom_field cf
- WHERE cg.id = cf.custom_group_id AND cf.data_type = 'ContactReference'";
+ $sql = "
+SELECT
+ table_name,
+ column_name
+FROM information_schema.key_column_usage
+WHERE
+ referenced_table_schema = database() AND
+ referenced_table_name = 'civicrm_contact' AND
+ referenced_column_name = 'id';
+ ";
$dao = CRM_Core_DAO::executeQuery($sql);
while ($dao->fetch()) {
$cidRefs[$dao->table_name][] = $dao->column_name;
while (!empty($dupePairs)) {
foreach ($dupePairs as $dupes) {
+ CRM_Utils_Hook::merge('flip', $dupes, $dupes['dstID'], $dupes['srcID']);
$mainId = $dupes['dstID'];
$otherId = $dupes['srcID'];
- // make sure that $mainId is the one with lower id number
- if ($autoFlip && ($mainId > $otherId)) {
+ $isAutoFlip = CRM_Utils_Array::value('auto_flip', $dupes, $autoFlip);
+ // if we can, make sure that $mainId is the one with lower id number
+ if ($isAutoFlip && ($mainId > $otherId)) {
$mainId = $dupes['srcID'];
$otherId = $dupes['dstID'];
}
if ($label === '1') {
$label = ts('[x]');
}
- } elseif ($field == 'individual_prefix' || $field == 'prefix_id') {
- $label = CRM_Utils_Array::value('prefix', $contact);
+ }
+ elseif ($field == 'individual_prefix' || $field == 'prefix_id') {
+ $label = CRM_Utils_Array::value('individual_prefix', $contact);
$value = CRM_Utils_Array::value('prefix_id', $contact);
$field = 'prefix_id';
- } elseif ($field == 'individual_suffix' || $field == 'suffix_id') {
- $label = CRM_Utils_Array::value('suffix', $contact);
+ }
+ elseif ($field == 'individual_suffix' || $field == 'suffix_id') {
+ $label = CRM_Utils_Array::value('individual_suffix', $contact);
$value = CRM_Utils_Array::value('suffix_id', $contact);
$field = 'suffix_id';
}
$rows["move_$field"][$moniker] = $label;
if ($moniker == 'other') {
- if ($value === NULL) {
+ //CRM-14334
+ if ($value === NULL || $value == '') {
$value = 'null';
}
if ($value === 0 or $value === '0') {
if ($value == $qfZeroBug) {
$value = '0';
}
- if ((in_array(substr($key, 5), CRM_Dedupe_Merger::getContactFields()) or
- substr($key, 0, 12) == 'move_custom_'
- ) and $value != NULL) {
+ if ((in_array(substr($key, 5), CRM_Dedupe_Merger::getContactFields()) ||
+ substr($key, 0, 12) == 'move_custom_') &&
+ $value != NULL
+ ) {
$submitted[substr($key, 5)] = $value;
}
elseif (substr($key, 0, 14) == 'move_location_' and $value != NULL) {
unset($submitted['current_employer_id']);
}
+ //CRM-14312 include prefix/suffix from mainId if not overridden for proper construction of display/sort name
+ if ( !isset($submitted['prefix_id']) && !empty($migrationInfo['main_details']['prefix_id']) ) {
+ $submitted['prefix_id'] = $migrationInfo['main_details']['prefix_id'];
+ }
+ if ( !isset($submitted['suffix_id']) && !empty($migrationInfo['main_details']['suffix_id']) ) {
+ $submitted['suffix_id'] = $migrationInfo['main_details']['suffix_id'];
+ }
+
CRM_Contact_BAO_Contact::createProfileContact($submitted, CRM_Core_DAO::$_nullArray, $mainId);
unset($submitted);
}