node.module 16.6 KB
Newer Older
Dries's avatar
 
Dries committed
1
<?php
2
// $Id$
Dries's avatar
 
Dries committed
3

Dries's avatar
 
Dries committed
4 5 6 7 8 9
function node_help() {
  global $mod;

  if ($mod == "node") {
    foreach (module_list() as $name) {
      if (module_hook($name, "status") && $name != "node") {
Dries's avatar
 
Dries committed
10
        print "<h3>". ucfirst($name) ." type</h3>";
Dries's avatar
 
Dries committed
11 12 13 14 15 16
        print module_invoke($name, "help");
      }
    }
  }
}

Dries's avatar
 
Dries committed
17
function node_perm() {
Dries's avatar
 
Dries committed
18
  return array("administer nodes", "access content", "post content");
Dries's avatar
 
Dries committed
19 20
}

Dries's avatar
 
Dries committed
21 22 23 24 25 26 27 28 29 30 31
function node_search($keys) {
  global $user;

  $result = db_query("SELECT n.nid, n.title, n.created, u.uid, u.name FROM node n LEFT JOIN users u ON n.uid = u.uid WHERE n.status = 1 AND (n.title LIKE '%$keys%' OR n.teaser LIKE '%$keys%' OR n.body LIKE '%$keys%') ORDER BY n.created DESC LIMIT 20");
  while ($node = db_fetch_object($result)) {
    $find[$i++] = array("title" => check_output($node->title), "link" => (user_access("administer nodes") ? "admin.php?mod=node&type=node&op=edit&id=$node->nid" : "node.php?id=$node->nid"), "user" => $node->name, "date" => $node->created);
  }

  return $find;
}

Dries's avatar
 
Dries committed
32
function node_conf_options() {
Dries's avatar
 
Dries committed
33
  $output .= form_select("Default number of nodes to display", "default_nodes_main", variable_get("default_nodes_main", 10), array(1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 =>  5, 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 10, 15 => 15, 20 => 20, 25 => 25, 30 => 30), "The default maximum number of nodes to display on the main page.");
Dries's avatar
 
Dries committed
34

Dries's avatar
 
Dries committed
35 36 37
  return $output;
}

Dries's avatar
CHANGES  
Dries committed
38
function node_conf_filters() {
Dries's avatar
 
Dries committed
39 40
  $output .= form_select(t("Enable HTML tags"), "filter_html", variable_get("filter_html", 0), array("Disabled", "Enabled"), t("Allow HTML and PHP tags in user-contributed content."));
  $output .= form_textfield(t("Allowed HTML tags"), "allowed_html", variable_get("allowed_html", "<A><B><BLOCKQUOTE><DD><DL><DT><I><LI><OL><U><UL>"), 64, 128, t("If enabled, optionally specify tags which should not be stripped.  'STYLE' attributes, 'ON' attributes and unclosed tags are always stripped."));
Dries's avatar
 
Dries committed
41
  $output .= "<hr />";
Dries's avatar
 
Dries committed
42
  $output .= form_select(t("Enable link tags"), "filter_link", variable_get("filter_link", 0), array("Disabled", "Enabled"), t("Substitute special [[nodesubject|text]] tags. Your browser will display 'text', and when you click on it your browser will open the node with the subject 'nodesubject'. Please be aware that you'll need to copy the subject of the target node exactly in order to use this feature."));
Dries's avatar
 
Dries committed
43
  $output .= "<hr />";
Dries's avatar
CHANGES  
Dries committed
44 45 46 47 48 49 50 51 52 53 54
  return $output;
}

function node_filter_html($text) {
  $text = eregi_replace("([ \f\r\t\n\'\"])style=[^>]+", "\\1", $text);
  $text = eregi_replace("([ \f\r\t\n\'\"])on[a-z]+=[^>]+", "\\1", $text);
  $text = strip_tags($text, variable_get("allowed_html", ""));
  return $text;
}

function node_filter_link($text) {
Dries's avatar
 
Dries committed
55 56 57 58 59
  $src = array("/\[\[(([^\|]*?)(\|([^\|]*?))?)\]\]/e");  // [link|description]
  $dst = array(format_tag('\\2', '\\4'));                // [link|description]
  return preg_replace($src, $dst, $text);
}

