You are here

function crm_core_activity_access in CRM Core 7

Access callback for activity.

3 calls to crm_core_activity_access()
crm_core_activity_crm_core_activity_view_access_check in modules/crm_core_activity/plugins/tasks/crm_core_activity_view.inc
Callback to determine if a page is accessible.
crm_core_activity_file_download_access in modules/crm_core_activity/crm_core_activity.module
Implements hook_file_download_access().
_crm_core_activity_resource_access in modules/crm_core_activity/includes/crm_core_activity_resource.inc
Determine whether the current user can access a crm_core_activity resource.
1 string reference to 'crm_core_activity_access'
crm_core_activity_entity_info in modules/crm_core_activity/crm_core_activity.module
Implements hook_entity_info().

File

modules/crm_core_activity/crm_core_activity.module, line 188
Provides an entity for recording a contact's activities.

Code

function crm_core_activity_access($op, $activity, $account = NULL, $entity_type = NULL) {
  if (!isset($account)) {
    $account = $GLOBALS['user'];
  }
  if (is_object($activity)) {
    $activity_type = $activity->type;
  }
  else {
    $activity_type = $activity;
  }

  // First grant access to the entity for the specified operation if no other
  // module denies it and at least one other module says to grant access.
  $access_results = module_invoke_all('crm_core_entity_access', $op, $activity, $account, $entity_type);
  if (in_array(FALSE, $access_results, TRUE)) {
    return FALSE;
  }
  elseif (in_array(TRUE, $access_results, TRUE)) {
    return TRUE;
  }
  switch ($op) {
    case 'create':
      return user_access('administer crm_core_activity entities', $account) || user_access('create crm_core_activity entities', $account) || user_access('create crm_core_activity entities of bundle ' . $activity_type, $account);
    case 'view':
      return user_access('administer crm_core_activity entities', $account) || user_access('view any crm_core_activity entity', $account) || user_access('view any crm_core_activity entity of bundle ' . $activity_type, $account);
    case 'edit':
    case 'update':
      return user_access('administer crm_core_activity entities', $account) || user_access('edit any crm_core_activity entity', $account) || user_access('edit any crm_core_activity entity of bundle ' . $activity_type);
    case 'delete':
      return user_access('administer crm_core_activity entities', $account) || user_access('delete any crm_core_activity entity', $account) || user_access('delete any crm_core_activity entity of bundle ' . $activity_type);
    case 'create_view':

      // Check if user has access permission to a view with create activity links.
      if (user_access('administer crm_core_activity entities', $account) || user_access('create crm_core_activity entities', $account)) {
        return TRUE;
      }

      // Allow access if account has create permissions for any crm core activity type.
      foreach (array_keys(crm_core_activity_types()) as $type) {
        if (entity_access('create', 'crm_core_activity', $type, $account)) {
          return TRUE;
        }
      }
      return FALSE;
  }
}