Same name and namespace in other branches
  1. 4.7.x modules/node.module \node_object_prepare()
  2. 5.x modules/node/node.module \node_object_prepare()
  3. 6.x modules/node/node.pages.inc \node_object_prepare()

Prepares a node object for editing.

Fills in a few default values, and then invokes hook_prepare() on the node type module, and hook_node_prepare() on all modules.

Parameters

$node: A node object.

1 call to node_object_prepare()
node_form in modules/node/node.pages.inc
Form constructor for the node add/edit form.

File

modules/node/node.module, line 979
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_object_prepare($node) {

  // Set up default values, if required.
  $node_options = variable_get('node_options_' . $node->type, array(
    'status',
    'promote',
  ));

  // If this is a new node, fill in the default values.
  if (!isset($node->nid) || isset($node->is_new)) {
    foreach (array(
      'status',
      'promote',
      'sticky',
    ) as $key) {

      // Multistep node forms might have filled in something already.
      if (!isset($node->{$key})) {
        $node->{$key} = (int) in_array($key, $node_options);
      }
    }
    global $user;
    $node->uid = $user->uid;
    $node->created = REQUEST_TIME;
  }
  else {
    $node->date = format_date($node->created, 'custom', 'Y-m-d H:i:s O');

    // Remove the log message from the original node object.
    $node->log = NULL;
  }

  // Always use the default revision setting.
  $node->revision = in_array('revision', $node_options);
  node_invoke($node, 'prepare');
  module_invoke_all('node_prepare', $node);
}