diff options
author | Nathaniel <catch@35733.no-reply.drupal.org> | 2011-11-01 12:25:12 +0900 |
---|---|---|
committer | Nathaniel <catch@35733.no-reply.drupal.org> | 2011-11-01 12:25:12 +0900 |
commit | f0a16bf2a4d1524aa33b656533e37d977cca4802 (patch) | |
tree | 26bd67dad05b2c304c5650d9ac6b31a611102f6b /core/includes/batch.queue.inc | |
parent | 3629b1fd8bd14cae233ac89b6349d251fe4fb27e (diff) | |
download | drupal-f0a16bf2a4d1524aa33b656533e37d977cca4802.tar.gz drupal-f0a16bf2a4d1524aa33b656533e37d977cca4802.zip |
Issue #22336 by quicksketch, rfay, scor, Rob Loach, boombatower, tstoeckler, kbahey: Move all core Drupal files under a /core folder to improve usability and upgrades.
Diffstat (limited to 'core/includes/batch.queue.inc')
-rw-r--r-- | core/includes/batch.queue.inc | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/core/includes/batch.queue.inc b/core/includes/batch.queue.inc new file mode 100644 index 000000000000..8464836987b7 --- /dev/null +++ b/core/includes/batch.queue.inc @@ -0,0 +1,71 @@ +<?php + + +/** + * @file + * Queue handlers used by the Batch API. + * + * Those implementations: + * - ensure FIFO ordering, + * - let an item be repeatedly claimed until it is actually deleted (no notion + * of lease time or 'expire' date), to allow multipass operations. + */ + +/** + * Batch queue implementation. + * + * Stale items from failed batches are cleaned from the {queue} table on cron + * using the 'created' date. + */ +class BatchQueue extends SystemQueue { + + public function claimItem($lease_time = 0) { + $item = db_query_range('SELECT data, item_id FROM {queue} q WHERE name = :name ORDER BY item_id ASC', 0, 1, array(':name' => $this->name))->fetchObject(); + if ($item) { + $item->data = unserialize($item->data); + return $item; + } + return FALSE; + } + + /** + * Retrieve all remaining items in the queue. + * + * This is specific to Batch API and is not part of the DrupalQueueInterface, + */ + public function getAllItems() { + $result = array(); + $items = db_query('SELECT data FROM {queue} q WHERE name = :name ORDER BY item_id ASC', array(':name' => $this->name))->fetchAll(); + foreach ($items as $item) { + $result[] = unserialize($item->data); + } + return $result; + } +} + +/** + * Batch queue implementation used for non-progressive batches. + */ +class BatchMemoryQueue extends MemoryQueue { + + public function claimItem($lease_time = 0) { + if (!empty($this->queue)) { + reset($this->queue); + return current($this->queue); + } + return FALSE; + } + + /** + * Retrieve all remaining items in the queue. + * + * This is specific to Batch API and is not part of the DrupalQueueInterface, + */ + public function getAllItems() { + $result = array(); + foreach ($this->queue as $item) { + $result[] = $item->data; + } + return $result; + } +} |