whitelabel-8.x-2.x-dev/tests/modules/whitelabel_test/src/Controller/WhiteLabelTestController.php

tests/modules/whitelabel_test/src/Controller/WhiteLabelTestController.php
<?php

namespace Drupal\whitelabel_test\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\whitelabel\WhiteLabelProviderInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Controller for switching white label via URL. Used for testing.
 *
 * @package Drupal\whitelabel_test\Controller
 */
class WhiteLabelTestController extends ControllerBase {

  /**
   * Holds the white label provider.
   *
   * @var \Drupal\whitelabel\WhiteLabelProviderInterface
   */
  protected $whiteLabelProvider;

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected $entityTypeManager;

  /**
   * WhiteLabelPathProcessor constructor.
   *
   * @param \Drupal\whitelabel\WhiteLabelProviderInterface $white_label_provider
   *   The white label provider.
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The entity type manager.
   */
  public function __construct(WhiteLabelProviderInterface $white_label_provider, EntityTypeManagerInterface $entity_type_manager) {
    $this->whiteLabelProvider = $white_label_provider;
    $this->entityTypeManager = $entity_type_manager;

    // Initialize config factory.
    $negotiation_config = $this->config('whitelabel.negotiation');
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    return new static(
      $container->get('whitelabel.whitelabel_provider'),
      $container->get('entity_type.manager'),
    );
  }

  /**
   * Sets the white label to the white label of the provided token.
   *
   * @param string $test_value
   *   The value to set.
   *
   * @return array
   *   A render array.
   */
  public function set($test_value) {
    $negotiation_config = $this->configFactory->getEditable('whitelabel.negotiation');
    $negotiation_config->set('negotiator_settings.url.enabled', FALSE);

    $negotiation_config->set('negotiator_settings.fixed.enabled', TRUE);
    $negotiation_config->set('negotiator_settings.fixed.weight', -10);
    $negotiation_config->set('negotiator_settings.fixed.settings.whitelabel_id', 0);

    if ($test_value) {
      if ($test_value === 'reset') {
        $negotiation_config->set('negotiator_settings.fixed.settings.whitelabel_id', 0);
        $this->whiteLabelProvider->resetWhiteLabel();
      }

      /** @var \Drupal\whitelabel\Entity\WhiteLabelInterface[] $whitelabels */
      if ($whitelabels = $this->entityTypeManager->getStorage('whitelabel')->loadByProperties(['token' => $test_value])) {
        $first = reset($whitelabels);
        $this->whiteLabelProvider->setWhiteLabel($first);
        $negotiation_config->set('negotiator_settings.fixed.settings.whitelabel_id', $first->id());
      }
    }

    $negotiation_config->save();

    return ['#markup' => $this->t('The current value of the stored session variable has been set to %val', ['%val' => $test_value])];
  }

}

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

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