forum.module 2.69 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
<?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;
  }
}

function forum_save() {
  if ($op == "approve") {
    return array("status" => 1);
  }

  if ($op == "create") {
    return array("promote" => 0, "moderate" => 0, "status" => 1);
  }

  if ($op == "update") {
    return array();
  }

  if ($op == "update") {
    return array("status" => 0);
  }
}

function forum_link($type) {
  if ($type == "page" && user_access("access content")) {
    $links[] = "<a href=\"module.php?mod=forum\">". t("forum") ."</a>";
  }

  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>";
  $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) {
  $value = db_fetch_object(db_query("SELECT COUNT(cid) AS count FROM comments WHERE lid = '$nid'"));
  return ($value) ? $value->count : 0;
}

function forum_last_comment($nid) {
  $value = db_fetch_object(db_query("SELECT timestamp FROM comments WHERE lid = '$nid' ORDER BY timestamp DESC LIMIT 1"));
  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
91
?>