<?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($op, $node) { if ($op == "approve") { return array("status" => 1); } if ($op == "create") { return array("body" => filter($node->body), "teaser" => filter($node->teaser)); } if ($op == "decline") { return array("status" => 0); } if ($op == "update") { return array("body" => filter($node->body), "teaser" => filter($node->teaser)); } } function forum_link($type) { if ($type == "page" && user_access("access content")) { $links[] = lm(t("forum"), array("mod" => "forum"), "", array("title" => t("Read and participate in the discussion forums."))); } if ($type == "menu.create" && user_access("administer nodes")) { $links[] = lm(t("create forum"), array("mod" => "node", "op" => "add", "type" => "forum"), "", array("title" => t("Add a new discussion forum."))); } return $links ? $links : array(); } function forum_view($node) { global $theme; $output .= "<p>". lm(t("Forum"), array("mod" => "forum")) ." / <b>". l(check_output($node->title), array("id" => $node->nid)) ."</b>:</p><p>". check_output($node->body) ."</p>"; $output .= "<p>". $theme->links(link_node($node, $main)) ."</p>"; $theme->box(t("Discussion forum"), $output); } function forum_form(&$node, &$help, &$error) { if (function_exists("taxonomy_node_form")) { $output = implode("", taxonomy_node_form("forum", $node)); } $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 nid = '$nid'")); return ($value) ? $value->count : 0; } function forum_last_comment($nid) { $value = db_fetch_object(db_query("SELECT timestamp FROM comments WHERE nid = '$nid' ORDER BY timestamp DESC LIMIT 1")); return ($value) ? format_date($value->timestamp, "small") : " "; } 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>". l(check_output($node->title), array("id" => $node->nid)) ."<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(); } } ?>