diff -urNP realname.orig/realname.module realname/realname.module --- realname.orig/realname.module 2009-10-13 21:48:06.000000000 +0400 +++ realname/realname.module 2009-10-19 10:36:37.000000000 +0400 @@ -695,14 +695,16 @@ // Check static cache first. if (isset($users[$account->uid])) { - $account->homepage = isset($links[$account->uid]) ? $links[$account->uid] : NULL; + //$account->homepage = isset($links[$account->uid]) ? $links[$account->uid] : NULL; return $users[$account->uid]; } $result = _realname_make_name($account); if (empty($result)) { + $users[$account->uid] = $account->name; return $account->name; } + $users[$account->uid] = $result; if (!db_result(db_query("SELECT uid FROM {realname} WHERE uid=%d", $account->uid))) { db_query("INSERT INTO {realname} (uid, realname) VALUES(%d, '%s')", $account->uid, $result); } diff -urNP realname.orig/realname_theme.inc realname/realname_theme.inc --- realname.orig/realname_theme.inc 2009-10-01 19:25:11.000000000 +0400 +++ realname/realname_theme.inc 2009-10-19 10:41:38.000000000 +0400 @@ -30,6 +30,7 @@ */ function realname_username($object, $options = array()) { static $roles = array(); + static $user_roles = array(); $defaults = array( 'plain' => FALSE, @@ -63,9 +64,15 @@ // If there are no roles in this object (e.g. a node), go get them. if (!isset($object->roles)) { $object->roles = array(); - $result = db_query("SELECT r.rid, r.name FROM {users_roles} ur JOIN {role} r USING(rid) WHERE uid=%d", $object->uid); - while ($row = db_fetch_object($result)) { - $object->roles[$row->rid] = $row->name; + if (isset($user_roles[$object->uid])) { + $object->roles = $user_roles[$object->uid]; + } + else { + $result = db_query("SELECT r.rid, r.name FROM {users_roles} ur JOIN {role} r USING(rid) WHERE uid=%d", $object->uid); + while ($row = db_fetch_object($result)) { + $object->roles[$row->rid] = $row->name; + } + $user_roles[$object->uid] = $object->roles; } } // Format user levels here.