Merge pull request #6251 from LevityNL/master
[civicrm-core.git] / api / v3 / Job.php
index 1f554eda0ff58350104bfde214d9e63ec5722914..c6a27618e4b6d9f17fde80bf6aebc03271f4612d 100644 (file)
@@ -3,7 +3,7 @@
  +--------------------------------------------------------------------+
  | CiviCRM version 4.6                                                |
  +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2014                                |
+ | Copyright CiviCRM LLC (c) 2004-2015                                |
  +--------------------------------------------------------------------+
  | This file is a part of CiviCRM.                                    |
  |                                                                    |
@@ -26,7 +26,7 @@
  */
 
 /**
- * This api is used for triggering scheduled "cron" jobs.
+ * This api is used for working with scheduled "cron" jobs.
  *
  * @package CiviCRM_APIv3
  */
@@ -99,7 +99,7 @@ function civicrm_api3_job_execute($params) {
   $facility->execute(FALSE);
 
   // Always creates success - results are handled elsewhere.
-  return civicrm_api3_create_success(1, $params);
+  return civicrm_api3_create_success(1, $params, 'Job');
 }
 
 /**
@@ -139,11 +139,27 @@ function civicrm_api3_job_geocode($params) {
  * @param array $params
  */
 function _civicrm_api3_job_geocode_spec(&$params) {
-  $params['start'] = array('title' => 'Start Date');
-  $params['end'] = array('title' => 'End Date');
-  $params['geocoding'] = array('title' => 'Geocode address?');
-  $params['parse'] = array('title' => 'Parse street address?');
-  $params['throttle'] = array('title' => 'Throttle? if enabled, geo-codes at a slow rate');
+  $params['start'] = array(
+    'title' => 'Starting Contact ID',
+    'type' => CRM_Utils_Type::T_INT,
+  );
+  $params['end'] = array(
+    'title' => 'Ending Contact ID',
+    'type' => CRM_Utils_Type::T_INT,
+  );
+  $params['geocoding'] = array(
+    'title' => 'Geocode address?',
+    'type' => CRM_Utils_Type::T_BOOLEAN,
+  );
+  $params['parse'] = array(
+    'title' => 'Parse street address?',
+    'type' => CRM_Utils_Type::T_BOOLEAN,
+  );
+  $params['throttle'] = array(
+    'title' => 'Throttle?',
+    'description' => 'If enabled, geo-codes at a slow rate',
+    'type' => CRM_Utils_Type::T_BOOLEAN,
+  );
 }
 
 /**
@@ -162,9 +178,9 @@ function civicrm_api3_job_send_reminder($params) {
   // in that case (ie. makes it non-configurable via the UI). Another approach would be to set a default of 0
   // in the _spec function - but since that is a deprecated value it seems more contentious than this approach
   $params['rowCount'] = 0;
-  $lock = new CRM_Core_Lock('civimail.job.EmailProcessor');
+  $lock = Civi\Core\Container::singleton()->get('lockManager')->acquire('worker.core.ActionSchedule');
   if (!$lock->isAcquired()) {
-    return civicrm_api3_create_error('Could not acquire lock, another EmailProcessor process is running');
+    return civicrm_api3_create_error('Could not acquire lock, another ActionSchedule process is running');
   }
 
   $result = CRM_Core_BAO_ActionSchedule::processQueue(CRM_Utils_Array::value('now', $params), $params);
@@ -296,13 +312,16 @@ function civicrm_api3_job_process_pledge($params) {
  * @return array
  */
 function civicrm_api3_job_process_mailing($params) {
+  $mailsProcessedOrig = CRM_Mailing_BAO_MailingJob::$mailsProcessed;
 
   if (!CRM_Mailing_BAO_Mailing::processQueue()) {
     return civicrm_api3_create_error('Process Queue failed');
   }
   else {
-    $values = array();
-    return civicrm_api3_create_success($values, $params, 'mailing', 'process');
+    $values = array(
+      'processed' => CRM_Mailing_BAO_MailingJob::$mailsProcessed - $mailsProcessedOrig,
+    );
+    return civicrm_api3_create_success($values, $params, 'Job', 'process_mailing');
   }
 }
 
