You are here

public function CourseBookEventSubscriber::onRequest in Course 8.2

Same name and namespace in other branches
  1. 8.3 modules/course_book/src/EventSubscriber/CourseBookEventSubscriber.php \Drupal\course_book\EventSubscriber\CourseBookEventSubscriber::onRequest()
  2. 3.x modules/course_book/src/EventSubscriber/CourseBookEventSubscriber.php \Drupal\course_book\EventSubscriber\CourseBookEventSubscriber::onRequest()

If the current node is a course object, fulfill it for the current user.

Parameters

GetResponseEvent $event:

File

modules/course_book/src/EventSubscriber/CourseBookEventSubscriber.php, line 25

Class

CourseBookEventSubscriber

Namespace

Drupal\course_book\EventSubscriber

Code

public function onRequest(GetResponseEvent $event) {
  $route_match = Drupal::routeMatch();
  if ($route_match
    ->getRouteName() == 'entity.node.canonical') {
    $node = $route_match
      ->getParameter('node');
    $account = Drupal::currentUser();
    $type = $node
      ->bundle();
    if (book_type_is_allowed($type)) {
      $search = !empty($node->book['bid']) ? $node->book['bid'] : $node
        ->id();
      if ($courseObject = course_get_course_object('book', $search)) {
        $options = array();

        // Mark this node as fulfillment in course_book's fulfillment tracking.
        if (!empty($node->book['nid'])) {
          $options['book_fulfillment'][$node->book['nid']] = TRUE;
          $courseObject
            ->getFulfillment($account)
            ->addOptions($options)
            ->save();
        }

        // "Grade" the book based on previous book page views.
        $courseObject
          ->grade($account);
      }
    }
  }
}