From 9d180e386bd8437172646f26a762cdb8fb00a1be Mon Sep 17 00:00:00 2001 From: Jitendra Purohit Date: Thu, 13 Jul 2017 20:00:27 +0530 Subject: [PATCH] CRM-19017 : Load default params for fragment query object. --- CRM/Member/ActionMapping.php | 2 +- Civi/ActionSchedule/RecipientBuilder.php | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CRM/Member/ActionMapping.php b/CRM/Member/ActionMapping.php index 8d3af1186e..9645ebcd06 100644 --- a/CRM/Member/ActionMapping.php +++ b/CRM/Member/ActionMapping.php @@ -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'; diff --git a/Civi/ActionSchedule/RecipientBuilder.php b/Civi/ActionSchedule/RecipientBuilder.php index 7cccfca5dc..87b942dc5a 100644 --- a/Civi/ActionSchedule/RecipientBuilder.php +++ b/Civi/ActionSchedule/RecipientBuilder.php @@ -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", -- 2.25.1