@@ -314,12 +333,16 @@ function civicrm_api3_job_process_mailing($params) {
  * @return array
  */
 function civicrm_api3_job_process_sms($params) {
+  $mailsProcessedOrig = CRM_Mailing_BAO_MailingJob::$mailsProcessed;
+
   if (!CRM_Mailing_BAO_Mailing::processQueue('sms')) {
     return civicrm_api3_create_error('Process Queue failed');
   }
   else {
-    $values = array();
-    return civicrm_api3_create_success($values, $params, 'mailing', 'process');
+    $values = array(
+      'processed' => CRM_Mailing_BAO_MailingJob::$mailsProcessed - $mailsProcessedOrig,
+    );
+    return civicrm_api3_create_success($values, $params, 'Job', 'process_sms');
   }
 }
 
@@ -331,7 +354,7 @@ function civicrm_api3_job_process_sms($params) {
  * @return array
  */
 function civicrm_api3_job_fetch_bounces($params) {
-  $lock = new CRM_Core_Lock('civimail.job.EmailProcessor');
+  $lock = Civi\Core\Container::singleton()->get('lockManager')->acquire('worker.mailing.EmailProcessor');
   if (!$lock->isAcquired()) {
     return civicrm_api3_create_error('Could not acquire lock, another EmailProcessor process is running');
   }
@@ -343,7 +366,7 @@ function civicrm_api3_job_fetch_bounces($params) {
 
   // FIXME: processBounces doesn't return true/false on success/failure
   $values = array();
-  return civicrm_api3_create_success($values, $params, 'mailing', 'bounces');
+  return civicrm_api3_create_success($values, $params, 'Job', 'fetch_bounces');
 }
 
 /**
@@ -354,7 +377,7 @@ function civicrm_api3_job_fetch_bounces($params) {
  * @return array
  */
 function civicrm_api3_job_fetch_activities($params) {
-  $lock = new CRM_Core_Lock('civimail.job.EmailProcessor');
+  $lock = Civi\Core\Container::singleton()->get('lockManager')->acquire('worker.mailing.EmailProcessor');
   if (!$lock->isAcquired()) {
     return civicrm_api3_create_error('Could not acquire lock, another EmailProcessor process is running');
   }
@@ -363,7 +386,7 @@ function civicrm_api3_job_fetch_activities($params) {
     CRM_Utils_Mail_EmailProcessor::processActivities();
     $values = array();
     $lock->release();
-    return civicrm_api3_create_success($values, $params, 'mailing', 'activities');
+    return civicrm_api3_create_success($values, $params, 'Job', 'fetch_activities');
   }
   catch (Exception $e) {
     $lock->release();
@@ -407,7 +430,7 @@ function civicrm_api3_job_process_participant($params) {
  *   true if success, else false
  */
 function civicrm_api3_job_process_membership($params) {
-  $lock = new CRM_Core_Lock('civimail.job.updateMembership');
+  $lock = Civi\Core\Container::singleton()->get('lockManager')->acquire('worker.member.UpdateMembership');
   if (!$lock->isAcquired()) {
     return civicrm_api3_create_error('Could not acquire lock, another Membership Processing process is running');
   }
@@ -416,7 +439,7 @@ function civicrm_api3_job_process_membership($params) {
   $lock->release();
 
   if ($result['is_error'] == 0) {
-    return civicrm_api3_create_success($result['messages'], $params);
+    return civicrm_api3_create_success($result['messages'], $params, 'Job', 'process_membership');
   }
   else {
     return civicrm_api3_create_error($result['messages']);
@@ -576,7 +599,7 @@ function civicrm_api3_job_disable_expired_relationships($params) {
   if (!$result) {
     throw new API_Exception('Failed to disable all expired relationships.');
   }
-  return civicrm_api3_create_success(1, $params);
+  return civicrm_api3_create_success(1, $params, 'Job', 'disable_expired_relationships');
 }
 
 /**
@@ -593,7 +616,7 @@ function civicrm_api3_job_disable_expired_relationships($params) {
  * @throws \API_Exception
  */
 function civicrm_api3_job_group_rebuild($params) {
-  $lock = new CRM_Core_Lock('civimail.job.groupRebuild');
+  $lock = Civi\Core\Container::singleton()->get('lockManager')->acquire('worker.core.GroupRebuild');
   if (!$lock->isAcquired()) {
     throw new API_Exception('Could not acquire lock, another EmailProcessor process is running');
   }