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
?>