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);
}
}
}
}