You are here

CourseViewBuilder.php in Course 8.3

Same filename and directory in other branches
  1. 8.2 src/View/CourseViewBuilder.php
  2. 3.x src/View/CourseViewBuilder.php

Namespace

Drupal\course\View

File

src/View/CourseViewBuilder.php
View source
<?php

namespace Drupal\course\View;

use Drupal;
use Drupal\Component\Utility\Html;
use Drupal\Core\Entity\EntityViewBuilder;
use Drupal\Core\Link;
use Drupal\course\Entity\Course;
class CourseViewBuilder extends EntityViewBuilder {
  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;
  }

}

Classes

Namesort descending Description
CourseViewBuilder