function node_service_save in Services 6
Same name and namespace in other branches
- 5 services/node_service/node_service.module \node_service_save()
- 6.2 services/node_service/node_service.inc \node_service_save()
- 7 services/node_service/node_service.inc \node_service_save()
Save a node. It creates a new one, in case the 'nid' field is missing.
Parameters
$edit: Array. The node fields' values, just like created on node edit form.
Return value
Number. The node ID.
1 string reference to 'node_service_save'
- node_service_service in services/
node_service/ node_service.module - Implementation of hook_service().
File
- services/
node_service/ node_service.inc, line 54 - @author Services Dev Team
Code
function node_service_save($edit) {
// Load the required includes for drupal_execute
module_load_include('inc', 'node', 'node.pages');
$nid = NULL;
if ($edit['nid']) {
$node = node_load($edit['nid']);
if ($node->nid) {
// Setup form_state.
$form_state = array();
$form_state['values'] = (array) $edit;
$form_state['values']['op'] = t('Save');
// Later on in the chain node_form seems to expect a copy of
// the old node object.
$form_state['node'] = (array) $node;
$ret = drupal_execute($node->type . '_node_form', $form_state, (object) $node);
// If the node is immediately reloaded after update, it will
// load the OLD cached version.
node_load(0, NULL, TRUE);
// Set $nid, so it can be returned
$nid = $node->nid;
}
else {
return services_error(t('Node not found'));
}
}
else {
// Setup form_state
$form_state = array();
$form_state['values'] = (array) $edit;
$form_state['values']['op'] = t('Save');
$ret = drupal_execute($edit['type'] . '_node_form', $form_state, (object) $edit);
// Fetch $nid out of $form_state
$nid = $form_state['nid'];
}
if ($errors = form_get_errors()) {
return services_error(implode("\n", $errors));
}
watchdog('content', '@type: updated %title.', array(
'@type' => t($node->type),
'%title' => $node->title,
), WATCHDOG_NOTICE, l(t('view'), 'node/' . $node->nid));
return $nid;
}