lupus_decoupled-1.x-dev/modules/lupus_decoupled_ce_api/src/LupusDecoupledPreviewProviderFactory.php

modules/lupus_decoupled_ce_api/src/LupusDecoupledPreviewProviderFactory.php
<?php

namespace Drupal\lupus_decoupled_ce_api;

use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\custom_elements\PreviewProvider\CustomElementsPreviewProviderInterface;
use Drupal\custom_elements\PreviewProvider\CustomElementsPreviewProviderManager;

/**
 * Factory for creating the configured preview provider service.
 */
class LupusDecoupledPreviewProviderFactory {

  /**
   * The config factory.
   *
   * @var \Drupal\Core\Config\ConfigFactoryInterface
   */
  protected $configFactory;

  /**
   * The preview provider plugin manager.
   *
   * @var \Drupal\custom_elements\PreviewProvider\CustomElementsPreviewProviderManager
   */
  protected $previewProviderManager;

  /**
   * The base URL provider.
   *
   * @var \Drupal\lupus_decoupled_ce_api\BaseUrlProvider
   */
  protected $baseUrlProvider;

  /**
   * Constructs a LupusDecoupledPreviewProviderFactory.
   *
   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
   *   The config factory.
   * @param \Drupal\custom_elements\PreviewProvider\CustomElementsPreviewProviderManager $preview_provider_manager
   *   The preview provider plugin manager.
   * @param \Drupal\lupus_decoupled_ce_api\BaseUrlProvider $base_url_provider
   *   The base URL provider.
   */
  public function __construct(ConfigFactoryInterface $config_factory, CustomElementsPreviewProviderManager $preview_provider_manager, BaseUrlProvider $base_url_provider) {
    $this->configFactory = $config_factory;
    $this->previewProviderManager = $preview_provider_manager;
    $this->baseUrlProvider = $base_url_provider;
  }

  /**
   * Creates the configured preview provider.
   *
   * @return \Drupal\custom_elements\PreviewProvider\CustomElementsPreviewProviderInterface
   *   The preview provider instance.
   */
  public function create(): CustomElementsPreviewProviderInterface {
    $settings = $this->configFactory->get('lupus_decoupled_ce_api.settings');
    $preview_provider_id = $settings->get('preview_provider') ?? 'markup';

    /** @var \Drupal\custom_elements\PreviewProvider\CustomElementsPreviewProviderInterface $provider */
    $provider = $this->previewProviderManager->createInstance($preview_provider_id);

    // Set base URL from the base URL provider.
    $base_url = $this->baseUrlProvider->getFrontendBaseUrl();
    $provider->setBaseUrl($base_url);

    return $provider;
  }

}

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

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