You are here

function action_nodequeue_add in Nodequeue 5.2

Same name and namespace in other branches
  1. 5 nodequeue.module \action_nodequeue_add()
  2. 7.3 includes/nodequeue.actions.inc \action_nodequeue_add()
  3. 7.2 includes/nodequeue.actions.inc \action_nodequeue_add()

Old-style action to add a node to a queue.

File

./nodequeue.actions.inc, line 103
nodequeue.actions.inc Provides actions integration for node queues.

Code

function action_nodequeue_add($op, $edit = array(), $node) {
  switch ($op) {
    case 'metadata':
      return array(
        'description' => t('Add to Node Queues'),
        'type' => t('node'),
        'batchable' => true,
        'configurable' => true,
      );
      break;
    case 'do':
      $queues = nodequeue_load_queues($edit['qids'], TRUE);

      // Filter out queues by node type. We choose not to use nodequeue_get_qids() because it checks for access control which only matters if we administering a queue.
      $eligible_queues = array();
      foreach ($queues as $queue) {
        if (in_array($node->type, $queue->types)) {
          $eligible_queues[$queue->qid] = $queue;
        }
      }
      if (!empty($eligible_queues)) {

        // Remove the node from the eligible queues (if needed).
        action_nodequeue_remove('do', array(
          'qids' => array_keys($eligible_queues),
        ), $node);

        // Use API to get the eligible subqueues
        $eligible_subqueues = nodequeue_get_subqueues_by_node($eligible_queues, $node);

        // Add node to each subqueue.
        foreach ($eligible_subqueues as $subqueue) {
          nodequeue_subqueue_add($queues[$subqueue->qid], $subqueue, $node->nid);
        }
      }
      break;

    // return an HTML config form for the action
    case 'form':

      // default values for form
      if (!isset($edit['qids'])) {
        $edit['qids'] = '';
      }
      $queues = nodequeue_load_queues(nodequeue_get_all_qids(500, TRUE), TRUE);
      foreach ($queues as $qid => $queue) {
        $options[$qid] = $queue->title;
      }
      $form = array();
      if (count($options)) {

        // add form components
        $form['qids'] = array(
          '#type' => 'select',
          '#title' => t("Queue"),
          '#default_value' => $edit['qids'],
          '#multiple' => TRUE,
          '#options' => $options,
          '#required' => TRUE,
          '#description' => t('Specify the queues into which the node should be submitted. If the queue is a smartqueue, the node shall be placed into every subqueue for which it is eligible.'),
        );
      }
      else {
        drupal_set_message(t('Please <a href="!url">create</a> a nodequeue first.', array(
          '!url' => url('admin/content/nodequeue'),
        )));
      }
      return $form;

    // validate the HTML form
    // process the HTML form to store configuration
    case 'submit':
      $params = array(
        'qids' => $edit['qids'],
      );
      return $params;
      break;
  }
}