You are here

function nodequeue_arrange_subqueue_form_submit in Nodequeue 5.2

Same name and namespace in other branches
  1. 6.2 includes/nodequeue.admin.inc \nodequeue_arrange_subqueue_form_submit()
  2. 7.3 includes/nodequeue.admin.inc \nodequeue_arrange_subqueue_form_submit()
  3. 7.2 includes/nodequeue.admin.inc \nodequeue_arrange_subqueue_form_submit()

Submit function for nodequeue_arrange_subqueue_form

File

./nodequeue.module, line 1079

Code

function nodequeue_arrange_subqueue_form_submit($form_id, $form_values) {

  // Add a node to the queue if that's the intention.
  if ($form_values['op'] == t('Clear')) {
    return 'admin/content/nodequeue/' . $form_values['qid'] . '/clear/' . $form_values['sqid'];
  }
  $queue = nodequeue_load($form_values['qid']);
  $subqueue = nodequeue_load_subqueue($form_values['sqid']);
  if ($form_values['op'] == t('Add')) {
    nodequeue_subqueue_add($queue, $subqueue, $form_values['nid']);
    return;
  }
  db_query("DELETE FROM {nodequeue_nodes} WHERE sqid = %d", $form_values['sqid']);
  if ($form_values['order']) {
    $now = time();
    $sql = '';
    $args = array();
    $nids = $form_values['nids'];
    $subqueue->count = 0;
    $order = explode(',', $form_values['order']);
    if ($queue->reverse xor $form_values['op'] == t('Reverse')) {
      $order = array_reverse($order);
    }
    foreach ($order as $new_pos => $old_pos) {
      if ($sql) {
        $sql .= ', ';
      }
      $sql .= ' (%d, %d, %d, %d, %d)';
      $args[] = $form_values['sqid'];
      $args[] = $form_values['qid'];
      $args[] = $nids[$old_pos];

      // $new_pos starts from 0 but we start from 1.
      $args[] = $new_pos + 1;
      $args[] = $now;
      $subqueue->count++;
    }
    $sql = "INSERT INTO {nodequeue_nodes} (sqid, qid, nid, position, timestamp) VALUES {$sql}";
    db_query($sql, $args);
    if ($queue->size) {

      // 0 means infinity so never do this if false
      nodequeue_check_subqueue_size($queue, $subqueue);
    }
    if ($form_values['op'] == t('Shuffle')) {
      nodequeue_subqueue_shuffle($subqueue);
    }
  }
  drupal_set_message(t('The queue has been updated'));
}