function nodequeue_generate_form_submit in Nodequeue 6.2
Same name and namespace in other branches
- 5.2 nodequeue_generate.module \nodequeue_generate_form_submit()
- 7.3 nodequeue_generate.module \nodequeue_generate_form_submit()
- 7.2 nodequeue_generate.module \nodequeue_generate_form_submit()
File
- ./
nodequeue_generate.module, line 104
Code
function nodequeue_generate_form_submit($form, &$form_state) {
$qids = array_keys(array_filter($form_state['values']['rows']['cb']));
// Empty the queue
$placeholders = implode(', ', array_fill(0, count($qids), '%d'));
db_query("DELETE FROM {nodequeue_nodes} WHERE qid IN ({$placeholders})", $qids);
$queues = nodequeue_load_queues($qids);
$subqueues = nodequeue_load_subqueues_by_queue($qids);
// TODO: handle non smart_taxonomy subqueues.
foreach ($subqueues as $subqueue) {
// dpr($queues[$subqueue->qid]);
// we don't know what kind of nodes to out in, so skip. is this a good idea?
if (empty($queues[$subqueue->qid]->types)) {
next;
}
$placeholders = implode(', ', array_fill(0, count($queues[$subqueue->qid]->types), '\'%s\''));
$args = $queues[$subqueue->qid]->types;
// smartqueue_taxonomy pulls nodes from the proper terms. nodequeue type queues don't care about taxo.
if ($queues[$subqueue->qid]->owner == 'nodequeue') {
$sql = "SELECT n.nid FROM {node} n WHERE n.status = 1 AND n.type IN ({$placeholders}) ORDER BY RAND()";
$result = db_query_range($sql, $args, 0, $form_state['values']['rows'][$subqueue->qid]['limit']);
while ($row = db_fetch_object($result)) {
nodequeue_subqueue_add($subqueue, $subqueue, $row->nid);
}
}
elseif ($queues[$subqueue->qid]->owner == 'smartqueue_taxonomy') {
$args[] = $subqueue->reference;
$sql = "SELECT tn.nid FROM {term_node} tn INNER JOIN {node} n ON tn.nid=n.nid WHERE n.status = 1 AND n.type IN ({$placeholders}) AND tn.tid = %d ORDER BY RAND()";
$result = db_query_range($sql, $args, 0, $form_state['values']['rows'][$subqueue->qid]['limit']);
while ($row = db_fetch_object($result)) {
nodequeue_subqueue_add($subqueue, $subqueue, $row->nid);
}
}
}
drupal_set_message(format_plural(count($qids), '1 queue populated', '@count queues populated.'));
}