summaryrefslogtreecommitdiff
path: root/modules/node/node.module
diff options
context:
space:
mode:
Diffstat (limited to 'modules/node/node.module')
-rw-r--r--modules/node/node.module16
1 files changed, 13 insertions, 3 deletions
diff --git a/modules/node/node.module b/modules/node/node.module
index 0fe992e98..468819e43 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -1062,7 +1062,11 @@ function node_submit($node) {
}
/**
- * Save a node object into the database.
+ * Save changes to a node or add a new node.
+ *
+ * @param $node
+ * The $node object to be saved. If $node->nid is
+ * omitted (or $node->is_new is TRUE), a new node will be added.
*/
function node_save(&$node) {
field_attach_presave('node', $node);
@@ -1070,10 +1074,12 @@ function node_save(&$node) {
node_invoke_node($node, 'presave');
global $user;
- $node->is_new = FALSE;
+ if (!isset($node->is_new)) {
+ $node->is_new = empty($node->nid);
+ }
// Apply filters to some default node fields:
- if (empty($node->nid)) {
+ if ($node->is_new) {
// Insert a new node.
$node->is_new = TRUE;
@@ -1098,6 +1104,7 @@ function node_save(&$node) {
}
elseif (!empty($node->revision)) {
$node->old_vid = $node->vid;
+ unset($node->vid);
}
else {
// When updating a node, avoid clobbering an existing log entry with an empty one.
@@ -1153,6 +1160,9 @@ function node_save(&$node) {
// Update the node access table for this node.
node_access_acquire_grants($node);
+
+ // Clear internal properties.
+ unset($node->is_new);
// Clear the page and block caches.
cache_clear_all();