Commit d8cd5496 authored by Dries's avatar Dries

- Added Marco's long-awaited taxonmy module and patches - a replacement
  for the meta system.  The patches add some extra functionality to the
  comment system (for example, comments can be set read-only) and fix a
  couple of small problems.

  + I integrated the required SQL updates from the varius *.mysql files
    into the "update.php" script.  Upgrading should be easy ...

  + I did not apply/commit the "user.diff" as requested by Marco ...

  + I didn't know what to do with "forum.module" and "forum2.module":
    what do you want me to do with it Marco?  Which one should go in?

  + Can we remove "node_index()" now; both from "node.module" and the
    themes?

  + Thanks Marco!
parent e5fd6713
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# #
# Host: localhost Database: drupal # Host: localhost Database: drupal
#-------------------------------------------------------- #--------------------------------------------------------
# Server version 3.23.38 # Server version 3.23.38
# #
# Table structure for table 'access' # Table structure for table 'access'
......
...@@ -78,9 +78,13 @@ function object2array($node) { ...@@ -78,9 +78,13 @@ function object2array($node) {
return $array; return $array;
} }
function path_uri() { function path_uri($brief = 0) {
global $HTTP_HOST, $REQUEST_URI; global $HTTP_HOST, $REQUEST_URI;
return "http://". $HTTP_HOST . substr($REQUEST_URI, 0, strrpos($REQUEST_URI, "/")) ."/"; $path = $HTTP_HOST . substr($REQUEST_URI, 0, strrpos($REQUEST_URI, "/")) ."/";
if (!$brief) {
$path = "http://". $path;
}
return $path;
} }
function path_img() { function path_img() {
...@@ -148,7 +152,7 @@ function variable_del($name) { ...@@ -148,7 +152,7 @@ function variable_del($name) {
* Format a single result entry of a search query: * Format a single result entry of a search query:
* *
* @param $item a single search result as returned by <module>_search of type * @param $item a single search result as returned by <module>_search of type
* array("count" => ..., "link" => ..., "title" => ..., * array("count" => ..., "link" => ..., "title" => ...,
* "user" => ..., "date" => ..., "keywords" => ...) * "user" => ..., "date" => ..., "keywords" => ...)
* @param $type module type of this item * @param $type module type of this item
*/ */
...@@ -164,14 +168,14 @@ function search_item($item, $type) { ...@@ -164,14 +168,14 @@ function search_item($item, $type) {
* Render a generic search form. * Render a generic search form.
* *
* "Generic" means "universal usable" - that is, usable not only from * "Generic" means "universal usable" - that is, usable not only from
* module.php?mod=search, but also as a simple seach box (without * module.php?mod=search, but also as a simple seach box (without
* "Restrict search to", help text, etc) from theme's header etc. * "Restrict search to", help text, etc) from theme's header etc.
* This means: provide options to only conditionally render certain * This means: provide options to only conditionally render certain
* parts of this form. * parts of this form.
* *
* @param $action Form action. Defaults to module.php?mod=search. * @param $action Form action. Defaults to module.php?mod=search.
* @param $query Query string. Defaults to global $keys. * @param $query Query string. Defaults to global $keys.
* @param $options != 0: Render additional form fields/text * @param $options != 0: Render additional form fields/text
* ("Restrict search to", help text, etc). * ("Restrict search to", help text, etc).
*/ */
function search_form($action = 0, $query = 0, $options = 0) { function search_form($action = 0, $query = 0, $options = 0) {
...@@ -239,11 +243,11 @@ function search_data() { ...@@ -239,11 +243,11 @@ function search_data() {
/** /**
* Display the search form and the resulting data. * Display the search form and the resulting data.
* *
* @param $type If set, search only nodes of this type. * @param $type If set, search only nodes of this type.
* Otherwise, search all types. * Otherwise, search all types.
* @param $action Form action. Defaults to module.php?mod=search. * @param $action Form action. Defaults to module.php?mod=search.
* @param $query Query string. Defaults to global $keys. * @param $query Query string. Defaults to global $keys.
* @param $options != 0: Render additional form fields/text * @param $options != 0: Render additional form fields/text
* ("Restrict search to", help text, etc). * ("Restrict search to", help text, etc).
*/ */
function search_type($type = 0, $action = 0, $query = 0, $options = 0) { function search_type($type = 0, $action = 0, $query = 0, $options = 0) {
...@@ -256,6 +260,22 @@ function search_type($type = 0, $action = 0, $query = 0, $options = 0) { ...@@ -256,6 +260,22 @@ function search_type($type = 0, $action = 0, $query = 0, $options = 0) {
return search_form($action, $query, $options) . search_data(); return search_form($action, $query, $options) . search_data();
} }
function drupal_str_replace($from, $to, $subject) {
/*
** Multiple item replace which works for *all* PHP versions
** (PHP 4.05+ supports this natively using similar syntax).
** $from and $to should be same sized arrays, $subject is the
** source text.
*/
for ($i = 0; $i < count($from); $i++) {
$subject = str_replace($from[$i], $to[$i], $subject);
}
return $subject;
}
function drupal_goto($url) { function drupal_goto($url) {
/* /*
...@@ -551,12 +571,12 @@ function form_textarea($title, $name, $value, $cols, $rows, $description = 0) { ...@@ -551,12 +571,12 @@ function form_textarea($title, $name, $value, $cols, $rows, $description = 0) {
return form_item($title, "<textarea wrap=\"virtual\" cols=\"$cols\" rows=\"$rows\" name=\"edit[$name]\">". check_form($value) ."</textarea>", $description); return form_item($title, "<textarea wrap=\"virtual\" cols=\"$cols\" rows=\"$rows\" name=\"edit[$name]\">". check_form($value) ."</textarea>", $description);
} }
function form_select($title, $name, $value, $options, $description = 0, $extra = 0) { function form_select($title, $name, $value, $options, $description = 0, $extra = 0, $multiple = 0) {
if (count($options) > 0) { if (count($options) > 0) {
foreach ($options as $key => $choice) { foreach ($options as $key=>$choice) {
$select .= "<option value=\"$key\"". (is_array($value) ? (in_array($key, $value) ? " selected=\"selected\"" : "") : ($key == $value ? " selected=\"selected\"" : "")) .">". check_form($choice) ."</option>"; $select .= "<option value=\"$key\"". (is_array($value) ? (in_array($key, $value) ? " selected=\"selected\"" : "") : ($key == $value ? " selected=\"selected\"" : "")) .">". check_form($choice) ."</option>";
} }
return form_item($title, "<select name=\"edit[$name]\"". ($extra ? " $extra" : "") .">$select</select>", $description); return form_item($title, "<select name=\"edit[$name]".($multiple ? "[]" : "")."\"" .($multiple ? " multiple " : "").($extra ? " $extra" : "") .">$select</select>", $description);
} }
} }
...@@ -595,20 +615,20 @@ function field_merge($a, $b) { ...@@ -595,20 +615,20 @@ function field_merge($a, $b) {
function link_page() { function link_page() {
global $custom_links; global $custom_links;
if (is_array($custom_links)) { if (is_array($custom_links)) {
return $custom_links; return $custom_links;
} }
else { else {
$links[] = "<a href=\"index.php\">". t("home") ."</a>"; $links[] = "<a href=\"index.php\">". t("home") ."</a>";
foreach (module_list() as $name) { foreach (module_list() as $name) {
if (module_hook($name, "link")) { if (module_hook($name, "link")) {
$links = array_merge($links, module_invoke($name, "link", "page")); $links = array_merge($links, module_invoke($name, "link", "page"));
} }
} }
return $links; return $links;
} }
} }
function link_node($node, $main = 0) { function link_node($node, $main = 0) {
foreach (module_list() as $name) { foreach (module_list() as $name) {
......
...@@ -243,6 +243,8 @@ function blog_form(&$node, &$help, &$error) { ...@@ -243,6 +243,8 @@ function blog_form(&$node, &$help, &$error) {
$output .= form_textarea(t("Teaser"), "teaser", $node->teaser, 60, 5, $error["teaser"]); $output .= form_textarea(t("Teaser"), "teaser", $node->teaser, 60, 5, $error["teaser"]);
} }
$output .= implode("<p>", taxonomy_node_form("blog", $node));
$output .= form_textarea(t("Body"), "body", $node->body, 60, 15, $error["body"] ? $error["body"] : t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", ""))); $output .= form_textarea(t("Body"), "body", $node->body, 60, 15, $error["body"] ? $error["body"] : t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", "")));
return $output; return $output;
......
...@@ -243,6 +243,8 @@ function blog_form(&$node, &$help, &$error) { ...@@ -243,6 +243,8 @@ function blog_form(&$node, &$help, &$error) {
$output .= form_textarea(t("Teaser"), "teaser", $node->teaser, 60, 5, $error["teaser"]); $output .= form_textarea(t("Teaser"), "teaser", $node->teaser, 60, 5, $error["teaser"]);
} }
$output .= implode("<p>", taxonomy_node_form("blog", $node));
$output .= form_textarea(t("Body"), "body", $node->body, 60, 15, $error["body"] ? $error["body"] : t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", ""))); $output .= form_textarea(t("Body"), "body", $node->body, 60, 15, $error["body"] ? $error["body"] : t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", "")));
return $output; return $output;
......
...@@ -145,22 +145,30 @@ function comment_edit($cid) { ...@@ -145,22 +145,30 @@ function comment_edit($cid) {
} }
function comment_reply($pid, $nid) { function comment_reply($pid, $nid) {
global $theme; global $theme, $node;
if ($pid) { // we must provide a taxonomy context for user_access()
$comment = db_fetch_object(db_query("SELECT c.*, u.uid, u.name FROM comments c LEFT JOIN users u ON c.uid = u.uid WHERE c.cid = '$pid'")); $context->nid = $nid;
comment_view($comment, t("reply to this comment")); if (user_access("access comments", $context)) {
} if ($pid) {
else { $comment = db_fetch_object(db_query("SELECT c.*, u.uid, u.name FROM comments c LEFT JOIN users u ON c.uid = u.uid WHERE c.cid = '$pid'"));
node_view(node_load(array("nid" => $nid))); comment_view($comment, t("reply to this comment"));
$pid = 0; }
} else {
node_view(node_load(array("nid" => $nid)));
$pid = 0;
}
if (user_access("post comments")) { if (node_comment_mode($nid) == 1) {
$theme->box(t("Reply"), comment_form(array("pid" => $pid, "nid" => $nid))); $theme->box(t("Reply"), t("This discussion is closed: you can't post new comments."));
} } else if (user_access("post comments", $context)) {
else { $theme->box(t("Reply"), comment_form(array("pid" => $pid, "nid" => $nid)));
$theme->box(t("Reply"), t("You are not authorized to post comments.")); }
else {
$theme->box(t("Reply"), t("You are not authorized to post comments."));
}
} else {
$theme->box(t("Reply"), t("You are not authorized to view comments."));
} }
} }
...@@ -205,7 +213,8 @@ function comment_preview($edit) { ...@@ -205,7 +213,8 @@ function comment_preview($edit) {
function comment_post($edit) { function comment_post($edit) {
global $theme, $user; global $theme, $user;
if (user_access("post comments")) { $context->nid = $edit["nid"];
if (user_access("post comments", $context) && node_comment_mode($edit["nid"]) == 2) {
/* /*
** Validate the comment's subject. If not specified, extract ** Validate the comment's subject. If not specified, extract
...@@ -378,6 +387,11 @@ function comment_links($comment, $return = 1) { ...@@ -378,6 +387,11 @@ function comment_links($comment, $return = 1) {
$links[] = "<a href=\"admin.php?mod=comment&op=edit&id=$comment->cid\" title=\"". t("Administer this comment.") ."\"><span style=\"color: $theme->type;\">". t("administer") ."</span></a>"; $links[] = "<a href=\"admin.php?mod=comment&op=edit&id=$comment->cid\" title=\"". t("Administer this comment.") ."\"><span style=\"color: $theme->type;\">". t("administer") ."</span></a>";
} }
// here we should check if this node has read-only comments, but we already check on submit
// and this way we save a query. it's just a cosmetic issue. otherwise just uncomment next
// line and related bracket some lines below
//if (node_comment_mode($comment->nid)) {
if (user_access("post comments")) { if (user_access("post comments")) {
if (comment_access("edit", $comment)) { if (comment_access("edit", $comment)) {
$links[] = "<a href=\"module.php?mod=comment&op=edit&id=$comment->cid\" title=\"". t("Make changes to your comment.") ."\"><span style=\"color: $theme->type\">". t("edit your comment") ."</span></a>"; $links[] = "<a href=\"module.php?mod=comment&op=edit&id=$comment->cid\" title=\"". t("Make changes to your comment.") ."\"><span style=\"color: $theme->type\">". t("edit your comment") ."</span></a>";
...@@ -386,6 +400,7 @@ function comment_links($comment, $return = 1) { ...@@ -386,6 +400,7 @@ function comment_links($comment, $return = 1) {
$links[] = "<a href=\"module.php?mod=comment&op=reply&id=$comment->nid&pid=$comment->cid\" title=\"". t("Reply to this comment.") ."\"><span style=\"color: $theme->type;\">". t("reply to this comment") ."</span></a>"; $links[] = "<a href=\"module.php?mod=comment&op=reply&id=$comment->nid&pid=$comment->cid\" title=\"". t("Reply to this comment.") ."\"><span style=\"color: $theme->type;\">". t("reply to this comment") ."</span></a>";
} }
} }
//}
return $theme->links($links); return $theme->links($links);
...@@ -553,10 +568,10 @@ function comment_search($keys) { ...@@ -553,10 +568,10 @@ function comment_search($keys) {
// index. // index.
// //
// "select"'s value is used to relate the data from the specific nodes // "select"'s value is used to relate the data from the specific nodes
// table to the data that the search_index table has in it, and the the // table to the data that the search_index table has in it, and the the
// do_search functino will rank it. // do_search functino will rank it.
// //
// The select must always provide the following fields - lno, title, // The select must always provide the following fields - lno, title,
// created, uid, name, count // created, uid, name, count
// //
// The select statement may optionally provide "nid", which is a secondary // The select statement may optionally provide "nid", which is a secondary
...@@ -565,7 +580,7 @@ function comment_search($keys) { ...@@ -565,7 +580,7 @@ function comment_search($keys) {
$find = do_search(array("keys" => $keys, $find = do_search(array("keys" => $keys,
"type" => "comment", "type" => "comment",
"select" => "select s.lno as lno, c.nid as nid, c.subject as title, c.timestamp as created, u.uid as uid, u.name as name, s.count as count FROM search_index s, comments c LEFT JOIN users u ON c.uid = u.uid WHERE s.lno = c.cid AND s.type = 'comment' AND s.word like '%'")); "select" => "select s.lno as lno, c.nid as nid, c.subject as title, c.timestamp as created, u.uid as uid, u.name as name, s.count as count FROM search_index s, comments c LEFT JOIN users u ON c.uid = u.uid WHERE s.lno = c.cid AND s.type = 'comment' AND s.word like '%'"));
return $find; return $find;
} }
...@@ -597,11 +612,15 @@ function comment_link($type, $node = 0, $main = 0) { ...@@ -597,11 +612,15 @@ function comment_link($type, $node = 0, $main = 0) {
else { else {
/* /*
** Node page: add a "post comment" link if the user is allowed to ** Node page: add a "post comment" link if the user is allowed to
** post comments. ** post comments and if this node is not read-only
*/ */
if (user_access("post comments")) { if (user_access("post comments")) {
$links[] = "<a href=\"module.php?mod=comment&op=reply&id=$node->nid#comment\" title=\"". t("Share your thoughts and opinions related to this posting.") ."\">". t("add new comment") ."</a>"; if ($node->comment == 2) {
$links[] = "<a href=\"module.php?mod=comment&op=reply&id=$node->nid#comment\" title=\"". t("Share your thoughts and opinions related to this posting.") ."\">". t("add new comment") ."</a>";
} else {
$links[] = t("This discussion is closed: you can't post new comments.");
}
} }
} }
} }
...@@ -751,14 +770,14 @@ function comment_update_index() { ...@@ -751,14 +770,14 @@ function comment_update_index() {
// Return an array of values to dictate how to update the search index // Return an array of values to dictate how to update the search index
// for this particular type of node. // for this particular type of node.
// //
// "last_update"'s value is used with variable_set to set the // "last_update"'s value is used with variable_set to set the
// last time this node type (comment) had an index update run. // last time this node type (comment) had an index update run.
// //
// "node_type"'s value is used to identify the node type in the search // "node_type"'s value is used to identify the node type in the search
// index (commentt in this case). // index (commentt in this case).
// //
// "select"'s value is used to select the node id and text fields from // "select"'s value is used to select the node id and text fields from
// the table we are indexing. In this case, we also check against the // the table we are indexing. In this case, we also check against the
// last run date for the comments update. // last run date for the comments update.
return array("last_update" => "comment_cron_last", return array("last_update" => "comment_cron_last",
"node_type" => "comment", "node_type" => "comment",
......
...@@ -145,22 +145,30 @@ function comment_edit($cid) { ...@@ -145,22 +145,30 @@ function comment_edit($cid) {
} }
function comment_reply($pid, $nid) { function comment_reply($pid, $nid) {
global $theme; global $theme, $node;
if ($pid) { // we must provide a taxonomy context for user_access()
$comment = db_fetch_object(db_query("SELECT c.*, u.uid, u.name FROM comments c LEFT JOIN users u ON c.uid = u.uid WHERE c.cid = '$pid'")); $context->nid = $nid;
comment_view($comment, t("reply to this comment")); if (user_access("access comments", $context)) {
} if ($pid) {
else { $comment = db_fetch_object(db_query("SELECT c.*, u.uid, u.name FROM comments c LEFT JOIN users u ON c.uid = u.uid WHERE c.cid = '$pid'"));
node_view(node_load(array("nid" => $nid))); comment_view($comment, t("reply to this comment"));
$pid = 0; }
} else {
node_view(node_load(array("nid" => $nid)));
$pid = 0;
}
if (user_access("post comments")) { if (node_comment_mode($nid) == 1) {
$theme->box(t("Reply"), comment_form(array("pid" => $pid, "nid" => $nid))); $theme->box(t("Reply"), t("This discussion is closed: you can't post new comments."));
} } else if (user_access("post comments", $context)) {
else { $theme->box(t("Reply"), comment_form(array("pid" => $pid, "nid" => $nid)));
$theme->box(t("Reply"), t("You are not authorized to post comments.")); }
else {
$theme->box(t("Reply"), t("You are not authorized to post comments."));
}
} else {
$theme->box(t("Reply"), t("You are not authorized to view comments."));
} }
} }
...@@ -205,7 +213,8 @@ function comment_preview($edit) { ...@@ -205,7 +213,8 @@ function comment_preview($edit) {
function comment_post($edit) { function comment_post($edit) {
global $theme, $user; global $theme, $user;
if (user_access("post comments")) { $context->nid = $edit["nid"];
if (user_access("post comments", $context) && node_comment_mode($edit["nid"]) == 2) {
/* /*
** Validate the comment's subject. If not specified, extract ** Validate the comment's subject. If not specified, extract
...@@ -378,6 +387,11 @@ function comment_links($comment, $return = 1) { ...@@ -378,6 +387,11 @@ function comment_links($comment, $return = 1) {
$links[] = "<a href=\"admin.php?mod=comment&op=edit&id=$comment->cid\" title=\"". t("Administer this comment.") ."\"><span style=\"color: $theme->type;\">". t("administer") ."</span></a>"; $links[] = "<a href=\"admin.php?mod=comment&op=edit&id=$comment->cid\" title=\"". t("Administer this comment.") ."\"><span style=\"color: $theme->type;\">". t("administer") ."</span></a>";
} }
// here we should check if this node has read-only comments, but we already check on submit
// and this way we save a query. it's just a cosmetic issue. otherwise just uncomment next
// line and related bracket some lines below
//if (node_comment_mode($comment->nid)) {
if (user_access("post comments")) { if (user_access("post comments")) {
if (comment_access("edit", $comment)) { if (comment_access("edit", $comment)) {
$links[] = "<a href=\"module.php?mod=comment&op=edit&id=$comment->cid\" title=\"". t("Make changes to your comment.") ."\"><span style=\"color: $theme->type\">". t("edit your comment") ."</span></a>"; $links[] = "<a href=\"module.php?mod=comment&op=edit&id=$comment->cid\" title=\"". t("Make changes to your comment.") ."\"><span style=\"color: $theme->type\">". t("edit your comment") ."</span></a>";
...@@ -386,6 +400,7 @@ function comment_links($comment, $return = 1) { ...@@ -386,6 +400,7 @@ function comment_links($comment, $return = 1) {
$links[] = "<a href=\"module.php?mod=comment&op=reply&id=$comment->nid&pid=$comment->cid\" title=\"". t("Reply to this comment.") ."\"><span style=\"color: $theme->type;\">". t("reply to this comment") ."</span></a>"; $links[] = "<a href=\"module.php?mod=comment&op=reply&id=$comment->nid&pid=$comment->cid\" title=\"". t("Reply to this comment.") ."\"><span style=\"color: $theme->type;\">". t("reply to this comment") ."</span></a>";
} }
} }
//}
return $theme->links($links); return $theme->links($links);
...@@ -553,10 +568,10 @@ function comment_search($keys) { ...@@ -553,10 +568,10 @@ function comment_search($keys) {
// index. // index.
// //
// "select"'s value is used to relate the data from the specific nodes // "select"'s value is used to relate the data from the specific nodes
// table to the data that the search_index table has in it, and the the // table to the data that the search_index table has in it, and the the
// do_search functino will rank it. // do_search functino will rank it.
// //
// The select must always provide the following fields - lno, title, // The select must always provide the following fields - lno, title,
// created, uid, name, count // created, uid, name, count
// //
// The select statement may optionally provide "nid", which is a secondary // The select statement may optionally provide "nid", which is a secondary
...@@ -565,7 +580,7 @@ function comment_search($keys) { ...@@ -565,7 +580,7 @@ function comment_search($keys) {
$find = do_search(array("keys" => $keys, $find = do_search(array("keys" => $keys,
"type" => "comment", "type" => "comment",
"select" => "select s.lno as lno, c.nid as nid, c.subject as title, c.timestamp as created, u.uid as uid, u.name as name, s.count as count FROM search_index s, comments c LEFT JOIN users u ON c.uid = u.uid WHERE s.lno = c.cid AND s.type = 'comment' AND s.word like '%'")); "select" => "select s.lno as lno, c.nid as nid, c.subject as title, c.timestamp as created, u.uid as uid, u.name as name, s.count as count FROM search_index s, comments c LEFT JOIN users u ON c.uid = u.uid WHERE s.lno = c.cid AND s.type = 'comment' AND s.word like '%'"));
return $find; return $find;
} }
...@@ -597,11 +612,15 @@ function comment_link($type, $node = 0, $main = 0) { ...@@ -597,11 +612,15 @@ function comment_link($type, $node = 0, $main = 0) {
else { else {
/* /*
** Node page: add a "post comment" link if the user is allowed to ** Node page: add a "post comment" link if the user is allowed to
** post comments. ** post comments and if this node is not read-only
*/ */
if (user_access("post comments")) { if (user_access("post comments")) {
$links[] = "<a href=\"module.php?mod=comment&op=reply&id=$node->nid#comment\" title=\"". t("Share your thoughts and opinions related to this posting.") ."\">". t("add new comment") ."</a>"; if ($node->comment == 2) {
$links[] = "<a href=\"module.php?mod=comment&op=reply&id=$node->nid#comment\" title=\"". t("Share your thoughts and opinions related to this posting.") ."\">". t("add new comment") ."</a>";
} else {
$links[] = t("This discussion is closed: you can't post new comments.");
}
} }
} }
} }
...@@ -751,14 +770,14 @@ function comment_update_index() { ...@@ -751,14 +770,14 @@ function comment_update_index() {
// Return an array of values to dictate how to update the search index // Return an array of values to dictate how to update the search index
// for this particular type of node. // for this particular type of node.
// //
// "last_update"'s value is used with variable_set to set the // "last_update"'s value is used with variable_set to set the
// last time this node type (comment) had an index update run. // last time this node type (comment) had an index update run.
// //
// "node_type"'s value is used to identify the node type in the search // "node_type"'s value is used to identify the node type in the search
// index (commentt in this case). // index (commentt in this case).
// //
// "select"'s value is used to select the node id and text fields from // "select"'s value is used to select the node id and text fields from
// the table we are indexing. In this case, we also check against the // the table we are indexing. In this case, we also check against the
// last run date for the comments update. // last run date for the comments update.
return array("last_update" => "comment_cron_last", return array("last_update" => "comment_cron_last",
"node_type" => "comment", "node_type" => "comment",
......
...@@ -149,7 +149,7 @@ function node_save($node, $filter) { ...@@ -149,7 +149,7 @@ function node_save($node, $filter) {
$node->created = time(); $node->created = time();
$node->changed = time(); $node->changed = time();
$node->nid = db_result(db_query("SELECT MAX(nid) + 1 FROM node")); $node->nid = db_result(db_query("SELECT MAX(nid) + 1 FROM node"));
$node->nid = empty($node->nid) ? 1 : $node->nid; $node->nid = empty($node->nid) ? 1 : $node->nid;
// Prepare the query: // Prepare the query:
foreach ($node as $key => $value) { foreach ($node as $key => $value) {
...@@ -363,6 +363,10 @@ function node_filter_line($text) { ...@@ -363,6 +363,10 @@ function node_filter_line($text) {
return trim($text); return trim($text);
} }
function node_comment_mode($nid) {
return db_result(db_query("SELECT comment FROM node WHERE nid = '".check_query($nid)."'"));
}
function node_filter($text) { function node_filter($text) {
if (variable_get("filter_html", 0)) $text = node_filter_html($text); if (variable_get("filter_html", 0)) $text = node_filter_html($text);
if (variable_get("filter_link", 0)) $text = node_filter_link($text); if (variable_get("filter_link", 0)) $text = node_filter_link($text);
...@@ -867,7 +871,7 @@ function node_form($edit) { ...@@ -867,7 +871,7 @@ function node_form($edit) {
$output .= form_select(t("Queue for moderation"), "moderate", $edit->moderate, array("Disabled", "Enabled")); $output .= form_select(t("Queue for moderation"), "moderate", $edit->moderate, array("Disabled", "Enabled"));
$output .= form_select(t("Promote to front page"), "promote", $edit->promote, array("Disabled", "Enabled")); $output .= form_select(t("Promote to front page"), "promote", $edit->promote, array("Disabled", "Enabled"));
$output .= form_select(t("Static on front page"), "static", $edit->static, array("Disabled", "Enabled")); $output .= form_select(t("Static on front page"), "static", $edit->static, array("Disabled", "Enabled"));
$output .= form_select(t("Allow users comments"), "comment", $edit->comment, array("Disabled", "Enabled")); $output .= form_select(t("Allow users comments"), "comment", $edit->comment, array("Disabled", "Read only", "Read/Write"));
$output .= form_select(t("Create new revision"), "revision", $edit->revision, array("Disabled", "Enabled")); $output .= form_select(t("Create new revision"), "revision", $edit->revision, array("Disabled", "Enabled"));
} }
...@@ -985,9 +989,10 @@ function node_preview($node) { ...@@ -985,9 +989,10 @@ function node_preview($node) {
} }
function node_submit($node) { function node_submit($node) {
global $theme, $user; global $theme, $user, $tid;
if (user_access("post content")) { $context->tid = $tid;
if (user_access("post content", $context)) {
/* /*
** Fixup the node when required: ** Fixup the node when required:
...@@ -1024,6 +1029,12 @@ function node_submit($node) { ...@@ -1024,6 +1029,12 @@ function node_submit($node) {
$nid = node_save($node, array_merge($fields, module_invoke($node->type, "save", "update", $node))); $nid = node_save($node, array_merge($fields, module_invoke($node->type, "save", "update", $node)));
/*
** Update terms of the node
*/
taxonomy_node_save($nid, $node->taxonomy);