summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/node/node.module5
-rw-r--r--modules/user/user.module21
2 files changed, 21 insertions, 5 deletions
diff --git a/modules/node/node.module b/modules/node/node.module
index c190d2609..0473b1b65 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -842,7 +842,6 @@ function node_load_multiple($nids = array(), $conditions = array(), $reset = FAL
else {
$query->join('node_revision', 'r', 'r.vid = n.vid');
}
- $query->join('users', 'u', 'u.uid = n.uid');
// Add fields from the {node} table.
$node_fields = drupal_schema_fields_sql('node');
@@ -863,10 +862,6 @@ function node_load_multiple($nids = array(), $conditions = array(), $reset = FAL
$query->addField('r', 'timestamp', 'revision_timestamp');
$query->fields('r', $node_revision_fields);
- // Add fields from the {users} table.
- $user_fields = array('name', 'picture', 'data');
- $query->fields('u', $user_fields);
-
if ($nids) {
$query->condition('n.nid', $nids, 'IN');
}
diff --git a/modules/user/user.module b/modules/user/user.module
index b0186c2bf..460d6858e 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -2673,6 +2673,27 @@ function _user_password_dynamic_validation() {
}
/**
+ * Implementation of hook_node_load().
+ */
+function user_node_load($nodes, $types) {
+ // Build an array of all uids for node authors, keyed by nid.
+ $uids = array();
+ foreach ($nodes as $nid => $node) {
+ $uids[$nid] = $node->uid;
+ }
+
+ // Fetch name, picture, and data for these users.
+ $user_fields = db_query("SELECT uid, name, picture, data FROM {users} WHERE uid IN (:uids)", array(':uids' => $uids))->fetchAllAssoc('uid');
+
+ // Add these values back into the node objects.
+ foreach ($uids as $nid => $uid) {
+ $nodes[$nid]->name = $user_fields[$uid]->name;
+ $nodes[$nid]->picture = $user_fields[$uid]->picture;
+ $nodes[$nid]->data = $user_fields[$uid]->data;
+ }
+}
+
+/**
* Implement hook_hook_info().
*/
function user_hook_info() {