You are here

function nodequeue_action_add_node in Nodequeue 7.2

Action: Add the given node to the given nodequeue.

File

./nodequeue.rules.inc, line 288
Provides nodequeue (subqueue) rules integration.

Code

function nodequeue_action_add_node($node, $queue_name, $unique) {
  $queue = nodequeue_load_queue_by_name($queue_name);
  $smartqueue_enabled = function_exists('smartqueue_taxonomy_nodequeue_subqueues') ? TRUE : FALSE;
  if ($smartqueue_enabled) {
    $references = smartqueue_taxonomy_nodequeue_subqueues($queue, $node);
  }
  $smartqueue_domain_enabled = function_exists('smartqueue_domain_nodequeue_subqueues') ? TRUE : FALSE;
  if ($smartqueue_domain_enabled) {
    $subqueue_domain = smartqueue_domain_nodequeue_subqueues($queue, $node);
    $node_domains = nodequeue_get_node_domains($node);
  }
  $subqueues = nodequeue_load_subqueues_by_queue($queue->qid);
  foreach ($subqueues as $subqueue) {
    $add = TRUE;

    // unique means we don't add it if it's in the queue already
    if ($unique) {
      $add = nodequeue_subqueue_position($subqueue->sqid, $node->nid) === FALSE;
    }
    if ($add) {
      if ($smartqueue_domain_enabled) {

        // Do not allow nodes to be added to queues on domains they are not publishted to.
        // The domain id is the last part of the queue reference string.
        // All smartqueue_domain subqueue references also contain ":domain:".
        if (!empty($subqueue->reference) && !empty($node_domains)) {
          $reference_array = explode(':', $subqueue->reference);
          $queue_domain_id = end($reference_array);
          if (strpos($subqueue->reference, ':domain:') && in_array($queue_domain_id, $node_domains)) {
            nodequeue_subqueue_add($queue, $subqueue, $node->nid);
          }
        }
      }
      if ($smartqueue_enabled) {
        if (in_array($subqueue->reference, $references)) {
          nodequeue_subqueue_add($queue, $subqueue, $node->nid);
        }
      }
      if (!$smartqueue_enabled && !$smartqueue_domain_enabled) {
        nodequeue_subqueue_add($queue, $subqueue, $node->nid);
      }
    }
  }
}