diff --git a/includes/node.inc b/includes/node.inc index ebbec9ca9353688b432f47d8054ae19ea9fabd80..f84b2eb45fdfd878d94c6225b4e26174c6191f27 100644 --- a/includes/node.inc +++ b/includes/node.inc @@ -3,10 +3,14 @@ $status = array(dumped => 0, expired => 1, queued => 2, posted => 3); $rstatus = array(0 => dumped, 1 => expired, 2 => queued, 3 => posted); -function _node_get($field, $value) { - $result = db_query("SELECT lid, type FROM node WHERE $field = '$value'"); +function _node_get($conditions) { + foreach ($conditions as $key => $value) { + $where[] = "$key = '$value'"; + $nwhere[] = "n.$key = '$value'"; + } + $result = db_query("SELECT lid, type FROM node WHERE " . implode(", ", $where)); if ($node = db_fetch_object($result)) { - return db_query("SELECT n.*, l.*, u.userid FROM node n LEFT JOIN $node->type l ON n.lid = l.lid AND n.nid = l.nid LEFT JOIN users u ON n.author = u.id WHERE n.$field = '$value' ORDER BY n.timestamp DESC"); + return db_query("SELECT n.*, l.*, u.userid FROM node n LEFT JOIN $node->type l ON n.lid = l.lid AND n.nid = l.nid LEFT JOIN users u ON n.author = u.id WHERE " . implode(", ", $nwhere) . " ORDER BY n.timestamp DESC"); } } @@ -25,18 +29,19 @@ function node_submission_status($index = -1) { return $index < 0 ? $status : $status[$index]; } -function node_get_object($field, $value) { - return db_fetch_object(_node_get($field, $value)); +function node_get_object($conditions) { + return db_fetch_object(_node_get($conditions)); } -function node_get_array($field, $value) { - return db_fetch_array(_node_get($field, $value)); +function node_get_array($conditions) { + return db_fetch_array(_node_get($conditions)); } -function node_del($field, $value) { +function node_del($conditions) { global $status; - if ($node = node_get_object($field, $value)) { + if ($node = node_get_object($conditions)) { if ($node->status == $status[dumped]) { + module_invoke($node->type, "delete", $node); db_query("DELETE FROM node WHERE nid = '$node->nid'"); db_query("DELETE FROM $node->type WHERE lid = '$node->lid' AND nid = '$node->nid'"); db_query("DELETE FROM comments WHERE lid = '$node->nid'"); @@ -57,7 +62,7 @@ function node_save($node, $filter) { $rows = array(nid, pid, lid, cid, tid, log, type, title, score, votes, author, status, comment, promote, moderate, timestamp); if ($node[nid] > 0) { - $n = node_get_object("nid", $node[nid]); + $n = node_get_object(array("nid" => $node[nid])); $u1 = array(); $u2 = array(); @@ -82,7 +87,7 @@ function node_save($node, $filter) { return $node[nid]; } else { - $duplicate = node_get_object("title", $node[title]); + $duplicate = node_get_object(array("title" => $node[title])); if ($duplicate && (time() - $duplicate->timestamp < 60)) { watchdog("warning", "node: duplicate '$node[title]'"); diff --git a/index.php b/index.php index 781dca5767adc77f07397d6a9fe6e50199ceef38..01adbb45927e56d7e72be708cfd554cdad241207 100644 --- a/index.php +++ b/index.php @@ -17,7 +17,7 @@ $theme->header(); while ($node = db_fetch_object($result)) { - node_view(node_get_object("nid", $node->nid), 1); + node_view(node_get_object(array("nid" => $node->nid)), 1); } $theme->footer(); diff --git a/modules/book.module b/modules/book.module index c46e7cd0d135dc703fed09e602683665e8a070e5..757b63a03f2ebe72b0a77c4b155c7d61b9d0d7fa 100644 --- a/modules/book.module +++ b/modules/book.module @@ -109,7 +109,7 @@ function book_form($edit = array()) { $form .= form_item(t("Category"), category_form_select("book", $edit)); if ($edit[pid]) { - $node = node_get_object("nid", $edit[pid]); + $node = node_get_object(array("nid" => $edit[pid])); $form .= form_item(t("Parent"), "<A HREF=\"node.php?id=$node->id\">". check_output($node->title) ."</A>", t("The parent subject or category the page belongs in.")); $form .= form_hidden("parent", $edit[parent]); } @@ -157,7 +157,7 @@ function book_save($edit) { function book_parent($nid) { global $status; - if ($node = node_get_object("nid", $nid)) { + if ($node = node_get_object(array("nid" => $nid))) { $list[$nid] = $nid; } if ($node->pid) { @@ -205,7 +205,7 @@ function book_admin() { print book_form(); break; case "edit": - print book_form(node_get_array(nid, $id)); + print book_form(node_get_array(array(nid => $id))); break; case "listing": print node_listing(book_query()); @@ -246,7 +246,7 @@ function book_page() { function book_update($id) { global $status; - if ($node = node_get_object("nid", $id)) { + if ($node = node_get_object(array("nid" => $id))) { if ($node->status != $status[posted]) { return t("You can only update accepted pages: pages that are still queued or already expired can not be updated."); } diff --git a/modules/book/book.module b/modules/book/book.module index c46e7cd0d135dc703fed09e602683665e8a070e5..757b63a03f2ebe72b0a77c4b155c7d61b9d0d7fa 100644 --- a/modules/book/book.module +++ b/modules/book/book.module @@ -109,7 +109,7 @@ function book_form($edit = array()) { $form .= form_item(t("Category"), category_form_select("book", $edit)); if ($edit[pid]) { - $node = node_get_object("nid", $edit[pid]); + $node = node_get_object(array("nid" => $edit[pid])); $form .= form_item(t("Parent"), "<A HREF=\"node.php?id=$node->id\">". check_output($node->title) ."</A>", t("The parent subject or category the page belongs in.")); $form .= form_hidden("parent", $edit[parent]); } @@ -157,7 +157,7 @@ function book_save($edit) { function book_parent($nid) { global $status; - if ($node = node_get_object("nid", $nid)) { + if ($node = node_get_object(array("nid" => $nid))) { $list[$nid] = $nid; } if ($node->pid) { @@ -205,7 +205,7 @@ function book_admin() { print book_form(); break; case "edit": - print book_form(node_get_array(nid, $id)); + print book_form(node_get_array(array(nid => $id))); break; case "listing": print node_listing(book_query()); @@ -246,7 +246,7 @@ function book_page() { function book_update($id) { global $status; - if ($node = node_get_object("nid", $id)) { + if ($node = node_get_object(array("nid" => $id))) { if ($node->status != $status[posted]) { return t("You can only update accepted pages: pages that are still queued or already expired can not be updated."); } diff --git a/modules/forum.module b/modules/forum.module index 8e3693f5f422bc59ebde87ad5852ded281cb8c46..031f8834b98c9d836f3f47cc3091df14ad50ce1b 100644 --- a/modules/forum.module +++ b/modules/forum.module @@ -48,7 +48,7 @@ function forum_page() { $output .= "<TABLE BORDER=\"0\" CELLSPACING=\"4\" CELLPADDING=\"4\">\n"; $output .= " <TR><TH>". t("Forum") ."</TH><TH>". t("Comments") ."</TH><TH>". t("Last comment") ."</TH><TH>". t("Moderators") ."</TH></TR>"; while ($node = db_fetch_object($result)) { - $node = node_get_object("nid", $node->nid); + $node = node_get_object(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><TD ALIGN=\"center\"><SMALL>". check_output($node->moderate) ."</SMALL></TD></TR>"; } $output .= "</TABLE>\n"; @@ -72,7 +72,7 @@ function forum_admin() { print forum_form(); break; case "edit": - print forum_form(node_get_array(nid, $id)); + print forum_form(node_get_array(array(nid => $id))); break; case t("Submit"): print status(forum_save($edit)); diff --git a/modules/forum/forum.module b/modules/forum/forum.module index 8e3693f5f422bc59ebde87ad5852ded281cb8c46..031f8834b98c9d836f3f47cc3091df14ad50ce1b 100644 --- a/modules/forum/forum.module +++ b/modules/forum/forum.module @@ -48,7 +48,7 @@ function forum_page() { $output .= "<TABLE BORDER=\"0\" CELLSPACING=\"4\" CELLPADDING=\"4\">\n"; $output .= " <TR><TH>". t("Forum") ."</TH><TH>". t("Comments") ."</TH><TH>". t("Last comment") ."</TH><TH>". t("Moderators") ."</TH></TR>"; while ($node = db_fetch_object($result)) { - $node = node_get_object("nid", $node->nid); + $node = node_get_object(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><TD ALIGN=\"center\"><SMALL>". check_output($node->moderate) ."</SMALL></TD></TR>"; } $output .= "</TABLE>\n"; @@ -72,7 +72,7 @@ function forum_admin() { print forum_form(); break; case "edit": - print forum_form(node_get_array(nid, $id)); + print forum_form(node_get_array(array(nid => $id))); break; case t("Submit"): print status(forum_save($edit)); diff --git a/modules/moderate.module b/modules/moderate.module index 821a588ca24d4c3db3e882b9736040e6a930f9e2..c284df52214273ad0648d626ca8b64de571904a0 100644 --- a/modules/moderate.module +++ b/modules/moderate.module @@ -31,7 +31,7 @@ function moderate_overview($query = array()) { function moderate_node($edit, $name) { global $user; - $node = node_get_array("nid", $edit[nid]); + $node = node_get_array(array("nid" => $edit[nid])); if ($node && strstr($node[moderate], $user->userid)) { $edit[type] = $node[type]; return node_invoke($edit, $name); @@ -86,7 +86,7 @@ function moderate_admin() { default: switch ($op) { case "edit": - print moderate_node_edit(node_get_array("nid", $id)); + print moderate_node_edit(node_get_array(array("nid" => $id))); break; case t("Preview"): print moderate_node_edit($edit); diff --git a/modules/node.module b/modules/node.module index 98b6482ef70fd24fec74de01912e324c54223a3a..33142a45421a8a7070581a029f0062cc1a342a9a 100644 --- a/modules/node.module +++ b/modules/node.module @@ -56,7 +56,7 @@ function node_overview($query = array()) { } function node_admin_view($id) { - $node = node_get_object("nid", $id); + $node = node_get_object(array("nid" => $id)); $form .= form_item("Title", check_output($node->title)); $form .= form_item("Author", format_username($node->userid)); @@ -74,7 +74,7 @@ function node_admin_view($id) { function node_admin_edit($id) { global $user; - $node = node_get_object("nid", $id); + $node = node_get_object(array("nid" => $id)); $form .= form_item("Title", check_output($node->title)); $form .= form_select("Author", "author", $node->author, array($node->author => $node->userid, $user->id => $user->userid)); diff --git a/modules/node/node.module b/modules/node/node.module index 98b6482ef70fd24fec74de01912e324c54223a3a..33142a45421a8a7070581a029f0062cc1a342a9a 100644 --- a/modules/node/node.module +++ b/modules/node/node.module @@ -56,7 +56,7 @@ function node_overview($query = array()) { } function node_admin_view($id) { - $node = node_get_object("nid", $id); + $node = node_get_object(array("nid" => $id)); $form .= form_item("Title", check_output($node->title)); $form .= form_item("Author", format_username($node->userid)); @@ -74,7 +74,7 @@ function node_admin_view($id) { function node_admin_edit($id) { global $user; - $node = node_get_object("nid", $id); + $node = node_get_object(array("nid" => $id)); $form .= form_item("Title", check_output($node->title)); $form .= form_select("Author", "author", $node->author, array($node->author => $node->userid, $user->id => $user->userid)); diff --git a/modules/page.module b/modules/page.module index 39ab6f63be872257cf394341ee3047d8d230e245..f9e59ed722347bbb09e8773b1cc625d55c8d8cfa 100644 --- a/modules/page.module +++ b/modules/page.module @@ -66,7 +66,7 @@ function page_admin() { print page_form(); break; case "edit": - print page_form(node_get_array(nid, $id)); + print page_form(node_get_array(array(nid => $id))); break; case "listing": print node_listing(page_query()); diff --git a/modules/page/page.module b/modules/page/page.module index 39ab6f63be872257cf394341ee3047d8d230e245..f9e59ed722347bbb09e8773b1cc625d55c8d8cfa 100644 --- a/modules/page/page.module +++ b/modules/page/page.module @@ -66,7 +66,7 @@ function page_admin() { print page_form(); break; case "edit": - print page_form(node_get_array(nid, $id)); + print page_form(node_get_array(array(nid => $id))); break; case "listing": print node_listing(page_query()); diff --git a/modules/poll.module b/modules/poll.module index 06661ba511b398e7522a505a02f2db408072e468..db40538be7141a039ad4a3da1d202e038a3f1e0b 100644 --- a/modules/poll.module +++ b/modules/poll.module @@ -13,12 +13,12 @@ function Poll($poll) { } function poll_cron() { - $result = _node_get("type", "poll"); + $result = _node_get(array("type" => "poll")); while ($poll = db_fetch_array($result)) { if ($poll[active]) { if (($poll[timestamp] + $poll[runtime]) < time()) { $poll[active] = 0; - node_save($poll, array(filter)); + node_save($poll, array(active)); } } } @@ -98,10 +98,10 @@ function poll_view($node, $main = 0, $block = 0) { if (($node->active) && (!field_get($node->voters, $user->userid))) { $result = db_query("UPDATE poll_choices SET chvotes=chvotes+1 WHERE nid='" . $node->nid . "' && chid='" . check_input($chid) . "'"); if (($result) && ($user)) { - $new = node_get_array("nid", $node->nid); + $new = node_get_array(array("nid" => $node->nid)); $new[voters] = field_set($node->voters, $user->userid,1); node_save($new, array(voters)); - $node = node_get_object("nid", $node->nid); + $node = node_get_object(array("nid" => $node->nid)); } } @@ -228,10 +228,7 @@ function poll_save($edit) { } function poll_block() { - $result = _node_get("type", "poll"); - while ($poll = db_fetch_object($result)) { - if ($poll->active) break; - } + $poll = node_get_object(array("type" => "poll", "active" => 1)); if ($poll) { $poll = poll_view($poll, 0, 1); $output = "<b>" . $poll[title] . "</b><br>" . $poll[content]; @@ -266,7 +263,7 @@ function poll_admin() { print poll_overview(poll_query($type)); break; case "edit": - print poll_form(poll_get_choices_array(node_get_array("nid", check_input($id)))); + print poll_form(poll_get_choices_array(node_get_array(array("nid" => check_input($id))))); break; case "help": poll_help(); diff --git a/modules/poll/poll.module b/modules/poll/poll.module index 06661ba511b398e7522a505a02f2db408072e468..db40538be7141a039ad4a3da1d202e038a3f1e0b 100644 --- a/modules/poll/poll.module +++ b/modules/poll/poll.module @@ -13,12 +13,12 @@ function Poll($poll) { } function poll_cron() { - $result = _node_get("type", "poll"); + $result = _node_get(array("type" => "poll")); while ($poll = db_fetch_array($result)) { if ($poll[active]) { if (($poll[timestamp] + $poll[runtime]) < time()) { $poll[active] = 0; - node_save($poll, array(filter)); + node_save($poll, array(active)); } } } @@ -98,10 +98,10 @@ function poll_view($node, $main = 0, $block = 0) { if (($node->active) && (!field_get($node->voters, $user->userid))) { $result = db_query("UPDATE poll_choices SET chvotes=chvotes+1 WHERE nid='" . $node->nid . "' && chid='" . check_input($chid) . "'"); if (($result) && ($user)) { - $new = node_get_array("nid", $node->nid); + $new = node_get_array(array("nid" => $node->nid)); $new[voters] = field_set($node->voters, $user->userid,1); node_save($new, array(voters)); - $node = node_get_object("nid", $node->nid); + $node = node_get_object(array("nid" => $node->nid)); } } @@ -228,10 +228,7 @@ function poll_save($edit) { } function poll_block() { - $result = _node_get("type", "poll"); - while ($poll = db_fetch_object($result)) { - if ($poll->active) break; - } + $poll = node_get_object(array("type" => "poll", "active" => 1)); if ($poll) { $poll = poll_view($poll, 0, 1); $output = "<b>" . $poll[title] . "</b><br>" . $poll[content]; @@ -266,7 +263,7 @@ function poll_admin() { print poll_overview(poll_query($type)); break; case "edit": - print poll_form(poll_get_choices_array(node_get_array("nid", check_input($id)))); + print poll_form(poll_get_choices_array(node_get_array(array("nid" => check_input($id))))); break; case "help": poll_help(); diff --git a/modules/queue.module b/modules/queue.module index bf4cb7cc2ce765570e60c4ea67cd08d6d92a75b1..f609561c09bc89ab1e4763d67828c665962c8bab 100644 --- a/modules/queue.module +++ b/modules/queue.module @@ -18,7 +18,7 @@ function queue_score($id) { function queue_vote($id, $vote) { global $status, $user; - if ($node = node_get_object(nid, $id)) { + if ($node = node_get_object(array(nid => $id))) { if (!field_get($node->users, $user->userid)) { @@ -63,7 +63,7 @@ function queue_node($id) { global $theme, $user; - $node = node_get_object(nid, $id); + $node = node_get_object(array(nid => $id)); if ($user->id == $node->author || field_get($node->users, $user->userid)) { header("Location: node.php?id=$node->nid"); @@ -72,7 +72,7 @@ function queue_node($id) { $queue_votes = array("neutral (+0)" => "+ 0", "post it (+1)" => "+ 1", "dump it (-1)" => "- 1"); // The keys of this associative array are displayed in each submission's selection box whereas the corresponding values represent the mathematical calculation to be performed to update a comment's value. - if ($n = node_get_object("nid", $node->pid)) { + if ($n = node_get_object(array("nid" => $node->pid))) { $output .= " ". t("The above node is a proposed update of an existing node:") ." \"<A HREF=\"node.php?id=$n->nid\">". check_output($n->title) ."</A>\"."; } diff --git a/modules/story.module b/modules/story.module index 935f0ca931f8a5a902b1360249b1b5e8ed718751..637a4613aa5836967dcac6e5e750d91597ec5208 100644 --- a/modules/story.module +++ b/modules/story.module @@ -135,7 +135,7 @@ function story_admin() { print story_overview(story_query($type)); break; case "edit": - print story_form(node_get_array("nid", check_input($id))); + print story_form(node_get_array(array("nid" => check_input($id)))); break; case "help": story_help(); diff --git a/modules/story/story.module b/modules/story/story.module index 935f0ca931f8a5a902b1360249b1b5e8ed718751..637a4613aa5836967dcac6e5e750d91597ec5208 100644 --- a/modules/story/story.module +++ b/modules/story/story.module @@ -135,7 +135,7 @@ function story_admin() { print story_overview(story_query($type)); break; case "edit": - print story_form(node_get_array("nid", check_input($id))); + print story_form(node_get_array(array("nid" => check_input($id)))); break; case "help": story_help(); diff --git a/node.php b/node.php index 09534383fefaaf896c386eb410c014c373f593e4..58bddd3d2d398b54f716f616096e1c852a15bf0c 100644 --- a/node.php +++ b/node.php @@ -72,7 +72,7 @@ function node_history($node) { $output .= "<DT><B>". format_date($node->timestamp) ." by ". format_username($node->userid) .":</B></DT><DD>". check_output($node->log, 1) ."<P></DD>"; } if ($node->pid) { - $output .= node_history(node_get_object("nid", $node->pid)); + $output .= node_history(node_get_object(array("nid" => $node->pid))); } return $output; } @@ -93,7 +93,7 @@ function node_history($node) { $theme->footer(); } elseif ($number) { - $node = ($title ? node_get_object(title, check_input($title)) : node_get_object(nid, check_input($id))); + $node = ($title ? node_get_object(array("title" => check_input($title))) : node_get_object(nid, check_input($id))); if ($node && node_visible($node)) { switch ($op) { case "history":