You are here

function course_entity_field_access in Course 3.x

Same name and namespace in other branches
  1. 8.3 course.module \course_entity_field_access()
  2. 8.2 course.module \course_entity_field_access()

Implements hook_entity_field_access().

Don't show the user fields that weren't marked as enrollment fields.

File

./course.module, line 881
course.module Core functionality for Courses.

Code

function course_entity_field_access($operation, FieldDefinitionInterface $field_definition, AccountInterface $account, FieldItemListInterface $items = NULL) {
  if ($operation == 'edit' && $field_definition
    ->getTargetEntityTypeId() == 'course_enrollment') {
    if (is_a($field_definition, FieldConfig::class)) {

      /* @var $field_definition FieldConfig */
      if (!$field_definition
        ->getThirdPartySetting('course', 'show_field')) {
        return AccessResult::forbidden('enrollment_user_field');
      }
    }
    elseif (!$account
      ->hasPermission('administer course enrollments')) {

      // Hide fields like timestamp, status, etc.
      return AccessResultForbidden::forbidden();
    }
  }
  return AccessResult::neutral();
}