Dries's avatar
CHANGES  
Dries committed
60 61 62 63 64 65
function node_filter($text) {
  if (variable_get("filter_html", 0)) $text = node_filter_html($text);
  if (variable_get("filter_link", 0)) $text = node_filter_link($text);
  return $text;
}

Dries's avatar
 
Dries committed
66
function node_link($type, $node = 0) {
Dries's avatar
 
Dries committed
67

Dries's avatar
 
Dries committed
68
  if ($type == "admin" && user_access("administer nodes")) {
Dries's avatar
 
Dries committed
69 70 71 72 73
    $links[] = "<a href=\"admin.php?mod=node\">content management</a>";
  }

  if ($type == "page") {
    $links[] = "<a href=\"module.php?mod=node&op=add\">submit</a>";
Dries's avatar
 
Dries committed
74 75
  }

Dries's avatar
 
Dries committed
76
  if ($type == "node") {
Dries's avatar
 
Dries committed
77

Kjartan's avatar
Kjartan committed
78 79 80
    if ($node->links) {
      $links = $node->links;
    }
Dries's avatar
 
Dries committed
81 82

    if ($node->teaser != $node->body) {
Dries's avatar
 
Dries committed
83 84
      $links[] = "<a href=\"node.php?id=". $node->nid ."\">". t("read more") ."</a>";
    }
Dries's avatar
 
Dries committed
85

Dries's avatar
 
Dries committed
86 87 88
    if ($node->comment) {
      $links[] = "<a href=\"node.php?id=". $node->nid ."\">". format_plural(node_get_comments($node->nid), "comment", "comments") ."</a>";
    }
Dries's avatar
 
Dries committed
89 90 91 92

    if (user_access("administer nodes")) {
      $links[] = "<a href=\"admin.php?mod=node&op=edit&id=". $node->nid ."\">". t("edit") ."</a>";
    }
Dries's avatar
 
Dries committed
93 94 95 96 97
  }

  return $links ? $links : array();
}

Dries's avatar
 
Dries committed
98
function node_admin_settings($edit = array()) {
Dries's avatar
 
Dries committed
99 100
  global $op;

Dries's avatar
 
Dries committed
101 102 103 104
  if ($op == t("Save configuration")) {
    /*
    ** Save the configuration options:
    */
Dries's avatar
Dries committed
105

Dries's avatar
 
Dries committed
106
    foreach ($edit as $name => $value) variable_set($name, $value);
Dries's avatar
 
Dries committed
107 108
  }

Dries's avatar
 
Dries committed
109 110 111 112
  if ($op == t("Reset to defaults")) {
    /*
    ** Reset the configuration options to their default value:
    */
Dries's avatar
 
Dries committed
113

Dries's avatar
 
Dries committed
114 115
    foreach ($edit as $name=>$value) variable_del($name);
  }
Dries's avatar
Dries committed
116

Dries's avatar
 
Dries committed
117 118 119
  $output .= node_conf_options();
  $output .= form_submit(t("Save configuration"));
  $output .= form_submit(t("Reset to defaults"));
Dries's avatar
Dries committed
120

Dries's avatar
 
Dries committed
121
  return form($output);
Dries's avatar
 
Dries committed
122 123
}

Dries's avatar
 
Dries committed
124
function node_admin_edit($node) {
Dries's avatar
 
Dries committed
125

Dries's avatar
 
Dries committed
126 127 128
  if (is_numeric($node)) {
    $node = node_array(node_load(array("nid" => $node)));
  }
Dries's avatar
 
Dries committed
129

Dries's avatar
 
Dries committed
130 131 132
  /*
  ** Edit node:
  */
Dries's avatar
 
Dries committed
133

Dries's avatar
 
Dries committed
134
  $output .= "<h3>". t("Edit node") ."</h3>";
Dries's avatar
 
Dries committed
135

Dries's avatar
 
Dries committed
136
  $output .= node_form($node);
Dries's avatar
 
Dries committed
137

Dries's avatar
 
Dries committed
138 139 140
  /*
  ** Edit comments:
  */
Dries's avatar
 
Dries committed
141

Dries's avatar
 
Dries committed
142
  $output .= "<h3>". t("Edit comments") ."</h3>";
Dries's avatar
 
Dries committed
143

Dries's avatar
 
Dries committed
144
  $result = db_query("SELECT c.cid, c.subject, u.uid, u.name FROM comments c LEFT JOIN users u ON u.uid = c.uid WHERE lid = '". $node["nid"] ."' ORDER BY c.timestamp");
Dries's avatar
 
Dries committed
145

Dries's avatar
 
Dries committed
146 147
  while ($comment = db_fetch_object($result)) {
    $output .= "<a href=\"admin.php?mod=comment&op=edit&id=$comment->cid\">$comment->subject</a> by ". format_name($comment) ."<br />";
Dries's avatar
Dries committed
148 149
  }

Dries's avatar
 
Dries committed
150
  return $output;
Dries's avatar
 
Dries committed
151 152 153

}

