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