You are here

public function ReviewsController::reviews in Reviews 1.0.x

Returns a renderable array for the reviews page of a node.

1 string reference to 'ReviewsController::reviews'
reviews.routing.yml in ./reviews.routing.yml
reviews.routing.yml

File

src/Controller/ReviewsController.php, line 38

Class

ReviewsController
Controller for our dynamic tab.

Namespace

Drupal\reviews\Controller

Code

public function reviews(NodeInterface $node) {

  // Get the config for the reviews module, we need the sort order.
  $config = \Drupal::config('reviews.settings');
  $sort = $config
    ->get('reviews.sort_order') === 'newest' ? 'desc' : 'asc';

  // Get review entities for the given node.
  $review_ids = \Drupal::entityQuery('review')
    ->condition('node_id', $node
    ->id(), '=')
    ->condition('status', 1)
    ->sort('created', $sort)
    ->execute();
  if (!empty($review_ids)) {
    $entityTypeManager = ControllerBase::entityTypeManager();
    $reviews = $entityTypeManager
      ->getStorage('review')
      ->loadMultiple($review_ids);
    $view_builder = $entityTypeManager
      ->getViewBuilder('review');
    $build = [];
    foreach ($reviews as $key => $review) {
      $view = $view_builder
        ->view($review);
      $build['review_' . uniqid()] = $view;
    }
  }
  else {
    $build = [
      '#theme' => 'no_reviews',
    ];
  }
  $build['#attached']['library'][] = 'reviews/reviews';
  return $build;
}