Dries's avatar
 
Dries committed
154 155
function node_admin_nodes() {
  global $query;
Dries's avatar
 
Dries committed
156

Dries's avatar
 
Dries committed
157
  $queries = array(array("ORDER BY n.created DESC", "new nodes"), array("ORDER BY n.changed DESC", "updated nodes"), array("WHERE n.status = 1 AND n.moderate = 0 ORDER BY n.nid DESC", "published nodes"), array("WHERE n.status = 0 AND n.moderate = 0 ORDER BY n.nid DESC", "non-published nodes"), array("WHERE n.status = 1 AND n.moderate = 1 ORDER BY n.nid DESC", "pending nodes"), array("WHERE n.status = 1 AND n.promote = 1 ORDER BY n.nid DESC", "promoted nodes"));
Dries's avatar
 
Dries committed
158

Dries's avatar
 
Dries committed
159
  $result = db_query("SELECT n.*, u.name, u.uid FROM node n LEFT JOIN users u ON n.uid = u.uid ". $queries[$query ? $query : 0][0] ." LIMIT 50");
Dries's avatar
 
Dries committed
160

Dries's avatar
 
Dries committed
161 162
  foreach ($queries as $key => $value) {
    $links[] = "<a href=\"admin.php?mod=node&op=nodes&query=$key\">$value[1]</a>";
Dries's avatar
Dries committed
163 164
  }

Dries's avatar
 
Dries committed
165
  $output .= "<small>". implode(" :: ", $links) ."</small><hr />";
Dries's avatar
 
Dries committed
166

Dries's avatar
 
Dries committed
167 168 169 170
  $output .= "<table border=\"1\" cellpadding=\"2\" cellspacing=\"2\">\n";
  $output .= " <tr><th>title</th><th>type</th><th>author</th><th>status</th><th colspan=\"2\">operations</th></tr>\n";
  while ($node = db_fetch_object($result)) {
    $output .= "<tr><td><a href=\"node.php?id=$node->nid\">". check_output($node->title) ."</a></td><td>$node->type</td><td nowrap=\"nowrap\">". format_name($node) ."</td><td>". ($node->status ? t("published") : t("not published")) ."</td><td nowrap=\"nowrap\"><a href=\"node.php?id=$node->nid\">view node</a></td><td nowrap=\"nowrap\"><a href=\"admin.php?mod=node&op=edit&id=$node->nid\">edit node</a></td></tr>";
Dries's avatar
 
Dries committed
171
  }
Dries's avatar
 
Dries committed
172
  $output .= "</table>";
Dries's avatar
 
Dries committed
173

Dries's avatar
 
Dries committed
174
  return $output;
Dries's avatar
Dries committed
175 176
}

Dries's avatar
 
