<?php

/**
 * @file
 * Contains heartbeat.page.inc.
 *
 * Page callback for Heartbeat entities.
 */

use Drupal\Core\Render\Element;

/**
 * Prepares variables for Heartbeat templates.
 *
 * Default template: heartbeat.html.twig.
 *
 * @param array $variables
 *   An associative array containing:
 *   - elements: An associative array containing the user information and any
 *   - attributes: HTML attributes for the containing element.
 */
function template_preprocess_heartbeat(array &$variables) {
  // Fetch Heartbeat Entity Object.
  $entity = $variables['elements']['#heartbeat'];

  if ($entity->getEntityType() == 'heartbeat' && $entity->isPublished()) {
    $node = \Drupal::entityTypeManager()
      ->getStorage('node')
      ->load($entity->getNid()->getValue()[0]['target_id']);

    if ($node !== null) {
      $renderedNode = \Drupal::entityTypeManager()->getViewBuilder('node')->view($node, 'full');
      $variables['content']['node'] = $renderedNode;
    }
  }
    // Helpful $content variable for templates.
    foreach (Element::children($variables['elements']) as $key) {
      $variables['content'][$key] = $variables['elements'][$key];
    }

}