Skip to content

Commit

Permalink
Merge pull request #12305 from eileenmcnaughton/dedupe_limit
Browse files Browse the repository at this point in the history
Re-instate Dedupe limit functionality & fix select toggle functionality
  • Loading branch information
monishdeb authored Jul 1, 2018
2 parents 74c9b4b + 917acf6 commit ba7084e
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 15 deletions.
6 changes: 1 addition & 5 deletions CRM/Contact/Page/AJAX.php
Original file line number Diff line number Diff line change
Expand Up @@ -1017,13 +1017,9 @@ public static function getAddressDisplay() {
* Mark dupe pairs as selected from un-selected state or vice-versa, in dupe cache table.
*/
public static function toggleDedupeSelect() {
$rgid = CRM_Utils_Type::escape($_REQUEST['rgid'], 'Integer');
$gid = CRM_Utils_Type::escape($_REQUEST['gid'], 'Integer');
$pnid = $_REQUEST['pnid'];
$isSelected = CRM_Utils_Type::escape($_REQUEST['is_selected'], 'Boolean');
$criteria = CRM_Utils_Request::retrieve('criteria', 'Json', $null, FALSE, '{}');

$cacheKeyString = CRM_Dedupe_Merger::getMergeCacheKeyString($rgid, $gid, json_decode($criteria, TRUE));
$cacheKeyString = CRM_Utils_Request::retrieve('cacheKey', 'Alphanumeric', $null, FALSE);

$params = array(
1 => array($isSelected, 'Boolean'),
Expand Down
9 changes: 4 additions & 5 deletions CRM/Contact/Page/DedupeFind.php
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@ public function run() {
$this->assign('urlQuery', CRM_Utils_System::makeQueryString($urlQry));
$this->assign('isSelected', $this->isSelected());
$criteria = json_decode($criteria, TRUE);
$cacheKeyString = CRM_Dedupe_Merger::getMergeCacheKeyString($rgid, $gid, $criteria);
$this->assign('cacheKey', $cacheKeyString);

if ($context == 'search') {
$context = 'search';
Expand All @@ -120,7 +122,7 @@ public function run() {
if ($action & CRM_Core_Action::RENEW) {
// empty cache
if ($rgid) {
CRM_Core_BAO_PrevNextCache::deleteItem(NULL, CRM_Dedupe_Merger::getMergeCacheKeyString($rgid, $gid, $criteria));
CRM_Core_BAO_PrevNextCache::deleteItem(NULL, $cacheKeyString);
}
$urlQry['action'] = 'update';
CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/contact/dedupefind', $urlQry));
Expand Down Expand Up @@ -171,9 +173,6 @@ public function run() {

$this->assign('sourceUrl', CRM_Utils_System::url('civicrm/ajax/dedupefind', $urlQry, FALSE, NULL, FALSE));

//reload from cache table
$cacheKeyString = CRM_Dedupe_Merger::getMergeCacheKeyString($rgid, $gid, $criteria);

$stats = CRM_Dedupe_Merger::getMergeStats($cacheKeyString);
if ($stats) {
$message = CRM_Dedupe_Merger::getMergeStatsMsg($stats);
Expand All @@ -183,7 +182,7 @@ public function run() {
CRM_Dedupe_Merger::resetMergeStats($cacheKeyString);
}

$this->_mainContacts = CRM_Dedupe_Merger::getDuplicatePairs($rgid, $gid, !$isConflictMode, 0, $this->isSelected(), '', $isConflictMode, $criteria, TRUE);
$this->_mainContacts = CRM_Dedupe_Merger::getDuplicatePairs($rgid, $gid, !$isConflictMode, 0, $this->isSelected(), '', $isConflictMode, $criteria, TRUE, $limit);

if (empty($this->_mainContacts)) {
if ($isConflictMode) {
Expand Down
2 changes: 1 addition & 1 deletion CRM/Dedupe/Finder.php
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ public static function dupesByParams(
* array of (cid1, cid2, weight) dupe triples
*/
public static function dupesInGroup($rgid, $gid, $searchLimit = 0) {
$cids = array_keys(CRM_Contact_BAO_Group::getMember($gid, $searchLimit));
$cids = array_keys(CRM_Contact_BAO_Group::getMember($gid, TRUE, $searchLimit));
if (!empty($cids)) {
return self::dupes($rgid, $cids);
}
Expand Down
3 changes: 2 additions & 1 deletion CRM/Dedupe/Merger.php
Original file line number Diff line number Diff line change
Expand Up @@ -1986,6 +1986,7 @@ public static function createMergeActivities($mainId, $otherId) {
* @param int $rule_group_id
* @param int $group_id
* @param bool $reloadCacheIfEmpty
* Should the cache be reloaded if empty - this must be false when in a dedupe action!
* @param int $batchLimit
* @param bool $isSelected
* Limit to selected pairs.
Expand Down Expand Up @@ -2035,7 +2036,7 @@ public static function getDuplicatePairs($rule_group_id, $group_id, $reloadCache
*/
public static function getMergeCacheKeyString($rule_group_id, $group_id, $criteria = array(), $checkPermissions = TRUE) {
$contactType = CRM_Dedupe_BAO_RuleGroup::getContactTypeForRuleGroup($rule_group_id);
$cacheKeyString = "merge {$contactType}";
$cacheKeyString = "merge_{$contactType}";
$cacheKeyString .= $rule_group_id ? "_{$rule_group_id}" : '_0';
$cacheKeyString .= $group_id ? "_{$group_id}" : '_0';
$cacheKeyString .= !empty($criteria) ? md5(serialize($criteria)) : '_0';
Expand Down
5 changes: 2 additions & 3 deletions templates/CRM/Contact/Page/DedupeFind.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -324,8 +324,7 @@
var is_selected = CRM.$('.crm-dedupe-select-all').prop('checked') ? 1 : 0;
}
var criteria = {/literal}'{$criteria|escape}'{literal};
criteria = criteria.length > 0 ? criteria : 0;
var cacheKey = {/literal}'{$cacheKey|escape}'{literal};
var dataUrl = {/literal}"{crmURL p='civicrm/ajax/toggleDedupeSelect' h=0 q='snippet=4'}"{literal};
var rgid = {/literal}"{$rgid}"{literal};
Expand All @@ -334,7 +333,7 @@
rgid = rgid.length > 0 ? rgid : 0;
gid = gid.length > 0 ? gid : 0;
CRM.$.post(dataUrl, {pnid: id, rgid: rgid, gid: gid, is_selected: is_selected, criteria : criteria}, function (data) {
CRM.$.post(dataUrl, {pnid: id, rgid: rgid, gid: gid, is_selected: is_selected, cacheKey : cacheKey}, function (data) {
// nothing to do for now
}, 'json');
}
Expand Down

0 comments on commit ba7084e

Please sign in to comment.