Index: realname.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/realname/realname.module,v retrieving revision 1.4.4.36 diff -u -r1.4.4.36 realname.module --- realname.module 27 Feb 2009 23:09:11 -0000 1.4.4.36 +++ realname.module 3 Mar 2009 18:14:22 -0000 @@ -262,10 +249,10 @@ // Save the username that is already there. $node->realname_save = $node->name; if (!isset($accounts[$node->uid])) { - $accounts[$node->uid] = user_load(array('uid' => $node->uid)); + $accounts[$node->uid] = realname_get_user($node->uid); } $account = $accounts[$node->uid]; - $node->realname = $node->name = realname_make_name($account); + $node->realname = $node->name = $account->name; $node->homepage = isset($account->homepage) ? $account->homepage : NULL; break; @@ -283,11 +270,17 @@ * Implementation of hook_comment(). */ function realname_comment(&$comment, $op) { + static $users = array(); switch ($op) { case 'view': if (!$comment->homepage) { - $account = user_load(array('uid' => $comment->uid)); - realname_make_name($account); + if (isset($users[$comment->uid])) { + $account = $users[$comment->uid]; + } + else { + $users[$comment->uid] = $account = realname_get_user($comment->uid); + } + $comment->homepage = isset($account->homepage) ? $account->homepage : NULL; } break; @@ -325,7 +318,7 @@ if ($form_id == $bypass['name']) { $field_name = '$form[\''. implode("']['", $bypass['fields']) ."']['#default_value']"; if (!isset($user->realname)) { - $user = user_load(array('uid' => $user->uid)); + $user->realname = realname_make_name($user); } $value = $user->uid ? $user->realname_save : variable_get('anonymous', 'Anonymous'); eval($field_name .' = $value;'); @@ -341,14 +334,14 @@ case 'contact_mail_user': if (!isset($user->realname)) { - $user = user_load(array('uid' => $user->uid)); + $user->realname = realname_make_name($user); } $form['from']['#value'] = check_plain($user->realname) .' <'. check_plain($user->mail) .'>'; break; case 'contact_mail_page': if (!isset($user->realname)) { - $user = user_load(array('uid' => $user->uid)); + $user->realname = realname_make_name($user); } $form['name']['#default_value'] = $user->uid ? $user->realname : ''; break; @@ -444,7 +442,7 @@ } if ($homepage && $account->$homepage) { - $links[$account->uid] = $account->homepage = $account->$homepage; + $links[$account->uid] = $account->$homepage; } $string = trim(strtr($pattern, $stuff)); @@ -481,7 +479,18 @@ } /** + * Helper to replace user_load() and be much faster. + */ +function realname_get_user($uid) { + $result = db_query("SELECT uid, name, mail FROM {users} WHERE uid=%d", $uid); + $account = db_fetch_object($result); + $account->name = realname_make_name($account); + return $account; +} + +/** * Displays the admin settings form. + * @TODO: move this admin stuff to separate file. */ function realname_admin_settings() { return drupal_get_form('realname_admin_fields');