Custom Drupal functie: user_has_role()

Snel even checken of een gebruiker rol X heeft kan met de volgende functie (te plaatsen in een custom module of eventueel in template.php).

function user_has_role($role, $user = NULL) {
  if(!$user) {
    global $user;
  }  
  if($role && in_array($role, $user->roles)) {
    return TRUE;
  }
  return FALSE;
}

Om na te gaan of de momenteel ingelogde gebruiker de rol van beheerder heeft, kun je nu vanuit elke plaats aanroepen:

if(user_has_role('beheerder')) {
  // Doe iets...
}

Om voor een andere dan de momenteel ingelogde gebruiker hetzelfde te doen, werkt:

$someUser = user_load($nid);
if(user_has_role('beheerder', $someUser)) {
  // Doe iets...
}

Een plaats waar dit bijvoorbeeld van pas kan komen is in template_preprocess_html() in template.php om voorwaardelijk de rol van de huidige gebruiker toe te voegen aan de body classes:

function THEMENAME_preprocess_html(&$vars) {
  if(user_has_role('administrator')) {
    $vars['classes_array'][] = "is_administrator";
  }
}