How to build a node in Drupal programmatically

Sometimes you want to create a page or a story, or any other node-based piece of content (but not content-type) programmatically. I've searched for explanation, and once again, when I can't find something fast, I share it here. In this case I had to have some conversations.

It's quite simple. Turns out Drupal uses php standard class as the base for its nodes.

Here's how you build a node type page.

<?php
$newnode
= new stdClass();
$newnode->title = 'Welcome';
$newnode->body = 'This is the welcome page for your site.  Replace this text with whichever content you\'d like to use for your welcome page.';

global $user;

$newnode->uid = $user->uid;
$newnode->type = 'page';
$newnode->status = 1;
$newnode->promote = 0;
node_save($newnode);
?>

Everything else is done just like that.

Where does this code go?

Could you clarify where does this code go? in a file by itself? how does it communicate with Drupal?

Theoretically, you could put

Theoretically, you could put it anywhere where drupal runs php (even evaluated blocks with php code), but ideally, you should put this code into your module. When you start a new drupal website, you should always start at least one module to put all your custom functionality into it. For example, you might need this to run on hook_nodeapi (to respond to some drupal's event), or on hook_menu callback, or whatever you please.

fifth line requires

fifth line requires semi-colon ';'

it's supposed to be: global

it's supposed to be:
global $user;

(although php wouldn't care about spaces)