Dries committed
177
function node_admin() {
Dries's avatar
 
Dries committed
178
  global $op, $id, $edit;
Dries's avatar
 
Dries committed
179

Dries's avatar
 
Dries committed
180
  if (user_access("administer nodes")) {
Dries's avatar
 
Dries committed
181

Dries's avatar
 
Dries committed
182 183 184
    /*
    ** Compile a list of the administrative links:
    */
Dries's avatar
Dries committed
185

Dries's avatar
 
Dries committed
186 187 188 189
    $links[] = "<a href=\"admin.php?mod=node&op=nodes\">nodes</a>";
    $links[] = "<a href=\"admin.php?mod=node&op=search\">search content</a>";
    $links[] = "<a href=\"admin.php?mod=node&op=settings\">settings</a>";
    $links[] = "<a href=\"admin.php?mod=node&op=help\">help</a>";
Dries's avatar
 
Dries committed
190

Dries's avatar
 
Dries committed
191
    print "<small>". implode(" &middot; ", $links) ."</small><hr />";
Dries's avatar
 
Dries committed
192 193 194 195 196 197

    switch ($op) {
      case "help":
        print node_help();
        break;
      case "search":
Dries's avatar
 
Dries committed
198
        print search_type("node", "admin.php?mod=node&op=search");
Dries's avatar
 
Dries committed
199
        break;
Dries's avatar
 
Dries committed
200 201 202 203
      case t("Save configuration"):
      case t("Reset to defaults"):
      case "settings":
        print node_admin_settings($edit);
Dries's avatar
 
Dries committed
204 205
        break;
      case "edit":
Dries's avatar
 
Dries committed
206
        print node_admin_edit($id);
Dries's avatar
 
Dries committed
207
        break;
Dries's avatar
 
Dries committed
208
      case t("Preview"):
Dries's avatar
 
Dries committed
209
        print node_preview($edit);
Dries's avatar
 
Dries committed
210
        break;
Dries's avatar
 
Dries committed
211
      case t("Submit"):
Dries's avatar
 
Dries committed
212 213 214 215 216 217
        print node_submit($edit);
        print node_admin_nodes();
        break;
      case t("Delete"):
        print node_remove($edit);
        break;
Dries's avatar
 
Dries committed
218
      default:
Dries's avatar
 
Dries committed
219
        print node_admin_nodes();
Dries's avatar
 
Dries committed
220 221 222 223
    }
  }
  else {
    print message_access();
Dries's avatar
 
Dries committed
224 225 226
  }
}

Dries's avatar
 
Dries committed
227 228 229 230
function node_block() {
  global $theme;

  $block[0][subject] = t("Syndicate");
Dries's avatar
 
Dries committed
231
  $block[0][content] = "<div align=\"center\"><a href=\"module.php?mod=node&op=feed\"><img src=\"". $theme->image("xml.gif") ."\" width=\"36\" height=\"14\" border=\"0\" alt=\"XML\" /></a></div>\n";
Dries's avatar
 
Dries committed
232 233 234 235 236 237
  $block[0][info] = "Syndicate";

  return $block;
}

function node_feed() {
Dries's avatar
 
Dries committed
238

Dries's avatar
 
Dries committed
239
  $result = db_query("SELECT nid, type FROM node WHERE promote = '1' AND status = '1' ORDER BY created DESC LIMIT 15");
Dries's avatar
 
Dries committed
240 241

  while ($node = db_fetch_object($result)) {
Dries's avatar
 
Dries committed
242
    $item = node_load(array("nid" => $node->nid, "type" => $node->type));
Dries's avatar
 
Dries committed
243 244 245

    $link = path_uri() ."node.php?id=$item->nid";

Dries's avatar
 
Dries committed
246
    $items .= format_rss_item($item->title, $link, $item->teaser);
Dries's avatar
 
Dries committed
247 248 249
  }

  $output .= "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n";
Dries's avatar
 
Dries committed
250
  $output .= "<!DOCTYPE rss [<!ENTITY % HTMLlat1 PUBLIC \"-//W3C//ENTITIES Latin 1 for XHTML//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent\">\n";
Dries's avatar
 
Dries committed
251
  $output .= "<rss version=\"0.91\">\n";
Dries's avatar
 
Dries committed
252
  $output .= format_rss_channel(variable_get("site_name", "drupal"), path_uri(), variable_get("site_slogan", ""), $items);
Dries's avatar
 
Dries committed
253 254
  $output .= "</rss>\n";

Dries's avatar
 
Dries committed
255 256
  header("Content-Type: text/xml");

Dries's avatar
 
Dries committed
257 258 259 260
  print $output;

}

Dries's avatar
 
Dries committed
261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543

