// FIXME: consider creating a common structure with cidRefs() and eidRefs()
// FIXME: the sub-pages references by the URLs should
// be loaded dynamically on the merge form instead
+ /**
+ * @return array
+ */
static function relTables() {
static $relTables;
while ($dao->fetch()) {
$cidRefs[$dao->table_name][] = $dao->column_name;
}
+
+ // FixME for time being adding below line statically as no Foreign key constraint defined for table 'civicrm_entity_tag'
+ $cidRefs['civicrm_entity_tag'][] = 'entity_id';
$dao->free();
// Allow hook_civicrm_merge() to adjust $cidRefs
}
/**
- * return payment related table.
+ * Return payment related table.
*/
static function paymentTables() {
static $tables;
}
/**
- * return payment update Query.
+ * Return payment update Query.
*/
static function paymentSql($tableName, $mainContactId, $otherContactId) {
$sqls = array();
return $sqls;
}
+ /**
+ * @param int $mainId
+ * @param int $otherId
+ * @param string $tableName
+ * @param array $tableOperations
+ * @param string $mode
+ *
+ * @return array
+ */
static function operationSql($mainId, $otherId, $tableName, $tableOperations = array(), $mode = 'add') {
$sqls = array();
if (!$tableName || !$mainId || !$otherId) {
foreach ($cidRefs[$table] as $field) {
// carry related contributions CRM-5359
if (in_array($table, $paymentTables)) {
- $payOprSqls = self::operationSql($mainId, $otherId, $table, $tableOperations, 'payment');
- $sqls = array_merge($sqls, $payOprSqls);
-
$paymentSqls = self::paymentSql($table, $mainId, $otherId);
$sqls = array_merge($sqls, $paymentSqls);
+
+ if (!empty($tables) && !in_array('civicrm_contribution', $tables)) {
+ $payOprSqls = self::operationSql($mainId, $otherId, $table, $tableOperations, 'payment');
+ $sqls = array_merge($sqls, $payOprSqls);
+ }
}
$preOperationSqls = self::operationSql($mainId, $otherId, $table, $tableOperations);
}
/**
- * 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
* 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
*/
}
/**
- * 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.
* @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);
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;
$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'])){
),
);
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();
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':
}
}
}
-