CRM-19017 : Load default params for fragment query object.
authorJitendra Purohit <jitendra@fuzion.co.nz>
Thu, 13 Jul 2017 14:30:27 +0000 (20:00 +0530)
committerJitendra Purohit <jitendra@fuzion.co.nz>
Sat, 15 Jul 2017 09:52:52 +0000 (15:22 +0530)
CRM/Member/ActionMapping.php
Civi/ActionSchedule/RecipientBuilder.php

index 8d3af1186ee9dfa79d75c26aa711d7bab11d17d2..9645ebcd0612fcc505df4527718c166728607c51 100644 (file)
@@ -80,7 +80,7 @@ class CRM_Member_ActionMapping extends \Civi\ActionSchedule\Mapping {
     $selectedValues = (array) \CRM_Utils_Array::explodePadded($schedule->entity_value);
     $selectedStatuses = (array) \CRM_Utils_Array::explodePadded($schedule->entity_status);
 
-    $query = \CRM_Utils_SQL_Select::from("{$this->entity} e")->param($defaultParams);;
+    $query = \CRM_Utils_SQL_Select::from("{$this->entity} e")->param($defaultParams);
     $query['casAddlCheckFrom'] = 'civicrm_membership e';
     $query['casContactIdField'] = 'e.contact_id';
     $query['casEntityIdField'] = 'e.id';
index 7cccfca5dcf203702d4d1f702b59ace2a61615ed..87b942dc5ac3a775e009903613da06810ebc857b 100644 (file)
@@ -314,7 +314,7 @@ class RecipientBuilder {
 
     $addlCheck = \CRM_Utils_SQL_Select::from($query['casAddlCheckFrom'])
       ->select('*')
-      ->merge($query, array('wheres'))// why only where? why not the joins?
+      ->merge($query, array('params', 'wheres'))// why only where? why not the joins?
       ->merge($this->prepareRepetitionEndFilter($query['casDateField']))
       ->limit(1)
       ->strict()
@@ -326,11 +326,11 @@ class RecipientBuilder {
         ->merge($this->selectActionLogFields(self::PHASE_ADDITION_REPEAT, $query))
         ->merge($this->joinReminder('INNER JOIN', 'addl', $query))
         ->select("MAX(reminder.action_date_time) as latest_log_time")
-        ->merge($this->prepareAddlFilter('c.id'))
+        ->merge($this->prepareAddlFilter('c.id'), array('params'))
         ->where("c.is_deleted = 0 AND c.is_deceased = 0")
         ->groupBy("reminder.contact_id")
         // @todo replace use of timestampdiff with a direct comparison as TIMESTAMPDIFF cannot use an index.
-        ->having("TIMESTAMPDIFF(HOUR, latest_log_time, CAST(!casNow AS datetime)) >= TIMESTAMPDIFF(HOUR, latest_log_time, DATE_ADD(latest_log_time, INTERVAL !casRepetitionInterval)")
+        ->having("TIMESTAMPDIFF(HOUR, latest_log_time, CAST(!casNow AS datetime)) >= TIMESTAMPDIFF(HOUR, latest_log_time, DATE_ADD(latest_log_time, INTERVAL !casRepetitionInterval))")
         ->param(array(
           'casRepetitionInterval' => $this->parseRepetitionInterval(),
         ))
@@ -572,7 +572,12 @@ WHERE      $group.id = {$groupId}
 
       case self::PHASE_ADDITION_FIRST:
       case self::PHASE_ADDITION_REPEAT:
-        $fragment = \CRM_Utils_SQL_Select::fragment();
+        //CRM-19017: Load default params for fragment query object.
+        $params = array(
+          'casActionScheduleId' => $this->actionSchedule->id,
+          'casNow' => $this->now,
+        );
+        $fragment = \CRM_Utils_SQL_Select::fragment()->param($params);
         $fragment->select(
           array(
             "c.id as contact_id",