123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- <?php
- class QueueUISystemQueue implements QueueUIInterface {
- public $inspect;
- public function __construct() {
- $this->inspect = TRUE;
- }
- /**
- * SystemQueue implements all default QueueUI methods.
- *
- * @return array
- * An array of available QueueUI methods. Array key is system name of the
- * operation, array key value is the display name.
- */
- public function getOperations() {
- return array(
- 'view' => t('View'),
- 'release' => t('Release'),
- 'delete' => t('Delete'),
- );
- }
- /**
- * View the queue items in a queue and expose additional methods for inspection.
- *
- * @param string $queue_name
- * @return string
- */
- public function inspect($queue_name) {
- $query = db_select('queue', 'q')
- ->fields('q', array('item_id', 'expire', 'created'))
- ->condition('q.name', $queue_name)
- ->extend('PagerDefault')
- ->limit(25)
- ->execute();
- foreach ($query as $record) {
- $result[] = $record;
- }
- $header = array(
- t('Item ID'),
- t('Expires'),
- t('Created'),
- array('data' => t('Operations'), 'colspan' => '3'),
- );
- $rows = array();
- foreach ($result as $item) {
- $row = array();
- $row[] = $item->item_id;
- $row[] = ($item->expire ? date(DATE_RSS, $item->expire) : $item->expire);
- $row[] = date(DATE_RSS, $item->created);
- foreach ($this->getOperations() as $op => $title) {
- $row[] = l($title, QUEUE_UI_BASE . "/$queue_name/$op/$item->item_id");
- }
- $rows[] = array('data' => $row);
- }
- $content = theme('table', array('header' => $header, 'rows' => $rows));
- $content .= theme('pager');
- return $content;
- }
- /**
- * View the item data for a specified queue item.
- *
- * @param int $item_id
- * @return string
- */
- public function view($item_id) {
- $queue_item = $this->loadItem($item_id);
- $rows[] = array(
- 'data' => array(
- 'header' => t('Item ID'),
- 'data' => $queue_item->item_id,
- ),
- );
- $rows[] = array(
- 'data' => array(
- 'header' => t('Queue name'),
- 'data' => $queue_item->name,
- ),
- );
- $rows[] = array(
- 'data' => array(
- 'header' => t('Expire'),
- 'data' => ($queue_item->expire ? date(DATE_RSS, $queue_item->expire) : $queue_item->expire),
- ),
- );
- $rows[] = array(
- 'data' => array(
- 'header' => t('Created'),
- 'data' => date(DATE_RSS, $queue_item->created),
- ),
- );
- $rows[] = array(
- 'data' => array(
- 'header' => array('data' => t('Data'), 'style' => 'vertical-align:top'),
- 'data' => '<pre>' . print_r(unserialize($queue_item->data), TRUE) . '</pre>',
- // @TODO - should probably do something nicer than print_r here...
- ),
- );
- return theme('table', array('rows' => $rows));
- }
- public function delete($item_id) {
- // @TODO - try... catch...
- drupal_set_message("Deleted queue item " . $item_id);
- db_delete('queue')
- ->condition('item_id', $item_id)
- ->execute();
- return TRUE;
- }
- public function release($item_id) {
- // @TODO - try... catch...
- drupal_set_message("Released queue item " . $item_id);
- db_update('queue')
- ->condition('item_id', $item_id)
- ->fields(array('expire' => 0))
- ->execute();
- return TRUE;
- }
- /**
- * Load a specified SystemQueue queue item from the database.
- *
- * @param $item_id
- * The item id to load
- * @return
- * Result of the database query loading the queue item.
- */
- private function loadItem($item_id) {
- // Load the specified queue item from the queue table.
- $query = db_select('queue', 'q')
- ->fields('q', array('item_id', 'name', 'data', 'expire', 'created'))
- ->condition('q.item_id', $item_id)
- ->range(0, 1) // item id should be unique
- ->execute();
- foreach ($query as $record) {
- $result[] = $record;
- }
- return $result[0];
- }
- }
|