CRM-21460 Add job execution hooks
authorRomain Thouvenin <romain@wemove.eu>
Tue, 28 Nov 2017 14:58:50 +0000 (15:58 +0100)
committerRomain Thouvenin <romain@wemove.eu>
Tue, 28 Nov 2017 15:01:40 +0000 (16:01 +0100)
CRM/Core/JobManager.php
CRM/Utils/Hook.php

index 6c3b1bec61af4e1c2a618dee9387bee3b53dc47f..a40092ac29bde977de02ee774476e601de1f2f3b 100644 (file)
@@ -141,12 +141,15 @@ class CRM_Core_JobManager {
       $params = $job->apiParams;
     }
 
+    CRM_Utils_Hook::preJob($job, $params);
     try {
       $result = civicrm_api($job->api_entity, $job->api_action, $params);
     }
     catch (Exception$e) {
       $this->logEntry('Error while executing ' . $job->name . ': ' . $e->getMessage());
+      $result = $e;
     }
+    CRM_Utils_Hook::postJob($job, $params, $result);
     $this->logEntry('Finished execution of ' . $job->name . ' with result: ' . $this->_apiResultToMessage($result));
     $this->currentJob = FALSE;
   }
index 12e595fb5cce795ecf5424be3cb4fcc565685269..4a443495853394ead2bfa05c2b90e7b6c293e901 100644 (file)
@@ -2396,4 +2396,36 @@ abstract class CRM_Utils_Hook {
     );
   }
 
+  /**
+   * This hook is called before a scheduled job is executed
+   *
+   * @param CRM_Core_DAO_Job $job
+   *   The job to be executed
+   * @param array $params
+   *   The arguments to be given to the job
+   */
+  public static function preJob($job, $params) {
+    return self::singleton()->invoke(array('job', 'params'), $job, $params,
+      self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject,
+      'civicrm_preJob'
+    );
+  }
+
+  /**
+   * This hook is called after a scheduled job is executed
+   *
+   * @param CRM_Core_DAO_Job $job
+   *   The job that was executed
+   * @param array $params
+   *   The arguments given to the job
+   * @param array $result
+   *   The result of the API call, or the thrown exception if any
+   */
+  public static function postJob($job, $params, $result) {
+    return self::singleton()->invoke(array('job', 'params', 'result'), $job, $params, $result,
+      self::$_nullObject, self::$_nullObject, self::$_nullObject,
+      'civicrm_postJob'
+    );
+  }
+
 }