From 6f02738cc2ca88d01d541b9b81cc7cf860980c33 Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Wed, 16 May 2001 20:54:37 +0000 Subject: - Removed the "history"-field from the SQL table "users" and added this information to the "users"-field in both nodes and comments. This database/table change reduces the number of SQL queries and makes Drupal scale better where a lot of voting/moderation takes place. Last but not least it can be considered a new and better foundation for future moderation metrics / algorithms. In other words: it is plain better. --> oops, all voting/moderation results will be lost! --> requires database update, see "2.00-to-x.xx.sql"! - Updated database/database.mysql --- modules/account.module | 3 +-- modules/queue.module | 15 +++++++-------- 2 files changed, 8 insertions(+), 10 deletions(-) (limited to 'modules') diff --git a/modules/account.module b/modules/account.module index 5f77c995b..28faf1fe3 100644 --- a/modules/account.module +++ b/modules/account.module @@ -140,8 +140,7 @@ function account_delete($name) { function account_edit_save($name, $edit) { foreach ($edit as $key=>$value) if ($key != "access") $query .= "$key = '". addslashes($value) ."', "; db_query("UPDATE users SET $query access = '' WHERE userid = '$name'"); - if ($edit[access]) foreach ($edit[access] as $key=>$value) user_set(user_load($name), "access", $value, 1); - + if ($edit[access]) foreach ($edit[access] as $key=>$value) db_query("UPDATE users SET access = '". field_set(user_load($name), "access", $value, 1) ."'"); watchdog("message", "account: modified user '$name'"); } diff --git a/modules/queue.module b/modules/queue.module index 63278a0af..25daef56f 100644 --- a/modules/queue.module +++ b/modules/queue.module @@ -18,14 +18,13 @@ function queue_score($id) { function queue_vote($id, $vote) { global $status, $user; - if (!user_get($user, "history", "n$id")) { - // Update submission's score- and votes-field: - db_query("UPDATE node SET score = score $vote, votes = votes + 1 WHERE nid = $id"); + if ($node = node_get_object(nid, $id)) { - // Update user's history record: - $user = user_set($user, "history", "n$id", $vote); + if (!field_get($node, "users", $user->userid)) { + + // Update submission's score- and votes-field: + db_query("UPDATE node SET score = score $vote, votes = votes + 1, users = '". field_set($node, "users", $user->userid, $vote) ."' WHERE nid = $id"); - if ($node = node_get_object(nid, $id)) { if (variable_get("post_threshold", 4, $node) <= $node->score) { node_save(array(nid => $id, status => $status[posted]), array(status)); watchdog("message", "node: posted '$node->title' - moderation"); @@ -50,7 +49,7 @@ function queue_overview() { $content .= "\n"; $content .= " \n"; while ($node = db_fetch_object($result)) { - if ($user->id == $node->author || user_get($user, "history", "n$node->nid")) $content .= " \n"; + if ($user->id == $node->author || field_get($node, "users", $user->userid)) $content .= " \n"; else $content .= " \n"; } $content .= "
". t("Subject") ."". t("Author") ."". t("Type") ."". t("Score") ."
nid\">". check_output($node->title) ."". format_username($node->userid) ."". check_output($node->type) ."". queue_score($node->nid) ."
nid\">". check_output($node->title) ."". format_username($node->userid) ."". check_output($node->type) ."". queue_score($node->nid) ."
nid\">". check_output($node->title) ."". format_username($node->userid) ."". check_output($node->type) ."nid\">". t("vote") ."
\n"; @@ -66,7 +65,7 @@ function queue_node($id) { $node = node_get_object(nid, $id); - if ($user->id == $node->author || user_get($user, "history", "n$node->nid")) { + if ($user->id == $node->author || field_get($node, "users", $user->userid)) { header("Location: node.php?id=$node->nid"); } else { -- cgit v1.2.3