diff options
author | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-04-25 17:52:43 +0000 |
---|---|---|
committer | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-04-25 17:52:43 +0000 |
commit | fb5d44bc2c1c2d3ea79c4c9d19ea0d8c7d1f6950 (patch) | |
tree | 9d4c006c79db10896660c0cbf98ce43faee0f654 /modules/node/node.module | |
parent | 9a59cf76742669f4e7a26d1ef2737179db8cf7b5 (diff) | |
download | brdo-fb5d44bc2c1c2d3ea79c4c9d19ea0d8c7d1f6950.tar.gz brdo-fb5d44bc2c1c2d3ea79c4c9d19ea0d8c7d1f6950.tar.bz2 |
#303965 by moshe weitzman and snufkin: Allow data import scripts to set /->is_new programmatically.
Diffstat (limited to 'modules/node/node.module')
-rw-r--r-- | modules/node/node.module | 16 |
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(); |