function node_fixup($edit) {

  global $user;

  /*
  ** Convert the node to an object if necessary:
  */

  $edit = node_object($edit);

  /*
  ** Validate the title field:
  */

  if (($edit->nid || $edit->body) && !$edit->title) {
    $error["title"] = "<div style=\"color: red;\">". t("You have to specify a valid title.") ."</div>";
  }

  if (user_access("administer nodes")) {

    /*
    ** Setup default values if required:
    */

    if (!$edit->name) {
      $edit->name = $user->name;
    }

    if (!$edit->created) {
      $edit->created = time();
    }

    if (!$edit->date) {
      $edit->date = date("M j, Y g:i a", $edit->created);
    }

    /*
    ** Validate the "authored by"-field:
    */

    if ($account = user_load(array("name" => $edit->name))) {
      $edit->uid = $account->uid;
    }
    else {
      $error["name"] = "<div style=\"color: red;\">". sprintf(t("The name '%s' does not exist."), $edit->name) ."</div>";
    }

    /*
    ** Validate the "authored on"-field:
    */

    if (strtotime($edit->date) > 1000) {
      $edit->created = strtotime($edit->date);
    }
    else {
      $error["date"] = "<div style=\"color: red;\">". t("You have to specifiy a valid date.") ."</div>";
    }
  }

  return $error;
}

function node_form($edit) {

  $error = node_fixup(&$edit);

  $output .= "<div style=\"margin-right: 40px; float: left;\">";

  /*
  ** Add the default fields:
  */

  $output .= form_textfield(t("Title"), "title", $edit->title, 60, 64, $error["title"]);

  if ($edit->body && !$edit->teaser) {
    $edit->teaser = node_teaser($edit->body);
  }

  if ($edit->teaser) {
    $output .= form_textarea(t("Teaser"), "teaser", $edit->teaser, 60, 5);
  }

  /*
  ** Add the node specific parts:
  */

  $output .= module_invoke($edit->type, "form", $edit);

  /*
  ** Add the hidden fields:
  */

  if ($edit->nid) {
    $output .= form_hidden("nid", $edit->nid);
  }

  if ($edit->uid) {
    $output .= form_hidden("uid", $edit->uid);
  }

  if ($edit->created) {
    $output .= form_hidden("created", $edit->created);
  }

  $output .= form_hidden("type", $edit->type);

  /*
  ** Add the buttons:
  */

  $output .= form_submit(t("Preview"));

  if ($edit->title && $edit->type && !$error) {
    $output .= form_submit(t("Submit"));
  }

  if ($edit->nid && user_access("administer nodes")) {
    $output .= form_submit(t("Delete"));
  }

  $output .= "</div>";

  /*
  ** Add the admin specific parts:
  */

  if (user_access("administer nodes")) {
    $output .= "<div style=\"float: right;\">";
    $output .= form_textfield(t("Authored by"), "name", $edit->name, 20, 25, $error["name"]);
    $output .= form_textfield(t("Authored on"), "date", $edit->date, 20, 25, $error["date"]);
    $output .= "<br />";
    $output .= form_select(t("Current status"), "status", $edit->status, array("Disabled", "Enabled"));
    $output .= form_select(t("User comments"), "comment", $edit->comment, array("Disabled", "Enabled"));
    $output .= form_select(t("Node location"), "promote", $edit->promote, array("Default", "Front page"));
    $output .= "</div>";
  }

  return form($output);
}

function node_add($type) {
  global $user;

  if ($type) {
    $output = node_form(array("uid" => $user->uid, "type" => $type));
  }
  else {
    // TODO: make building a node list generic and find an easy way to associate post permissions with them
    if (user_access("adminster nodes")) {
      $nodes = array("book" => "book page", "blog" => "personal blog entry", "poll" => "online survey", "story" => "story", "page" => "static page", "forum" => "discussion forum");
    }
    else {
      $nodes = array("book" => "book page", "blog" => "personal blog entry", "poll" => "online survey", "story" => "story");
    }

    foreach ($nodes as $type => $name) {
      $links[] = "<a href=\"module.php?mod=node&op=add&type=$type\">". t($name) ."</a>";
    }

    $output .= sprintf(t("Submit a %s."), implode(", ", $links));
  }

  return $output;
}

function node_edit($id) {
  global $user;

  $node = node_load(array("nid" => $id));
    // TODO: make this generic for all node types - temporary solution

  return node_form($node);
}

