function action_nodequeue_add in Nodequeue 7.3
Same name and namespace in other branches
- 5.2 nodequeue.actions.inc \action_nodequeue_add()
- 5 nodequeue.module \action_nodequeue_add()
- 7.2 includes/nodequeue.actions.inc \action_nodequeue_add()
Old-style action to add a node to a queue.
File
- includes/
nodequeue.actions.inc, line 107 - nodequeue.actions.inc Provides actions integration for nodequeues.
Code
function action_nodequeue_add($op, $edit = array(), $node) {
switch ($op) {
case 'metadata':
return array(
'description' => t('Add to Nodequeues'),
'type' => t('node'),
'batchable' => TRUE,
'configurable' => TRUE,
);
break;
case 'do':
$queues = nodequeue_load_queues($edit['queues'], TRUE);
// Filter out queues by node type. We choose not to use
// nodequeue_get_queues() 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->name] = $queue;
}
}
if (!empty($eligible_queues)) {
// Remove the node from the eligible queues (if needed).
action_nodequeue_remove('do', array(
'queues' => 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->name], $subqueue, $node->nid);
}
}
break;
// return an HTML config form for the action
case 'form':
// default values for form
if (!isset($edit['queues'])) {
$edit['queues'] = '';
}
$queues = nodequeue_load_queues(nodequeue_get_all_queues(0, 0, TRUE), TRUE);
foreach ($queues as $name => $queue) {
$options[$name] = $queue->title;
}
$form = array();
if (count($options)) {
// add form components
$form['queues'] = array(
'#type' => 'select',
'#title' => t("Queue"),
'#default_value' => $edit['queues'],
'#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/structure/nodequeue'),
)));
}
return $form;
// validate the HTML form
// process the HTML form to store configuration
case 'submit':
$params = array(
'queues' => $edit['queues'],
);
return $params;
break;
}
}