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])];
}
}
