function profile2_access in Profile 2 7
Same name and namespace in other branches
- 7.2 profile2.module \profile2_access()
Determines whether the given user has access to a profile.
Parameters
$op: The operation being performed. One of 'view', 'update', 'create', 'delete' or just 'edit' (being the same as 'create' or 'update').
$profile: (optional) A profile to check access for. If nothing is given, access for all profiles is determined.
$account: The user to check for. Leave it to NULL to check for the global user.
Return value
boolean Whether access is allowed or not.
See also
5 calls to profile2_access()
- Profile2CRUDTestCase::testAccess in ./
profile2.test - Tests optional access parameters.
- profile2_category_access in ./
profile2.module - Menu item access callback - check if a user has access to a profile category.
- profile2_delete_access in ./
profile2.module - Determines whether the given user has access to delete a profile.
- profile2_page_menu_local_tasks_alter in contrib/
profile2_page.module - Implements hook_menu_local_tasks_alter().
- profile2_user_view in ./
profile2.module - Implements hook_user_view().
3 string references to 'profile2_access'
- profile2_entity_info in ./
profile2.module - Implements hook_entity_info().
- profile2_menu in ./
profile2.module - Implements hook_menu().
- profile2_page_menu in contrib/
profile2_page.module - Implements hook_menu().
File
- ./
profile2.module, line 800 - Support for configurable user profiles.
Code
function profile2_access($op, $profile = NULL, $account = NULL) {
// Check if profile user has current profile available by role.
if (isset($profile) && !profile2_role_access($profile)) {
return FALSE;
}
// With access to all profiles there is no need to check further.
if (user_access('administer profiles', $account)) {
return TRUE;
}
if ($op == 'create' || $op == 'update') {
$op = 'edit';
}
// Allow modules to grant / deny access.
$access = module_invoke_all('profile2_access', $op, $profile, $account);
// Only grant access if at least one module granted access and no one denied
// access.
if (in_array(FALSE, $access, TRUE)) {
return FALSE;
}
elseif (in_array(TRUE, $access, TRUE)) {
return TRUE;
}
return FALSE;
}