CRM-14108 add scheduled reminder id as a params on scheduled job
authorEileen <eileen@fuzion.co.nz>
Wed, 22 Jan 2014 01:39:37 +0000 (01:39 +0000)
committerEileen McNaughton <eileen@fuzion.co.nz>
Wed, 22 Jan 2014 04:48:11 +0000 (17:48 +1300)
----------------------------------------

----------------------------------------
* CRM-14108: Add Param for id to scheduled reminders
  http://issues.civicrm.org/jira/browse/CRM-14108

CRM/Core/BAO/ActionSchedule.php
api/v3/Job.php

index 5bfedcecdc220813f8de052472723fcd3281e302..de6cc669472073ca4d73db84544f66f1288f4b9d 100755 (executable)
@@ -755,10 +755,13 @@ WHERE reminder.action_schedule_id = %1 AND reminder.action_date_time IS NULL
     }
   }
 
-  static function buildRecipientContacts($mappingID, $now) {
+  static function buildRecipientContacts($mappingID, $now, $params = array()) {
     $actionSchedule = new CRM_Core_DAO_ActionSchedule();
     $actionSchedule->mapping_id = $mappingID;
     $actionSchedule->is_active = 1;
+    if(!empty($params)) {
+      _civicrm_api3_dao_set_filter($actionSchedule, $params, FALSE, 'ActionSchedule');
+    }
     $actionSchedule->find();
 
     while ($actionSchedule->fetch()) {
@@ -1157,12 +1160,12 @@ WHERE     m.owner_membership_id IS NOT NULL AND
     return NULL;
   }
 
-  static function processQueue($now = NULL) {
+  static function processQueue($now = NULL, $params = array()) {
     $now = $now ? CRM_Utils_Time::setTime($now) : CRM_Utils_Time::getTime();
 
     $mappings = self::getMapping();
     foreach ($mappings as $mappingID => $mapping) {
-      self::buildRecipientContacts($mappingID, $now);
+      self::buildRecipientContacts($mappingID, $now, $params);
       self::sendMailings($mappingID, $now);
     }
 
index 06316253c6da0ded0e50ace19066254d92f10cf8..1c07ac65158f94724a257b639d7e4802dbfc019d 100644 (file)
@@ -190,7 +190,7 @@ function civicrm_api3_job_send_reminder($params) {
     return civicrm_api3_create_error('Could not acquire lock, another EmailProcessor process is running');
   }
 
-  $result = CRM_Core_BAO_ActionSchedule::processQueue(CRM_Utils_Array::value('now', $params));
+  $result = CRM_Core_BAO_ActionSchedule::processQueue(CRM_Utils_Array::value('now', $params), $params);
   $lock->release();
 
   if ($result['is_error'] == 0) {
@@ -200,7 +200,20 @@ function civicrm_api3_job_send_reminder($params) {
     return civicrm_api3_create_error($result['messages']);
   }
 }
-
+/**
+ * Adjust metadata for "send_reminder" action
+ *
+ * The metadata is used for setting defaults, documentation & validation
+ * @param array $params array or parameters determined by getfields
+ */
+function _civicrm_api3_job_send_reminder(&$params) {
+  //@todo this function will now take all fields in action_schedule as params
+  // as it is calling the api fn to set the filters - update getfields to reflect
+  $params['id'] = array(
+    'type' => CRM_Utils_Type::T_INT,
+    'title' => 'Action Schedule ID'
+  );
+}
 /**
  * Execute a specific report instance and send the output via email
  *