You are here

public function CourseViewBuilder::build in Course 8.3

Same name and namespace in other branches
  1. 8.2 src/View/CourseViewBuilder.php \Drupal\course\View\CourseViewBuilder::build()
  2. 3.x src/View/CourseViewBuilder.php \Drupal\course\View\CourseViewBuilder::build()

Builds an entity's view; augments entity defaults.

This function is assigned as a #pre_render callback in ::view().

It transforms the renderable array for a single entity to the same structure as if we were rendering multiple entities, and then calls the default ::buildMultiple() #pre_render callback.

Parameters

array $build: A renderable array containing build information and context for an entity view.

Return value

array The updated renderable array.

Overrides EntityViewBuilder::build

See also

\Drupal\Core\Render\RendererInterface::render()

File

src/View/CourseViewBuilder.php, line 13

Class

CourseViewBuilder

Namespace

Drupal\course\View

Code

public function build(array $build) {
  $build = parent::build($build);

  /* @var $course Course */
  $course = $build['#course'];
  $account = \Drupal::currentUser();
  $enrollment = $course
    ->getEnrollment($account);
  if ($enrollment && $enrollment->status) {

    // User is already in course. Check take access.
    $access = $course
      ->access('take', $account, TRUE);
  }
  else {

    // User not in course. Check enroll access.
    $access = $course
      ->access('enroll', $account, TRUE);
  }
  if (!$access
    ->isAllowed()) {
    $build['course_messages']['#markup'] = '<div class="course-restriction">' . "<h2>" . 'Access denied' . "</h2>" . '<div class="course-restriction-message">' . $access
      ->getReason() . '</div></div>';
  }
  else {

    // Render take course button.
    $build['course'] = [
      '#theme' => 'course_take_course_button',
      '#course' => $course,
    ];
  }
  return $build;
}