jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/381922 )

Change subject: CRM-21224 get LIMIT out of the where string.
......................................................................


CRM-21224 get LIMIT out of the where string.

This one is just a clean up.

It's also in https://github.com/civicrm/civicrm-core/pull/11030/commits
and we could justify leaving it for now. However, it might make sense to
keep in sync

Change-Id: Ic9436ba59dfd95948e1edba35221c386c1599086
---
M CRM/Dedupe/Merger.php
1 file changed, 16 insertions(+), 18 deletions(-)

Approvals:
  Mepps: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/CRM/Dedupe/Merger.php b/CRM/Dedupe/Merger.php
index 13d37bc..c249e28 100644
--- a/CRM/Dedupe/Merger.php
+++ b/CRM/Dedupe/Merger.php
@@ -602,6 +602,7 @@
    */
   public static function batchMerge($rgid, $gid = NULL, $mode = 'safe', 
$batchLimit = 1, $isSelected = 2, $criteria = array(), $checkPermissions = 
TRUE) {
     $redirectForPerformance = ($batchLimit > 1) ? TRUE : FALSE;
+    $isProcessUntilAllProcessed = !$redirectForPerformance;
     $reloadCacheIfEmpty = (!$redirectForPerformance && $isSelected == 2);
     $dupePairs = self::getDuplicatePairs($rgid, $gid, $reloadCacheIfEmpty, 
$batchLimit, $isSelected, '', ($mode == 'aggressive'), $criteria, 
$checkPermissions);
 
@@ -610,9 +611,9 @@
       // @todo stop passing these parameters in & instead calculate them in 
the merge function based
       // on the 'real' params like $isRespectExclusions $batchLimit and 
$isSelected.
       'join' => self::getJoinOnDedupeTable(),
-      'where' => self::getWhereString($batchLimit, $isSelected),
+      'where' => self::getWhereString($isSelected),
     );
-    return CRM_Dedupe_Merger::merge($dupePairs, $cacheParams, $mode, 
$redirectForPerformance, $checkPermissions);
+    return CRM_Dedupe_Merger::merge($dupePairs, $cacheParams, $mode, 
$isProcessUntilAllProcessed, $checkPermissions, $batchLimit);
   }
 
   /**
@@ -633,20 +634,14 @@
   /**
    * Get where string for dedupe join.
    *
-   * @param int $batchLimit
    * @param bool $isSelected
    *
    * @return string
    */
-  protected static function getWhereString($batchLimit, $isSelected) {
+  protected static function getWhereString($isSelected) {
     $where = "de.id IS NULL";
     if ($isSelected === 0 || $isSelected === 1) {
       $where .= " AND pn.is_selected = {$isSelected}";
-    }
-    // else consider all dupe pairs
-    // @todo Adding limit to Where??!!
-    if ($batchLimit) {
-      $where .= " LIMIT {$batchLimit}";
     }
     return $where;
   }
@@ -749,16 +744,19 @@
    *                             A 'safe' value skips the merge if there are 
any un-resolved conflicts.
    *                             Does a force merge otherwise (aggressive 
mode).
    *
-   * @param bool $redirectForPerformance
-   *   Redirect to a url for batch processing.
+   * @param bool $isProcessUntilAllProcessed
+   *   Iterate through the cache until all matches for the cache string are 
processed?
    *
    * @param bool $checkPermissions
    *   Respect logged in user permissions.
    *
+   * @param int $batchLimit
+   *   Number of rows to merge in each batch. One or more will be processed 
depending on
+   *   $isProcessUntilAllProcessed
+   *
    * @return array|bool
    */
-  public static function merge($dupePairs = array(), $cacheParams = array(), 
$mode = 'safe',
-     $redirectForPerformance = FALSE, $checkPermissions = TRUE
+  public static function merge($dupePairs = array(), $cacheParams = array(), 
$mode = 'safe', $isProcessUntilAllProcessed = TRUE, $checkPermissions = TRUE, 
$batchLimit = 0
   ) {
     $cacheKeyString = CRM_Utils_Array::value('cache_key_string', $cacheParams);
     $resultStats = array('merged' => array(), 'skipped' => array());
@@ -792,14 +790,14 @@
         self::dedupePair($rowsElementsAndInfo['migration_info'], $resultStats, 
$deletedContacts, $mode, $checkPermissions, $mainId, $otherId, $cacheKeyString);
       }
 
-      if ($cacheKeyString && !$redirectForPerformance) {
+      if ($cacheKeyString && $isProcessUntilAllProcessed) {
         // retrieve next pair of dupes
         // @todo call getDuplicatePairs.
         $dupePairs = CRM_Core_BAO_PrevNextCache::retrieve($cacheKeyString,
           $cacheParams['join'],
           $cacheParams['where'],
           0,
-          0,
+          $batchLimit,
           array(),
           '',
           FALSE
@@ -1895,16 +1893,16 @@
    *    Array of matches meeting the criteria.
    */
   public static function getDuplicatePairs($rule_group_id, $group_id, 
$reloadCacheIfEmpty, $batchLimit, $isSelected, $orderByClause = '', 
$includeConflicts = TRUE, $criteria = array(), $checkPermissions = TRUE, 
$searchLimit = 0) {
-    $where = self::getWhereString($batchLimit, $isSelected);
+    $where = self::getWhereString($isSelected);
     $cacheKeyString = self::getMergeCacheKeyString($rule_group_id, $group_id, 
$criteria, $checkPermissions);
     $join = self::getJoinOnDedupeTable();
-    $dupePairs = CRM_Core_BAO_PrevNextCache::retrieve($cacheKeyString, $join, 
$where, 0, 0, array(), $orderByClause, $includeConflicts);
+    $dupePairs = CRM_Core_BAO_PrevNextCache::retrieve($cacheKeyString, $join, 
$where, 0, $batchLimit, array(), $orderByClause, $includeConflicts);
     if (empty($dupePairs) && $reloadCacheIfEmpty) {
       // If we haven't found any dupes, probably cache is empty.
       // Try filling cache and give another try. We don't need to specify 
include conflicts here are there will not be any
       // until we have done some processing.
       CRM_Core_BAO_PrevNextCache::refillCache($rule_group_id, $group_id, 
$cacheKeyString, $criteria, $checkPermissions, $searchLimit);
-      $dupePairs = CRM_Core_BAO_PrevNextCache::retrieve($cacheKeyString, 
$join, $where, 0, 0, array(), $orderByClause, $includeConflicts);
+      $dupePairs = CRM_Core_BAO_PrevNextCache::retrieve($cacheKeyString, 
$join, $where, 0, $batchLimit, array(), $orderByClause, $includeConflicts);
       return $dupePairs;
     }
     return $dupePairs;

-- 
To view, visit https://gerrit.wikimedia.org/r/381922
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic9436ba59dfd95948e1edba35221c386c1599086
Gerrit-PatchSet: 1
Gerrit-Project: wikimedia/fundraising/crm/civicrm
Gerrit-Branch: master
Gerrit-Owner: Eileen <emcnaugh...@wikimedia.org>
Gerrit-Reviewer: Ejegg <ej...@ejegg.com>
Gerrit-Reviewer: Mepps <me...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to