You are here

function nodequeue_service_save_subqueue in Nodequeue 6.2

1 string reference to 'nodequeue_service_save_subqueue'
nodequeue_service_service in addons/nodequeue_service/nodequeue_service.module
Implementation of hook_service().

File

addons/nodequeue_service/nodequeue_service.inc, line 82
Miscellaneous functions for Nodequeue Service.

Code

function nodequeue_service_save_subqueue($subqueue) {
  $subqueue = (object) $subqueue;
  $is_basic = FALSE;

  // Whether the node queue is just a standard queue with a single subqueue
  if (isset($subqueue->queue_name)) {

    // We must get the qid by the machine name of the queue
    // We also need to know the owner of the queue to determine what the refernce value will refer to.
    $result = db_query("SELECT qid, owner FROM {nodequeue_queue} WHERE name = '%s'", $subqueue->queue_name);
    if ($row = db_fetch_array($result)) {
      $qid = $row['qid'];
      $is_basic = $row['owner'] == 'nodequeue';
    }
    else {
      return services_error(t('Specified node queue does not exist.'));
    }
  }
  elseif (isset($subqueue->qid)) {
    $qid = $subqueue->qid;
    $owner = db_result(db_query("SELECT owner from {nodequeue_queue} WHERE qid = %d", $qid));
    if (!$owner) {
      return services_error(t('Specified node queue does not exist.'));
    }
    $is_basic = $owner == 'nodequeue';
  }
  else {
    return services_error(t('No queue was specified.'));
  }

  // If this is a basic nodequeue, then we should use the local qid
  // as our reference when looking for the sqid.
  $ref = $is_basic ? $qid : $subqueue->reference;

  // Get the local sqid for this subqueue.
  $sqid = db_result(db_query_range("SELECT sqid FROM {nodequeue_subqueue} WHERE qid = %d AND reference = '%s'", $qid, $ref, 0, 1));
  if (!$sqid) {
    return services_error(t('Specified subqueue does not exist.'));
  }
  $saved = nodequeue_save_subqueue_order($subqueue->nodes, $qid, $sqid);
  if ($saved[0] != NODEQUEUE_OK) {
    return services_error(t('Invalid subqueue order, could not be saved.'));
  }
  return $sqid;
}