Patched to Drupal 8.4.8 level. See https://www.drupal.org/sa-core-2018-004 and patch...
[yaffs-website] / web / core / lib / Drupal / Core / Queue / Batch.php
1 <?php
2
3 namespace Drupal\Core\Queue;
4
5 /**
6  * Defines a batch queue handler used by the Batch API.
7  *
8  * This implementation:
9  * - Ensures FIFO ordering.
10  * - Allows an item to be repeatedly claimed until it is actually deleted (no
11  *   notion of lease time or 'expire' date), to allow multipass operations.
12  *
13  * Stale items from failed batches are cleaned from the {queue} table on cron
14  * using the 'created' date.
15  *
16  * @ingroup queue
17  */
18 class Batch extends DatabaseQueue {
19
20   /**
21    * Overrides \Drupal\Core\Queue\DatabaseQueue::claimItem().
22    *
23    * Unlike \Drupal\Core\Queue\DatabaseQueue::claimItem(), this method provides
24    * a default lease time of 0 (no expiration) instead of 30. This allows the
25    * item to be claimed repeatedly until it is deleted.
26    */
27   public function claimItem($lease_time = 0) {
28     try {
29       $item = $this->connection->queryRange('SELECT data, item_id FROM {queue} q WHERE name = :name ORDER BY item_id ASC', 0, 1, [':name' => $this->name])->fetchObject();
30       if ($item) {
31         $item->data = unserialize($item->data);
32         return $item;
33       }
34     }
35     catch (\Exception $e) {
36       $this->catchException($e);
37     }
38     return FALSE;
39   }
40
41   /**
42    * Retrieves all remaining items in the queue.
43    *
44    * This is specific to Batch API and is not part of the
45    * \Drupal\Core\Queue\QueueInterface.
46    *
47    * @return array
48    *   An array of queue items.
49    */
50   public function getAllItems() {
51     $result = [];
52     try {
53       $items = $this->connection->query('SELECT data FROM {queue} q WHERE name = :name ORDER BY item_id ASC', [':name' => $this->name])->fetchAll();
54       foreach ($items as $item) {
55         $result[] = unserialize($item->data);
56       }
57     }
58     catch (\Exception $e) {
59       $this->catchException($e);
60     }
61     return $result;
62   }
63
64 }