forum.module 2.75 KB
Newer Older
Dries's avatar
   
Dries committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
// $Id$

function forum_node($field) {
  $info["name"] = t("discussion forum");
  $info["description"] = t("A forum is a threaded discussion, enabling users to communicate about a particular topic.");

  return $info[$field];
}

function forum_access($op, $node) {
  if ($op == "view") {
    return $node->status;
  }
}

Dries's avatar
   
Dries committed
17
18
function forum_save($op, $node) {

Dries's avatar
   
Dries committed
19
20
21
22
23
  if ($op == "approve") {
    return array("status" => 1);
  }

  if ($op == "create") {
Dries's avatar
   
Dries committed
24
    return array("teaser" => $node->body);
Dries's avatar
   
Dries committed
25
26
  }

Dries's avatar
   
Dries committed
27
28
  if ($op == "decline") {
    return array("status" => 0);
Dries's avatar
   
Dries committed
29
30
31
  }

  if ($op == "update") {
Dries's avatar
   
Dries committed
32
    return array("teaser" => $node->body);
Dries's avatar
   
Dries committed
33
34
35
36
37
  }
}

function forum_link($type) {
  if ($type == "page" && user_access("access content")) {
Dries's avatar
   
Dries committed
38
    $links[] = "<a href=\"module.php?mod=forum\" title=\"". t("Read and participate in the discussion forums.") ."\">". t("forum") ."</a>";
Dries's avatar
   
Dries committed
39
40
41
42
43
44
45
46
  }

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

function forum_view($node) {
  global $theme;
  $output .= "<p><a href=\"module.php?mod=forum\">". t("Forum") ."</a> / <b><a href=\"node.php?id=$node->nid\">". check_output($node->title) ."</a></b>:</p><p>". check_output($node->body) ."</p>";
Dries's avatar
   
Dries committed
47
48
  $output .= "<p>". $theme->links(link_node($node, $main)) ."</p>";

Dries's avatar
   
Dries committed
49
50
51
52
53
54
55
56
57
58
59
60
  $theme->box(t("Discussion forum"), $output);
}

function forum_form(&$node, &$help, &$error) {

  $output .= form_textarea("Body", "body", $node->body, 60, 10);

  return $output;
}


function forum_num_comments($nid) {
Dries's avatar
   
Dries committed
61
  $value = db_fetch_object(db_query("SELECT COUNT(cid) AS count FROM comments WHERE nid = '$nid'"));
Dries's avatar
   
Dries committed
62
63
64
65
  return ($value) ? $value->count : 0;
}

function forum_last_comment($nid) {
Dries's avatar
   
Dries committed
66
  $value = db_fetch_object(db_query("SELECT timestamp FROM comments WHERE nid = '$nid' ORDER BY timestamp DESC LIMIT 1"));
Dries's avatar
   
Dries committed
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
  return ($value) ? format_date($value->timestamp, "small") : "&nbsp;";
}

function forum_page() {
  global $theme;

  if (user_access("access content")) {
    $result = db_query("SELECT nid FROM node WHERE type = 'forum' ORDER BY title");

    $output .= "<table border=\"0\" cellspacing=\"4\" cellpadding=\"4\">";
    $output .= " <tr><th>". t("Forum") ."</th><th>". t("Comments") ."</th><th>". t("Last comment") ."</th></tr>";
    while ($node = db_fetch_object($result)) {
      $node = node_load(array("nid" => $node->nid));
      $output .= " <tr><td><a href=\"node.php?id=$node->nid\">". check_output($node->title) ."</a><br /><small>". check_output($node->body, 1) ."</small></td><td align=\"center\">". forum_num_comments($node->nid) ."</td><td align=\"center\">". forum_last_comment($node->nid) ."</td></tr>";
    }
    $output .= "</table>";

    $theme->header();
    $theme->box(t("Discussion forum"), $output);
    $theme->footer();
  }
  else {
    $theme->header();
    $theme->box(t("Access denied"), message_access());
    $theme->footer();
  }
}

Dries's avatar
 
Dries committed
95
?>