whitelabel-8.x-2.x-dev/src/Resolver/WhiteLabelStoreResolver.php

src/Resolver/WhiteLabelStoreResolver.php
<?php

namespace Drupal\whitelabel\Resolver;

use Drupal\commerce_store\Resolver\StoreResolverInterface;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\whitelabel\WhiteLabelProviderInterface;

/**
 * Returns the store for the owning user of an active White label.
 */
class WhiteLabelStoreResolver implements StoreResolverInterface {

  /**
   * The store storage.
   *
   * @var \Drupal\commerce_store\StoreStorageInterface
   */
  protected $storage;

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

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

  /**
   * Constructs a new WhiteLabelStoreResolver object.
   *
   * @param \Drupal\whitelabel\WhiteLabelProviderInterface $white_label_provider
   *   The white label provider.
   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
   *   The configuration factory.
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The entity type manager.
   *
   * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
   * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
   */
  public function __construct(WhiteLabelProviderInterface $white_label_provider, ConfigFactoryInterface $config_factory, EntityTypeManagerInterface $entity_type_manager) {
    $this->whiteLabelProvider = $white_label_provider;
    $this->configFactory = $config_factory;
    $this->storage = $entity_type_manager->getStorage('commerce_store');
  }

  /**
   * {@inheritdoc}
   */
  public function resolve() {
    // This resolver can be enabled in the white label settings.
    $enabled = $this->configFactory->get('whitelabel.settings')->get('store_resolver');

    if ($enabled && $whitelabel = $this->whiteLabelProvider->getWhiteLabel()) {
      $uid = $whitelabel->getOwnerId();

      /** @var \Drupal\commerce_store\Entity\StoreInterface[] $user_stores */
      $user_stores = $this->storage->loadByProperties(['uid' => $uid]);

      if ($user_stores) {
        // Return the first.
        return reset($user_stores);
      }
    }
  }

}

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

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