function node_preview($edit) {

  /*
  ** Load the user's name when needed:
  */

  if ($edit["name"]) {
    $user = user_load(array("name" => $edit["name"]));
    $edit["uid"] = $user->uid;
  }
  else if ($edit["uid"]) {
    $user = user_load(array("uid" => $edit["uid"]));
    $edit["name"] = $user->name;
  }

  /*
  ** Set the created time when needed:
  */

  if (empty($edit["nid"])) {
    $edit["created"] = time();
  }

  /*
  ** Display a preview of the node:
  */

  node_view($edit);

  return node_form($edit);
}

function node_submit($edit) {

  global $user;

  /*
  ** Fixup the node when required:
  */

  node_fixup(&$edit);

  if ($edit->nid) {
    /*
    ** Compile a list of the node fields and their default values that users
    ** and administrators are allowed to save when updating a node.
    */

    if (user_access("administer nodes")) {
      $fields = array("nid", "uid", "body", "comment", "promote", "moderate", "status", "teaser", "title", "created", "type" => $edit->type);
    }
    else {
      $fields = array("nid", "uid" => $user->uid, "body", "teaser", "title", "type" => $edit->type);
    }

    $output = t("The node has been updated.");
  }
  else {
    /*
    ** Compile a list of the node fields and their default values that users
    ** and administrators are allowed to save when inserting a new node.
    */

    if (user_access("administer nodes")) {
      $fields = array("uid", "body", "comment" => 1, "promote", "moderate", "status" => 1, "teaser", "title", "type" => $edit->type);
    }
    else {
      $fields = array("uid" => $user->uid, "body", "comment" => 1, "teaser", "title", "type" => $edit->type);
    }

    $output = t("Thanks for your submission.");
  }

  /*
  ** Check whether we are allowed to save the node and if so, whether
  ** there are more default values to add.
  */

  $defaults = module_invoke($edit->type, "save", $edit);

  if (is_array($defaults)) {
    node_save($edit, array_merge($fields, $defaults));
  }
  else {
    $output = t("Could not save or process the specified submission.");
  }

  return $output;
}

function node_remove($edit) {

  if ($edit["confirm"]) {
    node_delete(array(nid => $edit["nid"]));

    $output = node_admin_nodes();
  }
  else {
    $output .= form_item(t("Confirm removal of"), check_output($edit["title"]));
    $output .= form_hidden("nid", $edit["nid"]);
    $output .= form_hidden("confirm", 1);
    $output .= form_submit(t("Delete"));
    $output = form($output, "post", "admin.php?mod=node");
  }

  return $output;
}

Dries's avatar
 
Dries committed
544
function node_page() {
Dries's avatar
 
Dries committed
545
  global $op, $id, $user, $edit, $type, $theme, $meta, $date;
Dries's avatar
 
Dries committed
546 547 548

  if ($op == "feed") {
    node_feed();
Dries's avatar
 
Dries committed
549
    return;
Dries's avatar
 
Dries committed
550
  }
Dries's avatar
 
Dries committed
551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568

  $theme->header();

  switch ($op) {
    case "add":
      $theme->box(t("Node"), node_add($type));
      break;
    case "edit":
      $theme->box(t("Node"), node_edit($id));
      break;
    case t("Preview"):
      $theme->box(t("Node"), node_preview($edit));
      break;
    case t("Submit"):
      $theme->box(t("Node"), node_submit($edit));
      break;
    default:
      $result = db_query("SELECT nid, type FROM node WHERE ". ($meta ? "attributes LIKE '%". check_input($meta) ."%' AND " : "") ." promote = '1' AND status = '1' AND created <= '". ($date > 0 ? check_input($date) : time()) ."' ORDER BY created DESC LIMIT ". ($user->nodes ? $user->nodes : variable_get(default_nodes_main, 10)));
569
      while ($node = db_fetch_object($result)) {
Dries's avatar
 
Dries committed
570
        node_view(node_load(array("nid" => $node->nid, "type" => $node->type)), 1);
571 572
      }
  }
Dries's avatar
 
Dries committed
573 574

  $theme->footer();
Dries's avatar
 
Dries committed
575
}
Dries's avatar
 
Dries committed
576

Dries's avatar
 
Dries committed
577
?>