blizz_vanisher-8.x-1.x-dev/src/Controller/LanguageJsController.php

src/Controller/LanguageJsController.php
<?php

namespace Drupal\blizz_vanisher\Controller;

use Drupal\blizz_vanisher\Form\LanguageSettingsForm;
use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\HttpFoundation\Response;

/**
 * Provides a listing of third Party Service entities.
 *
 * @package Drupal\blizz_vanisher\Controller
 */
class LanguageJsController extends ControllerBase {

  /**
   *
   */
  public function getRouteAction($langcode) {
    // Todo.
    $language_manager = \Drupal::service('language_manager');
    $language = $language_manager->getLanguage($langcode);
    $original_language = $language_manager->getConfigOverrideLanguage();
    $language_manager->setConfigOverrideLanguage($language);
    $config = \Drupal::config(LanguageSettingsForm::SETTINGS_NAME);
    $values = $config->get();
    $language_manager->setConfigOverrideLanguage($original_language);

    unset($values['langcode']);
    $json_string = json_encode($values);

    $response = new Response('tarteaucitron.lang =' . $json_string, 200, ['Content-Type' => 'application/javascript']);
    return $response;
  }

  /**
   *
   */
  public function getServiceRoute() {
    $service_data = [];

    $services = \Drupal::entityTypeManager()
      ->getStorage('third_party_service')
      ->loadByProperties(['enabled' => TRUE]);

    $thirdparty = \Drupal::service('blizz_vanisher.service.third_party_services_vanisher');

    foreach ($services as $service) {

      if (!$thirdparty->hasVanisher($service->getVanisher())) {
        // TODO: Log warning.
        continue;
      }

      $vanisher_name = $service->getVanisher();
      $vanisher_id = $vanisher_name . '.' . $service->getId();

      // The vanished script.
      $vanisher = $thirdparty->getVanisher($vanisher_name);
      if ($vanisher) {
        $service_element = [];
        $service_element["key"] = $vanisher->getVanisherName();
        $service_element["type"] = $service->getGroupType();
        $service_element["name"] = $service->getName();
        $service_element["description"] = $service->getDescription();
        $service_element["read_more"] = $service->getReadMore();
        $service_element["uri"] = $service->getLinkToOfficialWebsite();
        $service_element["needConsent"] = (boolean) $service->needConsent();
        $service_element["cookies"] = $vanisher->getCookies();
        if ($vanisher->getFallbackJavascript() !== '') {
          $service_element["fallback"] = "<$".$vanisher->getVanisherName()."==>";
        }
        $service_element["js"] = "<!".$vanisher->getVanisherName()."==>";
        $service_data[$vanisher->getVanisherName()] = $service_element;
        $service_vanisher[$vanisher->getVanisherName()] = $vanisher;
      }
    }

    $json_string = json_encode($service_data);

    foreach ($service_data as $vanisher_name => $service) {
      $json_string = str_replace('"<!' . $vanisher_name . '==>"',  $service_vanisher[$vanisher_name]->getJavascript(), $json_string);
      $json_string = str_replace('"<$' . $vanisher_name . '==>"', $service_vanisher[$vanisher_name]->getFallbackJavascript(), $json_string);
    }
    $response = new Response('    tarteaucitron.services =' . $json_string, 200, ['Content-Type' => 'application/javascript']);
    return $response;

  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc