projects
/
civicrm-core.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge pull request #3643 from davecivicrm/CRM-14940a
[civicrm-core.git]
/
CRM
/
Dedupe
/
Merger.php
diff --git
a/CRM/Dedupe/Merger.php
b/CRM/Dedupe/Merger.php
index 28bb854c95676b08ded1f1c38602d386f3c4033e..688cc8885b6a1f1caf5a73403f327727465587cb 100644
(file)
--- a/
CRM/Dedupe/Merger.php
+++ b/
CRM/Dedupe/Merger.php
@@
-37,6
+37,9
@@
class CRM_Dedupe_Merger {
// 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
// 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;
static function relTables() {
static $relTables;
@@
-205,6
+208,9
@@
WHERE
while ($dao->fetch()) {
$cidRefs[$dao->table_name][] = $dao->column_name;
}
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
$dao->free();
// Allow hook_civicrm_merge() to adjust $cidRefs
@@
-342,6
+348,15
@@
INNER JOIN civicrm_participant participant ON ( participant.id = payment.partic
return $sqls;
}
return $sqls;
}
+ /**
+ * @param $mainId
+ * @param $otherId
+ * @param $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) {
static function operationSql($mainId, $otherId, $tableName, $tableOperations = array(), $mode = 'add') {
$sqls = array();
if (!$tableName || !$mainId || !$otherId) {
@@
-444,11
+459,13
@@
INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m
foreach ($cidRefs[$table] as $field) {
// carry related contributions CRM-5359
if (in_array($table, $paymentTables)) {
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);
$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);
}
$preOperationSqls = self::operationSql($mainId, $otherId, $table, $tableOperations);
@@
-488,6
+505,7
@@
INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m
* @param array $main contact details
* @param array $other contact details
*
* @param array $main contact details
* @param array $other contact details
*
+ * @return array
* @static
*/
static function findDifferences($main, $other) {
* @static
*/
static function findDifferences($main, $other) {
@@
-521,16
+539,19
@@
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.
*
/**
* Function to batch merge a set of contacts based on rule-group and group.
*
- * @param int $rgid rule group id
- * @param int $gid group id
- * @param array $cacheParams prev-next-cache params based on which next pair of contacts are computed.
- * Generally used with batch-merge.
- * @param string $mode helps decide how to behave when there are conflicts.
+ * @param int $rgid rule group id
+ * @param int $gid group id
+ * @param string $mode helps decide how to behave when there are conflicts.
* A 'safe' value skips the merge if there are any un-resolved conflicts.
* Does a force merge otherwise.
* 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 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
*/
* @static
* @access public
*/
@@
-564,15
+585,18
@@
INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m
/**
* Function to merge given set of contacts. Performs core operation.
*
/**
* Function to 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.
+ * @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.
* Generally used with batch-merge.
* Generally used with batch-merge.
- * @param string
$mode
helps decide how to behave when there are conflicts.
+ * @param string
$mode
helps decide how to behave when there are conflicts.
* A 'safe' value skips the merge if there are any un-resolved conflicts.
* Does a force merge otherwise (aggressive mode).
* A 'safe' value skips the merge if there are any un-resolved conflicts.
* Does a force merge otherwise (aggressive mode).
- * @param boolean $autoFlip
wether to let api decide which contact to retain and which to delete.
+ * @param boolean $autoFlip wether to let api decide which contact to retain and which to delete.
*
*
*
*
+ * @param bool $redirectForPerformance
+ *
+ * @return array|bool
* @static
* @access public
*/
* @static
* @access public
*/
@@
-653,13
+677,14
@@
INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m
* A function which uses various rules / algorithms for choosing which contact to bias to
* when there's a conflict (to handle "gotchas"). Plus the safest route to merge.
*
* A function which uses various rules / algorithms for choosing which contact to bias to
* when there's a conflict (to handle "gotchas"). Plus the safest route to merge.
*
- * @param int
$mainId
main contact with whom merge has to happen
- * @param int
$otherId
duplicate contact which would be deleted after merge operation
- * @param array
$migrationInfo
array of information about which elements to merge.
- * @param string
$mode
helps decide how to behave when there are conflicts.
+ * @param int
$mainId
main contact with whom merge has to happen
+ * @param int
$otherId
duplicate contact which would be deleted after merge operation
+ * @param array
$migrationInfo
array of information about which elements to merge.
+ * @param string
$mode
helps decide how to behave when there are conflicts.
* A 'safe' value skips the merge if there are any un-resolved conflicts.
* Does a force merge otherwise (aggressive mode).
*
* A 'safe' value skips the merge if there are any un-resolved conflicts.
* Does a force merge otherwise (aggressive mode).
*
+ * @return bool
* @static
* @access public
*/
* @static
* @access public
*/
@@
-764,9
+789,10
@@
INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m
/**
* A function to build an array of information required by merge function and the merge UI.
*
/**
* A function to build an array of information required by merge function and the merge UI.
*
- * @param int
$mainId
main contact with whom merge has to happen
- * @param int
$otherId
duplicate contact which would be deleted after merge operation
+ * @param int
$mainId
main contact with whom merge has to happen
+ * @param int
$otherId
duplicate contact which would be deleted after merge operation
*
*
+ * @return array|bool|int
* @static
* @access public
*/
* @static
* @access public
*/
@@
-1142,9
+1168,12
@@
INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m
* other contact to the main one - be it Location / CustomFields or Contact .. related info.
* A superset of moveContactBelongings() function.
*
* other contact to the main one - be it Location / CustomFields or Contact .. related info.
* A superset of moveContactBelongings() function.
*
- * @param int $mainId main contact with whom merge has to happen
- * @param int $otherId duplicate contact which would be deleted after merge operation
+ * @param int $mainId main contact with whom merge has to happen
+ * @param int $otherId duplicate contact which would be deleted after merge operation
+ *
+ * @param $migrationInfo
*
*
+ * @return bool
* @static
* @access public
*/
* @static
* @access public
*/
@@
-1516,7
+1545,7
@@
INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m
*/
static function getContactFields() {
$contactFields = CRM_Contact_DAO_Contact::fields();
*/
static function getContactFields() {
$contactFields = CRM_Contact_DAO_Contact::fields();
- $invalidFields = array('api_key', 'contact_is_deleted', 'created_date', 'display_name', 'hash', 'id', 'modified_date',
+ $invalidFields = array('api_key', 'contact_is_deleted', 'created_date', 'display_name', 'hash', 'id', 'modified_date',
'primary_contact_id', 'sort_name', 'user_unique_id');
foreach ($contactFields as $field => $value) {
if (in_array($field, $invalidFields)) {
'primary_contact_id', 'sort_name', 'user_unique_id');
foreach ($contactFields as $field => $value) {
if (in_array($field, $invalidFields)) {
@@
-1559,4
+1588,3
@@
INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m
}
}
}
}
}
}
-