function olark_check_role_access in Olark Chat 6
Same name and namespace in other branches
- 7 olark.module \olark_check_role_access()
Method which checks whether or not current user contains a role which would restrict display of Olark Chat
Return value
Bool TRUE if user can view Olark Chat. FALSE if user is prevented from seeing Olark Chat
2 calls to olark_check_role_access()
- olark_footer in ./olark.module 
- Implements hook_footer().
- olark_init in ./olark.module 
- Implements hook_init().
File
- ./olark.module, line 28 
- Integrates Olark Chat in a Drupal site.
Code
function olark_check_role_access() {
  //check to see if current user has access to view Olark Chat
  global $user;
  //create a bool with value set to TRUE for if statement down below on whether to display Olark Chat
  $display_olark_chat = TRUE;
  //obtain the list from the settings page, and call array_unique to remove duplicate 0's, and obtain only the array_values
  $olark_ignore_user_roles = array_unique(variable_get('olark_ignore_user_roles', array()));
  if (count($olark_ignore_user_roles) > 0) {
    $olark_ignore_user_roles = array_flip($olark_ignore_user_roles);
    //check to see if key 0 is set, which is not a rid, but a result of array_unique
    if (isset($olark_ignore_user_roles[0])) {
      //unset the key to reduce load on foreach
      unset($olark_ignore_user_roles[0]);
    }
    //check to make sure that there is at least one rid that should be ignored to save resources
    //access all of the user roles to see if one of their roles in is in the disallowed list
    foreach ($user->roles as $rid => $role) {
      if (in_array($rid, $olark_ignore_user_roles)) {
        //a rid that should ignore Olark Chat has been found. Setting bool to FALSE and breaking out
        $display_olark_chat = FALSE;
        break;
      }
    }
  }
  //return the result
  return $display_olark_chat;
}