| 1 |
<?php |
<?php |
| 2 |
// $Id: wsservice_dcore.node.inc,v 1.4 2008/09/09 20:25:24 brmassa Exp $ |
// $Id: wsservice_dcore.node.inc,v 1.1 2008/09/11 00:11:04 brmassa Exp $ |
| 3 |
/** |
/** |
| 4 |
* @author Web Services Dev Team |
* @author Web Services Dev Team |
| 5 |
* @file |
* @file |
| 73 |
* Save a node. It creates a new one, in case the 'nid' field |
* Save a node. It creates a new one, in case the 'nid' field |
| 74 |
* is missing. |
* is missing. |
| 75 |
* |
* |
| 76 |
* @param $edit |
* @param $node |
| 77 |
* Array. The node fields' values, just like created on |
* Array. The node fields' values, just like created on |
| 78 |
* node edit form. |
* node edit form. |
| 79 |
* @return |
* @return |
| 80 |
* Number. The node ID. |
* Number. The node ID. |
| 81 |
*/ |
*/ |
| 82 |
function _wsservice_dcore_node_save($edit) { |
function _wsservice_dcore_node_save($node) { |
| 83 |
// Load the required includes for drupal_execute |
// Load the required includes for drupal_execute |
| 84 |
module_load_include('inc', 'node', 'node.pages'); |
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); |
|
| 85 |
|
|
| 86 |
// Set $nid, so it can be returned |
// Check if its updating an existing node |
| 87 |
$nid = $node->nid; |
if ($node['nid'] and !$node_existing = node_load($node['nid'])) { |
| 88 |
} |
return webservices_error(t('Node not found')); |
|
else { |
|
|
return webservices_error(t('Node not found')); |
|
|
} |
|
| 89 |
} |
} |
|
else { |
|
|
// Setup form_state |
|
|
$form_state = array(); |
|
|
$form_state['values'] = (array) $edit; |
|
|
$form_state['values']['op'] = t('Save'); |
|
| 90 |
|
|
| 91 |
$ret = drupal_execute($edit['type'] .'_node_form', $form_state, (object)$edit); |
// Setup form_state |
| 92 |
|
$form_state = array(); |
| 93 |
|
$form_state['values'] = (array) $node; |
| 94 |
|
$form_state['values']['op'] = t('Save'); |
| 95 |
|
|
| 96 |
|
drupal_execute($node['type'] .'_node_form', $form_state, (object)$node); |
| 97 |
|
|
|
// Fetch $nid out of $form_state |
|
|
$nid = $form_state['nid']; |
|
|
} |
|
| 98 |
if ($errors = form_get_errors()) { |
if ($errors = form_get_errors()) { |
| 99 |
return webservices_error(implode("\n", $errors)); |
return webservices_error(implode("\n", $errors)); |
| 100 |
} |
} |
| 101 |
|
|
| 102 |
watchdog('content', '@type: updated %title.', |
watchdog('content', '@type: updated %title.', |
| 103 |
array('@type' => t($node->type), '%title' => $node->title), |
array('@type' => t($form_state['node']['type']), '%title' => $node['node']['title']), |
| 104 |
WATCHDOG_NOTICE, l(t('view'), 'node/'. $node->nid)); |
WATCHDOG_NOTICE, l(t('view'), 'node/'. $form_state['nid'])); |
| 105 |
return $nid; |
return $form_state['nid']; |
| 106 |
} |
} |
| 107 |
|
|
| 108 |
/** |
/** |