function node_save in Drupal 6
Same name and namespace in other branches
- 4 modules/node.module \node_save()
- 5 modules/node/node.module \node_save()
- 7 modules/node/node.module \node_save()
Save a node object into the database.
9 calls to node_save()
- blogapi_blogger_edit_post in modules/
blogapi/ blogapi.module - Blogging API callback. Modifies the specified blog node.
- blogapi_blogger_new_post in modules/
blogapi/ blogapi.module - Blogging API callback. Inserts a new blog post as a node.
- blogapi_mt_publish_post in modules/
blogapi/ blogapi.module - Blogging API callback. Publishes the given node
- blogapi_mt_set_post_categories in modules/
blogapi/ blogapi.module - Blogging API callback. Assigns taxonomy terms to a particular node.
- book_admin_edit_submit in modules/
book/ book.admin.inc - Handle submission of the book administrative page form.
File
- modules/
node/ node.module, line 875 - The core that allows content to be submitted to the site. Modules and scripts may programmatically submit nodes using the usual form API pattern.
Code
function node_save(&$node) {
// Let modules modify the node before it is saved to the database.
node_invoke_nodeapi($node, 'presave');
global $user;
// Insert a new node.
$node->is_new = empty($node->nid);
if ($node->is_new || !empty($node->revision)) {
// When inserting a node, $node->log must be set because
// {node_revisions}.log does not (and cannot) have a default
// value. If the user does not have permission to create
// revisions, however, the form will not contain an element for
// log so $node->log will be unset at this point.
if (!isset($node->log)) {
$node->log = '';
}
}
elseif (empty($node->log)) {
// When updating a node, however, avoid clobbering an existing
// log entry with an empty one.
unset($node->log);
}
// For the same reasons, make sure we have $node->teaser and
// $node->body set.
if (!isset($node->teaser)) {
$node->teaser = '';
}
if (!isset($node->body)) {
$node->body = '';
}
// Save the old revision if needed.
if (!$node->is_new && !empty($node->revision) && $node->vid) {
$node->old_vid = $node->vid;
}
$time = time();
if (empty($node->created)) {
$node->created = $time;
}
// The changed timestamp is always updated for bookkeeping purposes (revisions, searching, ...)
$node->changed = $time;
$node->timestamp = $time;
$node->format = isset($node->format) ? $node->format : FILTER_FORMAT_DEFAULT;
// Generate the node table query and the node_revisions table query.
if ($node->is_new) {
_node_save_revision($node, $user->uid);
drupal_write_record('node', $node);
db_query('UPDATE {node_revisions} SET nid = %d WHERE vid = %d', $node->nid, $node->vid);
$op = 'insert';
}
else {
drupal_write_record('node', $node, 'nid');
if (!empty($node->revision)) {
_node_save_revision($node, $user->uid);
db_query('UPDATE {node} SET vid = %d WHERE nid = %d', $node->vid, $node->nid);
}
else {
_node_save_revision($node, $user->uid, 'vid');
}
$op = 'update';
}
// Call the node specific callback (if any).
node_invoke($node, $op);
node_invoke_nodeapi($node, $op);
// Update the node access table for this node.
node_access_acquire_grants($node);
// Clear the page and block caches.
cache_clear_all();
}