You are here

public function SocialCommentLazyRenderer::renderComments in Open Social 8.9

Same name and namespace in other branches
  1. 10.3.x modules/social_features/social_comment/src/SocialCommentLazyRenderer.php \Drupal\social_comment\SocialCommentLazyRenderer::renderComments()
  2. 10.0.x modules/social_features/social_comment/src/SocialCommentLazyRenderer.php \Drupal\social_comment\SocialCommentLazyRenderer::renderComments()
  3. 10.1.x modules/social_features/social_comment/src/SocialCommentLazyRenderer.php \Drupal\social_comment\SocialCommentLazyRenderer::renderComments()
  4. 10.2.x modules/social_features/social_comment/src/SocialCommentLazyRenderer.php \Drupal\social_comment\SocialCommentLazyRenderer::renderComments()

Render comments for lazy builder.

Parameters

string $entity_type: The entity type.

string|int $entity_id: The entity id.

string $view_mode: The view mode from field settings.

string $field_name: The field name.

string|int|null $num_comments: The number of comments.

int $pager_id: Pager id to use in case of multiple pagers on the one page.

Return value

mixed The render array.

Throws

\Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException

\Drupal\Component\Plugin\Exception\PluginNotFoundException

File

modules/social_features/social_comment/src/SocialCommentLazyRenderer.php, line 54

Class

SocialCommentLazyRenderer
Class SocialCommentLazyRenderer.

Namespace

Drupal\social_comment

Code

public function renderComments($entity_type, $entity_id, $view_mode, $field_name, $num_comments, $pager_id) {

  /** @var \Drupal\Core\Entity\EntityInterface $entity */
  $entity = $this->entityTypeManager
    ->getStorage($entity_type)
    ->load($entity_id);

  /** @var \Drupal\comment\CommentInterface[] $comments */
  $comments = $this->entityTypeManager
    ->getStorage('comment')
    ->loadThread($entity, $field_name, $view_mode, $num_comments, $pager_id);
  if (!$comments) {
    return [];
  }
  $build_comments = $this->entityTypeManager
    ->getViewBuilder('comment')
    ->viewMultiple($comments);

  // Since we are rendering it as lazy builder, make sure we attach classes
  // required by ajax_comments. In order to render reply forms etc.
  if (!empty($build_comments) && \Drupal::moduleHandler()
    ->moduleExists('ajax_comments')) {
    Utility::addCommentClasses($build_comments);
  }
  return $build_comments;
}