CRM_Queue_Queue_SqlTrait - Insert using epoch format
authorTim Otten <totten@civicrm.org>
Tue, 17 Jan 2023 03:01:01 +0000 (19:01 -0800)
committerTim Otten <totten@civicrm.org>
Tue, 17 Jan 2023 04:13:00 +0000 (20:13 -0800)
CRM/Queue/Queue/SqlTrait.php

index 8fc9275e51a5e9dadc1c080169e1940344534475..6b315b83ee27e9669e07a3c67b603b43ccdabe6f 100644 (file)
@@ -88,15 +88,21 @@ trait CRM_Queue_Queue_SqlTrait {
    *   Ex: ['release_time' => strtotime('+3 hours')]
    */
   public function createItem($data, $options = []) {
-    $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);
-    if (isset($options['release_time'])) {
-      $dao->release_time = date('Y-m-d H:i:s', $options['release_time']);
+    if (!isset($options['release_time'])) {
+      $releaseTime = 'null';
     }
-    $dao->save();
+    elseif (is_numeric($options['release_time'])) {
+      $releaseTime = sprintf('FROM_UNIXTIME(%d)', $options['release_time']);
+    }
+    else {
+      throw new \CRM_Core_Exception("Cannot enqueue item. Malformed release_time.");
+    }
+
+    \CRM_Core_DAO::executeQuery("INSERT INTO civicrm_queue_item (queue_name, submit_time, data, weight, release_time) VALUES (%1, now(), %2, %3, {$releaseTime})", [
+      1 => [$this->getName(), 'String'],
+      2 => [serialize($data), 'String'],
+      3 => [CRM_Utils_Array::value('weight', $options, 0), 'Integer'],
+    ], TRUE, NULL, FALSE, FALSE);
   }
 
   /**