You are here

function user_role_field_field_access in User role field 7

File

./user_role_field.module, line 32

Code

function user_role_field_field_access($op, $field, $obj_type, $object, $account) {

  // We only handle user fields and profile2 fields
  if ($obj_type != 'user' && $obj_type != 'profile2') {
    return true;
  }

  // Admin user can see all fields when creating a new user.
  if (arg(2) == 'create' && arg(0) == 'admin' && user_access('administer permissions')) {
    return true;
  }

  // If the object type is profile2, we need to load the user owning profile2 object
  if ($obj_type == 'profile2' && !empty($object->uid)) {
    $object = user_load($object->uid);
  }

  // Ignore the request if roles have not been enabled for this field.
  $roles = _user_role_field_roles($field);
  if (empty($roles)) {
    return true;
  }

  // If the user object doesn't have the roles property, we get here through
  // the views module for example. In that case we want the data to display.
  // To revisit in case there are other cases.
  if (!isset($object->roles)) {
    return true;
  }
  $matching_roles = array_intersect_key($object->roles, $roles);
  return !empty($matching_roles);
}