$user->roles+=db_query("SELECT r.rid, r.name FROM {role} r INNER JOIN {users_roles} ur ON ur.rid = r.rid WHERE ur.uid = :uid",array(':uid'=>$user->uid))->fetchAllKeyed(0,1);
}
// We didn't find the client's record (session has expired), or they are
// blocked, or they are an anonymous user.
elseif($user){
// The user is anonymous or blocked. Only preserve two fields from the
// {sessions} table.
$account=drupal_anonymous_user();
$account->session=$user->session;
$account->timestamp=$user->timestamp;
$user=$account;
}
else{
$session=isset($user->session)?$user->session:'';
$user=drupal_anonymous_user($session);
// The session has expired.
$user=drupal_anonymous_user();
$user->session='';
}
// Store the session that was read for comparison in _drupal_session_write().