<?php

/**
 * @file
 * Contains materio_decoupled.module.
 */

use Drupal\Core\Routing\RouteMatchInterface;

/**
 * Implements hook_help().
 */
function materio_decoupled_help($route_name, RouteMatchInterface $route_match) {
  switch ($route_name) {
    // Main module help for the materio_decoupled module.
    case 'help.page.materio_decoupled':
      $output = '';
      $output .= '<h3>' . t('About') . '</h3>';
      $output .= '<p>' . t('helpers for progressive decoupling') . '</p>';
      return $output;

    default:
  }
}


/**
 * Implements hook_page_attachments().
 * @param array $attachments
 */
function materio_decoupled_page_attachments(array &$attachments) {
  $current_path = \Drupal::service('path.current')->getPath();
  $route_name = \Drupal::routeMatch()->getRouteName();
  // $route_parameters = \Drupal::routeMatch()->getParameters()->all();
  // ksm($route_parameters);
  $current_language = \Drupal::languageManager()->getCurrentLanguage()->getId();
  $is_front = \Drupal::service('path.matcher')->isFrontPage();

  $entity_type = null;
  $entity_bundle = null;
  $entity_id = null;
  $entity_uuid = null;
  foreach (['node', 'taxonomy_term'] as $type) {
    $entity = \Drupal::routeMatch()->getParameter($type);
    if($entity){
      $entity_type = $type;
      $entity_bundle = $entity->bundle();
      $entity_id = $entity->id();
      $entity_uuid = $entity->uuid();
      break;
    }
  }

  // route_parameters:'".json_encode($route_parameters)."',\n
  $js_str = "var drupalDecoupled = {\n
    sys_path:'".$current_path."',\n
    route_name:'".$route_name."',\n
    is_front:".($is_front ? 'true':'false').",\n
    lang_code:'".$current_language."',\n
    entity_type:'".$entity_type."',\n
    entity_bundle:'".$entity_bundle."',\n
    entity_id:'".$entity_id."',\n
    entity_uuid:'".$entity_uuid."',\n
  };";

  $attachments['#attached']['html_head'][] = [
    [
      '#type' => 'html_tag',
      '#tag' => 'script',
      '#value' => $js_str,
      '#weight' => -999,
      '#group' => 'decoupled'
    ],
    // A key, to make it possible to recognize this HTML  element when altering.
    'decoupled',
  ];
}