CRM/Queue - Code style
authorTim Otten <totten@civicrm.org>
Mon, 29 Dec 2014 02:25:09 +0000 (18:25 -0800)
committerTim Otten <totten@civicrm.org>
Mon, 29 Dec 2014 02:28:25 +0000 (18:28 -0800)
12 files changed:
CRM/Queue/BAO/QueueItem.php
CRM/Queue/ErrorPolicy.php
CRM/Queue/Menu.php
CRM/Queue/Page/AJAX.php
CRM/Queue/Page/Runner.php
CRM/Queue/Queue.php
CRM/Queue/Queue/Memory.php
CRM/Queue/Queue/Sql.php
CRM/Queue/Runner.php
CRM/Queue/Service.php
CRM/Queue/Task.php
CRM/Queue/TaskContext.php

index f27703d59801a43b1ab96927d92a6e5c4c00b877..7913e49a94e1380fa09a9faf3f787ca5e5431190 100644 (file)
@@ -45,7 +45,7 @@ class CRM_Queue_BAO_QueueItem extends CRM_Queue_DAO_QueueItem {
    *
    * @return bool TRUE if table now exists
    */
-  static function findCreateTable() {
+  public static function findCreateTable() {
     $checkTableSql = "show tables like 'civicrm_queue_item'";
     $foundName = CRM_Core_DAO::singleValueQuery($checkTableSql);
     if ($foundName == 'civicrm_queue_item') {
@@ -63,4 +63,3 @@ class CRM_Queue_BAO_QueueItem extends CRM_Queue_DAO_QueueItem {
     return ($foundName == 'civicrm_queue_item');
   }
 }
-
index 055a96b11bb29680fe2d6f404c4c21749a34f076..afc762ee6d9d758e1acd7c7b3e86802d103348b8 100644 (file)
@@ -26,8 +26,8 @@
 */
 
 /**
- * To ensure that PHP errors or unhandled exceptions are reported in JSON format,
- * wrap this around your code. For example:
+ * To ensure that PHP errors or unhandled exceptions are reported in JSON
+ * format, wrap this around your code. For example:
  *
  * @code
  * $errorContainer = new CRM_Queue_ErrorPolicy();
  * will be necessary to get reuse from the other parts of this class.
  */
 class CRM_Queue_ErrorPolicy {
-  var $active;
+  public $active;
 
   /**
-   * @param null $level
+   * @param null|int $level
+   *   PHP error level to capture (e.g. E_PARSE|E_USER_ERROR).
    */
-  function __construct($level = NULL) {
+  public function __construct($level = NULL) {
     register_shutdown_function(array($this, 'onShutdown'));
     if ($level === NULL) {
       $level = E_ERROR | E_PARSE | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR;
@@ -55,7 +56,10 @@ class CRM_Queue_ErrorPolicy {
     $this->level = $level;
   }
 
-  function activate() {
+  /**
+   * Enable the error policy.
+   */
+  public function activate() {
     $this->active = TRUE;
     $this->backup = array();
     foreach (array(
@@ -68,7 +72,10 @@ class CRM_Queue_ErrorPolicy {
     $this->errorScope = CRM_Core_TemporaryErrorScope::useException();
   }
 
-  function deactivate() {
+  /**
+   * Disable the error policy.
+   */
+  public function deactivate() {
     $this->errorScope = NULL;
     restore_error_handler();
     foreach (array(
@@ -79,11 +86,15 @@ class CRM_Queue_ErrorPolicy {
   }
 
   /**
-   * @param $callable
+   * Execute the callable. Activate and deactivate the error policy
+   * automatically.
+   *
+   * @param callable|array|string $callable
+   *   A callback function.
    *
    * @return mixed
    */
-  function call($callable) {
+  public function call($callable) {
     $this->activate();
     try {
       $result = $callable();
@@ -100,7 +111,7 @@ class CRM_Queue_ErrorPolicy {
    *
    * @see set_error_handler
    */
-  function onError($errno, $errstr, $errfile, $errline) {
+  public function onError($errno, $errstr, $errfile, $errline) {
     if (!(error_reporting() & $errno)) {
       return TRUE;
     }
@@ -113,7 +124,7 @@ class CRM_Queue_ErrorPolicy {
    * @see register_shutdown_function
    * @see error_get_last
    */
-  function onShutdown() {
+  public function onShutdown() {
     if (!$this->active) {
       return;
     }
@@ -126,9 +137,10 @@ class CRM_Queue_ErrorPolicy {
   /**
    * Print a fatal error
    *
-   * @param $error
+   * @param array $error
+   *   The PHP error (with "type", "message", etc).
    */
-  function reportError($error) {
+  public function reportError($error) {
     $response = array(
       'is_error' => 1,
       'is_continue' => 0,
@@ -146,9 +158,10 @@ class CRM_Queue_ErrorPolicy {
   /**
    * Print an unhandled exception
    *
-   * @param $e
+   * @param Exception $e
+   *   The unhandled exception.
    */
-  function reportException(Exception $e) {
+  public function reportException(Exception $e) {
     CRM_Core_Error::debug_var('CRM_Queue_ErrorPolicy_reportException', CRM_Core_Error::formatTextException($e));
 
     $response = array(
@@ -171,4 +184,3 @@ class CRM_Queue_ErrorPolicy {
     CRM_Utils_JSON::output($response);
   }
 }
-
index 98c93a1a79f34b8d6acc3c041eef24365076e3a2..1a2f47489ea095c1b1951cdcbb08d3db1a2bc61b 100644 (file)
@@ -44,10 +44,12 @@ require_once 'CRM/Core/I18n.php';
 class CRM_Queue_Menu {
 
   /**
-   * @param $path
-   * @param $menuPath
+   * @param string $path
+   *   The path for which we are trying to locate the route.
+   * @param array $menuPath
+   *   The route.
    */
-  static function alter($path, &$menuPath) {
+  public static function alter($path, &$menuPath) {
     switch ($path) {
       case 'civicrm/queue/runner':
       case 'civicrm/upgrade/queue/runner':
@@ -87,4 +89,3 @@ class CRM_Queue_Menu {
     }
   }
 }
-
index 44fe9c9e56de125ca4d659cf6cb19b68661126df..28b5bad7ab540deed2522ef7c483e097e186c827 100644 (file)
@@ -33,86 +33,95 @@ class CRM_Queue_Page_AJAX {
   /**
    * Run the next task and return status information
    *
-   * @return array(is_error => bool, is_continue => bool, numberOfItems => int, exception => htmlString)
+   * Outputs JSON: array(
+   *   is_error => bool,
+   *   is_continue => bool,
+   *   numberOfItems => int,
+   *   exception => htmlString
+   * )
    */
-  static function runNext() {
+  public static function runNext() {
     $errorPolicy = new CRM_Queue_ErrorPolicy();
-    $errorPolicy->call(
-    function () {
-        global $activeQueueRunner;
-        $qrid = CRM_Utils_Request::retrieve('qrid', 'String', CRM_Core_DAO::$_nullObject, TRUE, NULL, 'POST');
-        $activeQueueRunner = CRM_Queue_Runner::instance($qrid);
-        if (!is_object($activeQueueRunner)) {
-          throw new Exception('Queue runner must be configured before execution.');
+    $errorPolicy->call(function () {
+      global $activeQueueRunner;
+      $qrid = CRM_Utils_Request::retrieve('qrid', 'String', CRM_Core_DAO::$_nullObject, TRUE, NULL, 'POST');
+      $activeQueueRunner = CRM_Queue_Runner::instance($qrid);
+      if (!is_object($activeQueueRunner)) {
+        throw new Exception('Queue runner must be configured before execution.');
       }
-        $result = $activeQueueRunner->runNext(TRUE);
-        CRM_Queue_Page_AJAX::_return('runNext', $result);
-      }
-    );
+      $result = $activeQueueRunner->runNext(TRUE);
+      CRM_Queue_Page_AJAX::_return('runNext', $result);
+    });
   }
 
   /**
    * Run the next task and return status information
    *
-   * @return array(is_error => bool, is_continue => bool, numberOfItems => int, exception => htmlString)
+   * Outputs JSON: array(
+   *   is_error => bool,
+   *   is_continue => bool,
+   *   numberOfItems => int,
+   *   exception => htmlString
+   * )
    */
-  static function skipNext() {
+  public static function skipNext() {
     $errorPolicy = new CRM_Queue_ErrorPolicy();
-    $errorPolicy->call(
-    function () {
-        global $activeQueueRunner;
-        $qrid = CRM_Utils_Request::retrieve('qrid', 'String', CRM_Core_DAO::$_nullObject, TRUE, NULL, 'POST');
-        $activeQueueRunner = CRM_Queue_Runner::instance($qrid);
-        if (!is_object($activeQueueRunner)) {
-          throw new Exception('Queue runner must be configured before execution.');
-      }
-        $result = $activeQueueRunner->skipNext(TRUE);
-        CRM_Queue_Page_AJAX::_return('skipNext', $result);
+    $errorPolicy->call(function () {
+      global $activeQueueRunner;
+      $qrid = CRM_Utils_Request::retrieve('qrid', 'String', CRM_Core_DAO::$_nullObject, TRUE, NULL, 'POST');
+      $activeQueueRunner = CRM_Queue_Runner::instance($qrid);
+      if (!is_object($activeQueueRunner)) {
+        throw new Exception('Queue runner must be configured before execution.');
       }
-    );
+      $result = $activeQueueRunner->skipNext(TRUE);
+      CRM_Queue_Page_AJAX::_return('skipNext', $result);
+    });
   }
 
   /**
    * Run the next task and return status information
    *
-   * @return array(is_error => bool, is_continue => bool, numberOfItems => int, exception => htmlString)
+   * Outputs JSON: array(
+   *   is_error => bool,
+   *   is_continue => bool,
+   *   numberOfItems => int,
+   *   exception => htmlString
+   * )
    */
-  static function onEnd() {
+  public static function onEnd() {
     $errorPolicy = new CRM_Queue_ErrorPolicy();
-    $errorPolicy->call(
-    function () {
-        global $activeQueueRunner;
-        $qrid = CRM_Utils_Request::retrieve('qrid', 'String', CRM_Core_DAO::$_nullObject, TRUE, NULL, 'POST');
-        $activeQueueRunner = CRM_Queue_Runner::instance($qrid);
-        if (!is_object($activeQueueRunner)) {
-          throw new Exception('Queue runner must be configured before execution. - onEnd');
+    $errorPolicy->call(function () {
+      global $activeQueueRunner;
+      $qrid = CRM_Utils_Request::retrieve('qrid', 'String', CRM_Core_DAO::$_nullObject, TRUE, NULL, 'POST');
+      $activeQueueRunner = CRM_Queue_Runner::instance($qrid);
+      if (!is_object($activeQueueRunner)) {
+        throw new Exception('Queue runner must be configured before execution. - onEnd');
       }
-        $result = $activeQueueRunner->handleEnd(FALSE);
-        CRM_Queue_Page_AJAX::_return('onEnd', $result);
-    }
-    );
+      $result = $activeQueueRunner->handleEnd(FALSE);
+      CRM_Queue_Page_AJAX::_return('onEnd', $result);
+    });
   }
 
   /**
    * Performing any view-layer filtering on result and send to client.
    */
-  static function _return($op, $result) {
-        if ($result['is_error']) {
+  public static function _return($op, $result) {
+    if ($result['is_error']) {
       if (is_object($result['exception'])) {
         CRM_Core_Error::debug_var("CRM_Queue_Page_AJAX_{$op}_error", CRM_Core_Error::formatTextException($result['exception']));
 
         $config = CRM_Core_Config::singleton();
         if ($config->backtrace || CRM_Core_Config::isUpgradeMode()) {
           $result['exception'] = CRM_Core_Error::formatHtmlException($result['exception']);
-      }
+        }
         else {
           $result['exception'] = $result['exception']->getMessage();
         }
-      } else {
+      }
+      else {
         CRM_Core_Error::debug_var("CRM_Queue_Page_AJAX_{$op}_error", $result);
       }
     }
-        CRM_Utils_JSON::output($result);
-    }
+    CRM_Utils_JSON::output($result);
   }
-
+}
index 580062bca8a0816b56c1e289438d43b45ad37df5..b71efc8dbcf5ae5e5373bf8ec1b13ff7d1f6dbf0 100644 (file)
@@ -48,24 +48,23 @@ class CRM_Queue_Page_Runner extends CRM_Core_Page {
    *
    * POST Param 'qrid': string, usually the name of the queue
    */
-  function run() {
+  public function run() {
     $qrid = CRM_Utils_Request::retrieve('qrid', 'String', $this, TRUE);
     $runner = CRM_Queue_Runner::instance($qrid);
-    // dpm(array( 'action' => 'CRM_Queue_Page_Runner::run()', 'session' => $_SESSION, 'runner' => $runner, 'qrid' => $qrid ));
     if (!is_object($runner)) {
       CRM_Core_Error::fatal('Queue runner must be configured before execution.');
     }
 
     CRM_Utils_System::setTitle($runner->title);
     $this->assign('queueRunnerData', array(
-        'qrid' => $runner->qrid,
-        'runNextAjax' => CRM_Utils_System::url($runner->pathPrefix . '/ajax/runNext', NULL, FALSE, NULL, FALSE ),
-        'skipNextAjax' => CRM_Utils_System::url($runner->pathPrefix . '/ajax/skipNext', NULL, FALSE, NULL, FALSE ),
-        'onEndAjax' => CRM_Utils_System::url($runner->pathPrefix . '/ajax/onEnd', NULL, FALSE, NULL, FALSE ),
-        'completed' => 0,
-        'numberOfItems' => $runner->queue->numberOfItems(),
-        'buttons' => $runner->buttons,
-      ));
+      'qrid' => $runner->qrid,
+      'runNextAjax' => CRM_Utils_System::url($runner->pathPrefix . '/ajax/runNext', NULL, FALSE, NULL, FALSE),
+      'skipNextAjax' => CRM_Utils_System::url($runner->pathPrefix . '/ajax/skipNext', NULL, FALSE, NULL, FALSE),
+      'onEndAjax' => CRM_Utils_System::url($runner->pathPrefix . '/ajax/onEnd', NULL, FALSE, NULL, FALSE),
+      'completed' => 0,
+      'numberOfItems' => $runner->queue->numberOfItems(),
+      'buttons' => $runner->buttons,
+    ));
 
     if ($runner->isMinimal) {
       // Render page header
index 8ec75ed08eb5526f72692b295c9ba45fe796b33a..d6a0dd15f08f7e46b9d4d4004de44950073debd4 100644 (file)
@@ -46,12 +46,16 @@ abstract class CRM_Queue_Queue {
    * usually call createQueue (if it's a new queue) or loadQueue (if it's
    * known to be an existing queue).
    *
-   * @param $queueSpec, array with keys:
-   *   - type: string, required, e.g. "interactive", "immediate", "stomp", "beanstalk"
+   * @param array $queueSpec
+   *   Array with keys:
+   *   - type: string, required, e.g. "interactive", "immediate", "stomp",
+   *     "beanstalk"
    *   - name: string, required, e.g. "upgrade-tasks"
-   *   - reset: bool, optional; if a queue is found, then it should be flushed; default to TRUE
-   *   - (additional keys depending on the queue provider)
-   */ function __construct($queueSpec) {
+   *   - reset: bool, optional; if a queue is found, then it should be
+   *     flushed; default to TRUE
+   *   - (additional keys depending on the queue provider).
+   */
+  public function __construct($queueSpec) {
     $this->_name = $queueSpec['name'];
   }
 
@@ -60,82 +64,83 @@ abstract class CRM_Queue_Queue {
    *
    * @return string
    */
-  function getName() {
+  public function getName() {
     return $this->_name;
   }
 
   /**
    * Perform any registation or resource-allocation for a new queue
    */
-  abstract function createQueue();
+  public abstract function createQueue();
 
   /**
    * Perform any loading or pre-fetch for an existing queue.
    */
-  abstract function loadQueue();
+  public abstract function loadQueue();
 
   /**
    * Release any resources claimed by the queue (memory, DB rows, etc)
    */
-  abstract function deleteQueue();
+  public abstract function deleteQueue();
 
   /**
    * Check if the queue exists
    *
    * @return bool
    */
-  abstract function existsQueue();
+  public abstract function existsQueue();
 
   /**
    * Add a new item to the queue
    *
-   * @param $data serializable PHP object or array
-   * @param array|\queue $options queue-dependent options; for example, if this is a
-   *   priority-queue, then $options might specify the item's priority
-   *
-   * @return bool, TRUE on success
+   * @param mixed $data
+   *   Serializable PHP object or array.
+   * @param array $options
+   *   Queue-dependent options; for example, if this is a
+   *   priority-queue, then $options might specify the item's priority.
    */
-  abstract function createItem($data, $options = array());
+  public abstract function createItem($data, $options = array());
 
   /**
    * Determine number of items remaining in the queue
    *
    * @return int
    */
-  abstract function numberOfItems();
+  public abstract function numberOfItems();
 
   /**
    * Get the next item
    *
-   * @param int|\seconds $lease_time seconds
+   * @param int $lease_time
+   *   Seconds.
    *
    * @return object with key 'data' that matches the inputted data
    */
-  abstract function claimItem($lease_time = 3600);
+  public abstract function claimItem($lease_time = 3600);
 
   /**
    * Get the next item, even if there's an active lease
    *
-   * @param int|\seconds $lease_time seconds
+   * @param int $lease_time
+   *   Seconds.
    *
    * @return object with key 'data' that matches the inputted data
    */
-  abstract function stealItem($lease_time = 3600);
+  public abstract function stealItem($lease_time = 3600);
 
   /**
    * Remove an item from the queue
    *
-   * @param $item The item returned by claimItem
+   * @param object $item
+   *   The item returned by claimItem.
    */
-  abstract function deleteItem($item);
+  public abstract function deleteItem($item);
 
   /**
    * Return an item that could not be processed
    *
-   * @param $item The item returned by claimItem
-   *
-   * @return bool
+   * @param object $item
+   *   The item returned by claimItem.
    */
-  abstract function releaseItem($item);
+  public abstract function releaseItem($item);
 }
-
index a668e5747b01e70b499e367f511a0265224a9a72..cce29ee776636a390e6472dcc32b7c8e17f6086f 100644 (file)
 class CRM_Queue_Queue_Memory extends CRM_Queue_Queue {
 
   /**
-   * @var array(queueItemId => queueItemData)
+   * @var array
+   *   array(queueItemId => queueItemData)
    */
-  var $items;
+  public $items;
 
   /**
-   * @var array(
-     queueItemId => releaseTime), expressed in seconds since epoch
+   * @var array
+   *   array(queueItemId => releaseTime), expressed in seconds since epoch.
    */
-  var $releaseTimes;
+  public $releaseTimes;
 
-  var $nextQueueItemId = 1;
+  public $nextQueueItemId = 1;
 
   /**
    * Create a reference to queue. After constructing the queue, one should
    * usually call createQueue (if it's a new queue) or loadQueue (if it's
    * known to be an existing queue).
    *
-   * @param $queueSpec, array with keys:
-   *   - type: string, required, e.g. "interactive", "immediate", "stomp", "beanstalk"
+   * @param array $queueSpec
+   *   Array with keys:
+   *   - type: string, required, e.g. "interactive", "immediate", "stomp",
+   *     "beanstalk"
    *   - name: string, required, e.g. "upgrade-tasks"
-   *   - reset: bool, optional; if a queue is found, then it should be flushed; default to TRUE
-   *   - (additional keys depending on the queue provider)
+   *   - reset: bool, optional; if a queue is found, then it should be
+   *     flushed; default to TRUE
+   *   - (additional keys depending on the queue provider).
    */
-  function __construct($queueSpec) {
+  public function __construct($queueSpec) {
     parent::__construct($queueSpec);
   }
 
   /**
    * Perform any registation or resource-allocation for a new queue
    */
-  function createQueue() {
+  public function createQueue() {
     $this->items = array();
     $this->releaseTimes = array();
   }
@@ -69,7 +73,7 @@ class CRM_Queue_Queue_Memory extends CRM_Queue_Queue {
   /**
    * Perform any loading or pre-fetch for an existing queue.
    */
-  function loadQueue() {
+  public function loadQueue() {
     // $this->createQueue();
     throw new Exception('Unsupported: CRM_Queue_Queue_Memory::loadQueue');
   }
@@ -77,7 +81,7 @@ class CRM_Queue_Queue_Memory extends CRM_Queue_Queue {
   /**
    * Release any resources claimed by the queue (memory, DB rows, etc)
    */
-  function deleteQueue() {
+  public function deleteQueue() {
     $this->items = NULL;
     $this->releaseTimes = NULL;
   }
@@ -87,20 +91,20 @@ class CRM_Queue_Queue_Memory extends CRM_Queue_Queue {
    *
    * @return bool
    */
-  function existsQueue() {
+  public function existsQueue() {
     return is_array($this->items);
   }
 
   /**
    * Add a new item to the queue
    *
-   * @param $data serializable PHP object or array
-   * @param array|\queue $options queue-dependent options; for example, if this is a
-   *   priority-queue, then $options might specify the item's priority
-   *
-   * @return bool, TRUE on success
+   * @param mixed $data
+   *   Serializable PHP object or array.
+   * @param array $options
+   *   Queue-dependent options; for example, if this is a
+   *   priority-queue, then $options might specify the item's priority.
    */
-  function createItem($data, $options = array()) {
+  public function createItem($data, $options = array()) {
     $id = $this->nextQueueItemId++;
     // force copy, no unintendedsharing effects from pointers
     $this->items[$id] = serialize($data);
@@ -111,18 +115,20 @@ class CRM_Queue_Queue_Memory extends CRM_Queue_Queue {
    *
    * @return int
    */
-  function numberOfItems() {
+  public function numberOfItems() {
     return count($this->items);
   }
 
   /**
    * Get and remove the next item
    *
-   * @param int|\seconds $leaseTime seconds
+   * @param int $leaseTime
+   *   Seconds.
    *
-   * @return object with key 'data' that matches the inputted data
+   * @return object
+   *   Includes key 'data' that matches the inputted data.
    */
-  function claimItem($leaseTime = 3600) {
+  public function claimItem($leaseTime = 3600) {
     // foreach hits the items in order -- but we short-circuit after the first
     foreach ($this->items as $id => $data) {
       $nowEpoch = CRM_Utils_Time::getTimeRaw();
@@ -146,11 +152,13 @@ class CRM_Queue_Queue_Memory extends CRM_Queue_Queue {
   /**
    * Get the next item
    *
-   * @param int|\seconds $leaseTime seconds
+   * @param int $leaseTime
+   *   Seconds.
    *
-   * @return object with key 'data' that matches the inputted data
+   * @return object
+   *   With key 'data' that matches the inputted data.
    */
-  function stealItem($leaseTime = 3600) {
+  public function stealItem($leaseTime = 3600) {
     // foreach hits the items in order -- but we short-circuit after the first
     foreach ($this->items as $id => $data) {
       $nowEpoch = CRM_Utils_Time::getTimeRaw();
@@ -168,9 +176,10 @@ class CRM_Queue_Queue_Memory extends CRM_Queue_Queue {
   /**
    * Remove an item from the queue
    *
-   * @param $item object The item returned by claimItem
+   * @param object $item
+   *   The item returned by claimItem.
    */
-  function deleteItem($item) {
+  public function deleteItem($item) {
     unset($this->items[$item->id]);
     unset($this->releaseTimes[$item->id]);
   }
@@ -178,12 +187,10 @@ class CRM_Queue_Queue_Memory extends CRM_Queue_Queue {
   /**
    * Return an item that could not be processed
    *
-   * @param CRM_Core_DAO $item The item returned by claimItem
-   *
-   * @return bool
+   * @param CRM_Core_DAO $item
+   *   The item returned by claimItem.
    */
-  function releaseItem($item) {
+  public function releaseItem($item) {
     unset($this->releaseTimes[$item->id]);
   }
 }
-
index fb7a01df7cd1eec2379d0c9e9c98d52afc86fd7d..03f49bee909b7d4a3557b3faeca489490f193ebd 100644 (file)
@@ -35,40 +35,43 @@ class CRM_Queue_Queue_Sql extends CRM_Queue_Queue {
    * usually call createQueue (if it's a new queue) or loadQueue (if it's
    * known to be an existing queue).
    *
-   * @param $queueSpec, array with keys:
-   *   - type: string, required, e.g. "interactive", "immediate", "stomp", "beanstalk"
+   * @param array $queueSpec
+   *   Array with keys:
+   *   - type: string, required, e.g. "interactive", "immediate", "stomp",
+   *     "beanstalk"
    *   - name: string, required, e.g. "upgrade-tasks"
-   *   - reset: bool, optional; if a queue is found, then it should be flushed; default to TRUE
-   *   - (additional keys depending on the queue provider)
+   *   - reset: bool, optional; if a queue is found, then it should be
+   *     flushed; default to TRUE
+   *   - (additional keys depending on the queue provider).
    */
-  function __construct($queueSpec) {
+  public function __construct($queueSpec) {
     parent::__construct($queueSpec);
   }
 
   /**
    * Perform any registation or resource-allocation for a new queue
    */
-  function createQueue() {
+  public function createQueue() {
     // nothing to do -- just start CRUDing items in the appropriate table
   }
 
   /**
    * Perform any loading or pre-fetch for an existing queue.
    */
-  function loadQueue() {
+  public function loadQueue() {
     // nothing to do -- just start CRUDing items in the appropriate table
   }
 
   /**
    * Release any resources claimed by the queue (memory, DB rows, etc)
    */
-  function deleteQueue() {
+  public function deleteQueue() {
     return CRM_Core_DAO::singleValueQuery("
       DELETE FROM civicrm_queue_item
       WHERE queue_name = %1
     ", array(
-        1 => array($this->getName(), 'String'),
-      ));
+      1 => array($this->getName(), 'String'),
+    ));
   }
 
   /**
@@ -76,25 +79,25 @@ class CRM_Queue_Queue_Sql extends CRM_Queue_Queue {
    *
    * @return bool
    */
-  function existsQueue() {
+  public function existsQueue() {
     return ($this->numberOfItems() > 0);
   }
 
   /**
    * Add a new item to the queue
    *
-   * @param $data serializable PHP object or array
-   * @param array|\queue $options queue-dependent options; for example, if this is a
-   *   priority-queue, then $options might specify the item's priority
-   *
-   * @return bool, TRUE on success
+   * @param mixed $data
+   *   Serializable PHP object or array.
+   * @param array $options
+   *   Queue-dependent options; for example, if this is a
+   *   priority-queue, then $options might specify the item's priority.
    */
-  function createItem($data, $options = array()) {
-    $dao              = new CRM_Queue_DAO_QueueItem();
-    $dao->queue_name  = $this->getName();
+  public function createItem($data, $options = array()) {
+    $dao = new CRM_Queue_DAO_QueueItem();
+    $dao->queue_name = $this->getName();
     $dao->submit_time = CRM_Utils_Time::getTime('YmdHis');
-    $dao->data        = serialize($data);
-    $dao->weight      = CRM_Utils_Array::value('weight', $options, 0);
+    $dao->data = serialize($data);
+    $dao->weight = CRM_Utils_Array::value('weight', $options, 0);
     $dao->save();
   }
 
@@ -103,24 +106,26 @@ class CRM_Queue_Queue_Sql extends CRM_Queue_Queue {
    *
    * @return int
    */
-  function numberOfItems() {
+  public function numberOfItems() {
     return CRM_Core_DAO::singleValueQuery("
       SELECT count(*)
       FROM civicrm_queue_item
       WHERE queue_name = %1
     ", array(
-        1 => array($this->getName(), 'String'),
-      ));
+      1 => array($this->getName(), 'String'),
+    ));
   }
 
   /**
    * Get the next item
    *
-   * @param int|\seconds $lease_time seconds
+   * @param int $lease_time
+   *   Seconds.
    *
-   * @return object with key 'data' that matches the inputted data
+   * @return object
+   *   With key 'data' that matches the inputted data.
    */
-  function claimItem($lease_time = 3600) {
+  public function claimItem($lease_time = 3600) {
     $sql = "
       SELECT id, queue_name, submit_time, release_time, data
       FROM civicrm_queue_item
@@ -141,9 +146,9 @@ class CRM_Queue_Queue_Sql extends CRM_Queue_Queue {
       $nowEpoch = CRM_Utils_Time::getTimeRaw();
       if ($dao->release_time === NULL || strtotime($dao->release_time) < $nowEpoch) {
         CRM_Core_DAO::executeQuery("UPDATE civicrm_queue_item SET release_time = %1 WHERE id = %2", array(
-            '1' => array(date('YmdHis', $nowEpoch + $lease_time), 'String'),
-            '2' => array($dao->id, 'Integer'),
-          ));
+          '1' => array(date('YmdHis', $nowEpoch + $lease_time), 'String'),
+          '2' => array($dao->id, 'Integer'),
+        ));
         // work-around: inconsistent date-formatting causes unintentional breakage
         #        $dao->submit_time = date('YmdHis', strtotime($dao->submit_time));
         #        $dao->release_time = date('YmdHis', $nowEpoch + $lease_time);
@@ -165,11 +170,13 @@ class CRM_Queue_Queue_Sql extends CRM_Queue_Queue {
   /**
    * Get the next item, even if there's an active lease
    *
-   * @param int|\seconds $lease_time seconds
+   * @param int $lease_time
+   *   Seconds.
    *
-   * @return object with key 'data' that matches the inputted data
+   * @return object
+   *   With key 'data' that matches the inputted data.
    */
-  function stealItem($lease_time = 3600) {
+  public function stealItem($lease_time = 3600) {
     $sql = "
       SELECT id, queue_name, submit_time, release_time, data
       FROM civicrm_queue_item
@@ -184,9 +191,9 @@ class CRM_Queue_Queue_Sql extends CRM_Queue_Queue {
     if ($dao->fetch()) {
       $nowEpoch = CRM_Utils_Time::getTimeRaw();
       CRM_Core_DAO::executeQuery("UPDATE civicrm_queue_item SET release_time = %1 WHERE id = %2", array(
-          '1' => array(date('YmdHis', $nowEpoch + $lease_time), 'String'),
-          '2' => array($dao->id, 'Integer'),
-        ));
+        '1' => array(date('YmdHis', $nowEpoch + $lease_time), 'String'),
+        '2' => array($dao->id, 'Integer'),
+      ));
       $dao->data = unserialize($dao->data);
       return $dao;
     }
@@ -199,9 +206,10 @@ class CRM_Queue_Queue_Sql extends CRM_Queue_Queue {
   /**
    * Remove an item from the queue
    *
-   * @param CRM_Core_DAO $dao The item returned by claimItem
+   * @param CRM_Core_DAO $dao
+   *   The item returned by claimItem.
    */
-  function deleteItem($dao) {
+  public function deleteItem($dao) {
     $dao->delete();
     $dao->free();
   }
@@ -209,11 +217,10 @@ class CRM_Queue_Queue_Sql extends CRM_Queue_Queue {
   /**
    * Return an item that could not be processed
    *
-   * @param CRM_Core_DAO $dao The item returned by claimItem
-   *
-   * @return bool
+   * @param CRM_Core_DAO $dao
+   *   The item returned by claimItem.
    */
-  function releaseItem($dao) {
+  public function releaseItem($dao) {
     $sql = "UPDATE civicrm_queue_item SET release_time = NULL WHERE id = %1";
     $params = array(
       1 => array($dao->id, 'Integer'),
@@ -222,4 +229,3 @@ class CRM_Queue_Queue_Sql extends CRM_Queue_Queue {
     $dao->free();
   }
 }
-
index ff1188cd25c212649146065ae4a0ad6dbbcc967c..3c88e2fef031fcd60fbe40516ed7e8c28ff4557e 100644 (file)
 class CRM_Queue_Runner {
 
   /**
-   * The failed task should be discarded, and queue processing should continue
+   * The failed task should be discarded, and queue processing should continue.
    */
-  CONST ERROR_CONTINUE = 1;
+  const ERROR_CONTINUE = 1;
 
   /**
-   * The failed task should be kept in the queue, and queue processing should abort
+   * The failed task should be kept in the queue, and queue processing should
+   * abort.
    */
-  CONST ERROR_ABORT = 2;
+  const ERROR_ABORT = 2;
 
   /**
    * @var string
    */
-  var $title;
+  public $title;
 
   /**
    * @var CRM_Queue_Queue
    */
-  var $queue;
-  var $errorMode;
-  var $isMinimal;
-  var $onEnd;
-  var $onEndUrl;
-  var $pathPrefix;
+  public $queue;
+  public $errorMode;
+  public $isMinimal;
+  public $onEnd;
+  public $onEndUrl;
+  public $pathPrefix;
   // queue-runner id; used for persistence
-  var $qrid;
+  public $qrid;
 
   /**
    * @var array whether to display buttons, eg ('retry' => TRUE, 'skip' => FALSE)
    */
-  var $buttons;
+  public $buttons;
 
   /**
    * @var CRM_Queue_TaskContext
    */
-  var $taskCtx;
+  public $taskCtx;
 
   /**
-   * Locate a previously-created instance of the queue-runner
+   * Locate a previously-created instance of the queue-runner.
    *
-   * @param $qrid string, the queue-runner ID
+   * @param string $qrid
+   *   The queue-runner ID.
    *
-   * @return CRM_Queue_Runner or NULL
+   * @return CRM_Queue_Runner|NULL
    */
-  static function instance($qrid) {
+  public static function instance($qrid) {
     if (!empty($_SESSION['queueRunners'][$qrid])) {
       return unserialize($_SESSION['queueRunners'][$qrid]);
     }
@@ -92,22 +94,25 @@ class CRM_Queue_Runner {
    * FIXME: parameter validation
    * FIXME: document signature of onEnd callback
    *
-   * @param $runnerSpec array with keys:
+   * @param array $runnerSpec
+   *   Array with keys:
    *   - queue: CRM_Queue_Queue
-   *   - errorMode: int, ERROR_CONTINUE or ERROR_ABORT
-   *   - onEnd: mixed, a callback to update the UI after running; should be both callable and serializable
-   *   - onEndUrl: string, the URL to which one redirects
-   *   - pathPrefix: string, prepended to URLs for the web-runner; default: 'civicrm/queue'
+   *   - errorMode: int, ERROR_CONTINUE or ERROR_ABORT.
+   *   - onEnd: mixed, a callback to update the UI after running; should be
+   *     both callable and serializable.
+   *   - onEndUrl: string, the URL to which one redirects.
+   *   - pathPrefix: string, prepended to URLs for the web-runner;
+   *     default: 'civicrm/queue'.
    */
   public function __construct($runnerSpec) {
-    $this->title      = CRM_Utils_Array::value('title', $runnerSpec, ts('Queue Runner'));
-    $this->queue      = $runnerSpec['queue'];
-    $this->errorMode  = CRM_Utils_Array::value('errorMode', $runnerSpec, self::ERROR_ABORT);
-    $this->isMinimal  = CRM_Utils_Array::value('isMinimal', $runnerSpec, FALSE);
-    $this->onEnd      = CRM_Utils_Array::value('onEnd', $runnerSpec, NULL);
-    $this->onEndUrl   = CRM_Utils_Array::value('onEndUrl', $runnerSpec, NULL);
+    $this->title = CRM_Utils_Array::value('title', $runnerSpec, ts('Queue Runner'));
+    $this->queue = $runnerSpec['queue'];
+    $this->errorMode = CRM_Utils_Array::value('errorMode', $runnerSpec, self::ERROR_ABORT);
+    $this->isMinimal = CRM_Utils_Array::value('isMinimal', $runnerSpec, FALSE);
+    $this->onEnd = CRM_Utils_Array::value('onEnd', $runnerSpec, NULL);
+    $this->onEndUrl = CRM_Utils_Array::value('onEndUrl', $runnerSpec, NULL);
     $this->pathPrefix = CRM_Utils_Array::value('pathPrefix', $runnerSpec, 'civicrm/queue');
-    $this->buttons    = CRM_Utils_Array::value('buttons', $runnerSpec, array('retry' => TRUE,'skip' => TRUE));
+    $this->buttons = CRM_Utils_Array::value('buttons', $runnerSpec, array('retry' => TRUE, 'skip' => TRUE));
     // perhaps this value should be randomized?
     $this->qrid = $this->queue->getName();
   }
@@ -115,9 +120,19 @@ class CRM_Queue_Runner {
   /**
    * @return array
    */
-  function __sleep() {
+  public function __sleep() {
     // exclude taskCtx
-    return array('title', 'queue', 'errorMode', 'isMinimal', 'onEnd', 'onEndUrl', 'pathPrefix', 'qrid', 'buttons');
+    return array(
+      'title',
+      'queue',
+      'errorMode',
+      'isMinimal',
+      'onEnd',
+      'onEndUrl',
+      'pathPrefix',
+      'qrid',
+      'buttons',
+    );
   }
 
   /**
@@ -127,7 +142,7 @@ class CRM_Queue_Runner {
     $_SESSION['queueRunners'][$this->qrid] = serialize($this);
     $url = CRM_Utils_System::url($this->pathPrefix . '/runner', 'reset=1&qrid=' . urlencode($this->qrid));
     CRM_Utils_System::redirect($url);
-    // TODO: evaluate items incrementally via AJAX polling, cleanup session, call
+    // TODO: evaluate items incrementally via AJAX polling, cleanup session
   }
 
   /**
@@ -136,7 +151,9 @@ class CRM_Queue_Runner {
    *
    * If the runner has an onEndUrl, then this function will not return
    *
-   * @return mixed, TRUE if all tasks complete normally; otherwise, an array describing the failed task
+   * @return mixed
+   *   TRUE if all tasks complete normally; otherwise, an array describing the
+   *   failed task
    */
   public function runAll() {
     $taskResult = $this->formatTaskResult(TRUE);
@@ -167,11 +184,18 @@ class CRM_Queue_Runner {
   /**
    * Take the next item from the queue and attempt to run it.
    *
-   * Individual tasks may also throw exceptions -- caller should watch for exceptions
+   * Individual tasks may also throw exceptions -- caller should watch for
+   * exceptions.
    *
-   * @param $useSteal bool, whether to steal active locks
+   * @param bool $useSteal
+   *   Whether to steal active locks.
    *
-   * @return array(is_error => bool, is_continue => bool, numberOfItems => int, 'last_task_title' => $, 'exception' => $)
+   * @return array
+   *   - is_error => bool,
+   *   - is_continue => bool,
+   *   - numberOfItems => int,
+   *   - 'last_task_title' => $,
+   *   - 'exception' => $
    */
   public function runNext($useSteal = FALSE) {
     if ($useSteal) {
@@ -189,12 +213,11 @@ class CRM_Queue_Runner {
         $isOK = $item->data->run($this->getTaskContext());
         if (!$isOK) {
           $exception = new Exception('Task returned false');
-      }
-      }
-      catch(Exception$e) {
+        }
+      } catch (Exception$e) {
         $isOK = FALSE;
         $exception = $e;
-        }
+      }
 
       if ($isOK) {
         $this->queue->deleteItem($item);
@@ -213,11 +236,16 @@ class CRM_Queue_Runner {
   /**
    * Take the next item from the queue and attempt to run it.
    *
-   * Individual tasks may also throw exceptions -- caller should watch for exceptions
+   * Individual tasks may also throw exceptions -- caller should watch for
+   * exceptions.
    *
-   * @param $useSteal bool, whether to steal active locks
+   * @param bool $useSteal
+   *   Whether to steal active locks.
    *
-   * @return array(is_error => bool, is_continue => bool, numberOfItems => int)
+   * @return array
+   *   - is_error => bool,
+   *   - is_continue => bool,
+   *   - numberOfItems => int)
    */
   public function skipNext($useSteal = FALSE) {
     if ($useSteal) {
@@ -238,7 +266,10 @@ class CRM_Queue_Runner {
   }
 
   /**
-   * @param $item
+   * Release an item in keeping with the error mode.
+   *
+   * @param object $item
+   *   The item previously produced by Queue::claimItem.
    */
   protected function releaseErrorItem($item) {
     switch ($this->errorMode) {
@@ -251,7 +282,11 @@ class CRM_Queue_Runner {
   }
 
   /**
-   * @return array(is_error => bool, is_continue => bool, numberOfItems => int, redirect_url => string)
+   * @return array
+   *   - is_error => bool,
+   *   - is_continue => bool,
+   *   - numberOfItems => int,
+   *   - redirect_url => string
    */
   public function handleEnd() {
     if (is_callable($this->onEnd)) {
@@ -274,12 +309,17 @@ class CRM_Queue_Runner {
   }
 
   /**
-   * @param $isOK
-   * @param null $exception
+   * Format a result record which describes whether the task completed.
    *
-   * @return array(is_error => bool, is_continue => bool, numberOfItems => int)
+   * @param bool $isOK
+   *   TRUE if the task completed successfully.
+   * @param Exception|NULL $exception
+   *   If applicable, an unhandled exception that arose during execution.
+   *
+   * @return array
+   *   (is_error => bool, is_continue => bool, numberOfItems => int)
    */
-  function formatTaskResult($isOK, $exception = NULL) {
+  public function formatTaskResult($isOK, $exception = NULL) {
     $numberOfItems = $this->queue->numberOfItems();
 
     $result = array();
@@ -320,4 +360,3 @@ class CRM_Queue_Runner {
     return $this->taskCtx;
   }
 }
-
index c6e9c3b0c3285c0022b826f4bd48fede6adfff7a..f0c1ba29b6fe0787fa385035eeee04111bd72f82 100644 (file)
  */
 class CRM_Queue_Service {
 
-  static $_singleton;
+  protected static $_singleton;
 
   /**
    * FIXME: Singleton pattern should be removed when dependency-injection
    * becomes available.
    *
-   * @param $forceNew bool
+   * @param bool $forceNew
+   *   TRUE if a new instance must be created.
    *
    * @return \CRM_Queue_Service
    */
-  static function &singleton($forceNew = FALSE) {
+  public static function &singleton($forceNew = FALSE) {
     if ($forceNew || !self::$_singleton) {
       self::$_singleton = new CRM_Queue_Service();
     }
@@ -69,27 +70,32 @@ class CRM_Queue_Service {
   }
 
   /**
-   * @var array(queueName => CRM_Queue_Queue)
+   * @var array (string $queueName => CRM_Queue_Queue)
    */
-  var $queues;
+  public $queues;
 
   /**
    *
    */
-  function __construct() {
+  public function __construct() {
     $this->queues = array();
   }
 
   /**
-   * @param $queueSpec, array with keys:
-   *   - type: string, required, e.g. "interactive", "immediate", "stomp", "beanstalk"
+   * Create a queue. If one already exists, then it will be reused.
+   *
+   * @param array $queueSpec
+   *   Array with keys:
+   *   - type: string, required, e.g. "interactive", "immediate", "stomp",
+   *    "beanstalk"
    *   - name: string, required, e.g. "upgrade-tasks"
-   *   - reset: bool, optional; if a queue is found, then it should be flushed; default to TRUE
-   *   - (additional keys depending on the queue provider)
+   *   - reset: bool, optional; if a queue is found, then it should be
+   *     flushed; default to TRUE
+   *   - (additional keys depending on the queue provider).
    *
    * @return CRM_Queue_Queue
    */
-  function create($queueSpec) {
+  public function create($queueSpec) {
     if (@is_object($this->queues[$queueSpec['name']]) && empty($queueSpec['reset'])) {
       return $this->queues[$queueSpec['name']];
     }
@@ -111,14 +117,18 @@ class CRM_Queue_Service {
   }
 
   /**
-   * @param $queueSpec, array with keys:
-   *   - type: string, required, e.g. "interactive", "immediate", "stomp", "beanstalk"
+   * Look up an existing queue.
+   *
+   * @param array $queueSpec
+   *   Array with keys:
+   *   - type: string, required, e.g. "interactive", "immediate", "stomp",
+   *     "beanstalk"
    *   - name: string, required, e.g. "upgrade-tasks"
-   *   - (additional keys depending on the queue provider)
+   *   - (additional keys depending on the queue provider).
    *
    * @return CRM_Queue_Queue
    */
-  function load($queueSpec) {
+  public function load($queueSpec) {
     if (is_object($this->queues[$queueSpec['name']])) {
       return $this->queues[$queueSpec['name']];
     }
@@ -131,9 +141,11 @@ class CRM_Queue_Service {
   /**
    * Convert a queue "type" name to a class name
    *
-   * @param $type string, e.g. "interactive", "immediate", "stomp", "beanstalk"
+   * @param string $type
+   *   E.g. "interactive", "immediate", "stomp", "beanstalk".
    *
-   * @return string, class-name
+   * @return string
+   *   Class-name
    */
   protected function getQueueClass($type) {
     $type = preg_replace('/[^a-zA-Z0-9]/', '', $type);
@@ -147,7 +159,8 @@ class CRM_Queue_Service {
   }
 
   /**
-   * @param $queueSpec array, see create()
+   * @param array $queueSpec
+   *   See create().
    *
    * @return CRM_Queue_Queue
    */
@@ -157,4 +170,3 @@ class CRM_Queue_Service {
     return $class->newInstance($queueSpec);
   }
 }
-
index 25573bb0b45f5f0672c7ea625406053076010e51..682b192c350f15b430d6bf1ba41ee59db1c15aaf 100644 (file)
 class CRM_Queue_Task {
 
   /** Task was performed successfully */
-  CONST TASK_SUCCESS = 1;
+  const TASK_SUCCESS = 1;
 
   /** Task failed and should not be retried */
-  CONST TASK_FAIL = 2;
+  const TASK_FAIL = 2;
 
   /**
    * @var mixed, serializable
    */
-  var $callback;
+  public $callback;
 
   /**
    * @var array, serializable
    */
-  var $arguments;
+  public $arguments;
 
   /**
    * @var string, NULL-able
    */
-  var $title;
+  public $title;
 
   /**
-   * @param $callback mixed, serializable, a callable PHP item; must accept at least one argument (CRM_Queue_TaskContext)
-   * @param $arguments array, serializable, extra arguments to pass to the callback (in order)
-   * @param $title string, a printable string which describes this task
+   * @param mixed $callback
+   *   Serializable, a callable PHP item; must accept at least one argument
+   *   (CRM_Queue_TaskContext).
+   * @param array $arguments
+   *   Serializable, extra arguments to pass to the callback (in order).
+   * @param string $title
+   *   A printable string which describes this task.
    */
-  function __construct($callback, $arguments, $title = NULL) {
-    $this->callback  = $callback;
+  public function __construct($callback, $arguments, $title = NULL) {
+    $this->callback = $callback;
     $this->arguments = $arguments;
-    $this->title     = $title;
+    $this->title = $title;
   }
 
   /**
    * Perform the task
    *
-   * @param $taskCtx array with keys:
-   *  - log: object 'Log'
+   * @param array $taskCtx
+   *   Array with keys:
+   *   - log: object 'Log'
    *
    * @throws Exception
    * @return bool, TRUE if task completes successfully
    */
-  function run($taskCtx) {
+  public function run($taskCtx) {
     $args = $this->arguments;
     array_unshift($args, $taskCtx);
 
@@ -84,4 +89,3 @@ class CRM_Queue_Task {
     }
   }
 }
-
index c407fa8d38c0afc7492655bf01c254ea6832e0aa..cdbbb1137d4d21d253bd958ff6071c879cf82885 100644 (file)
@@ -33,11 +33,10 @@ class CRM_Queue_TaskContext {
   /**
    * @var CRM_Queue_Queue
    */
-  var $queue;
+  public $queue;
 
   /**
    * @var Log
    */
-  var $log;
+  public $log;
 }
-