You are here

class DisplayModeIdDeriver in GraphQL 8.3

Hierarchy

Expanded class hierarchy of DisplayModeIdDeriver

File

modules/graphql_core/src/Plugin/Deriver/Enums/DisplayModeIdDeriver.php, line 13

Namespace

Drupal\graphql_core\Plugin\Deriver\Enums
View source
class DisplayModeIdDeriver extends DeriverBase implements ContainerDeriverInterface {
  use StringTranslationTrait;

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

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

  /**
   * DisplayModeIdDeriver constructor.
   *
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager
   *   The entity type manager service.
   */
  public function __construct(EntityTypeManagerInterface $entityTypeManager) {
    $this->entityTypeManager = $entityTypeManager;
  }

  /**
   * {@inheritdoc}
   */
  public function getDerivativeDefinitions($basePluginDefinition) {
    foreach ($this
      ->getDisplayModes() as $targetType => $displayModes) {
      $this->derivatives[$targetType] = [
        'name' => StringHelper::camelCase($targetType, 'display', 'mode', 'id'),
        'description' => $this
          ->t("The available display modes for '@type' entities.", [
          '@type' => $this->entityTypeManager
            ->getDefinition($targetType)
            ->getLabel(),
        ]),
        'values' => $displayModes,
      ] + $basePluginDefinition;
    }
    return parent::getDerivativeDefinitions($basePluginDefinition);
  }

  /**
   * Retrieves a list of entity view modes grouped by their target type.
   *
   * @return array
   *   The list of entity view modes grouped by the target entity type.
   */
  protected function getDisplayModes() {
    $storage = $this->entityTypeManager
      ->getStorage('entity_view_mode');
    return array_reduce($storage
      ->loadMultiple(), function ($carry, EntityViewModeInterface $current) {
      $target = $current
        ->getTargetType();
      list(, $id) = explode('.', $current
        ->id());
      $carry[$target][StringHelper::upperCase($id)] = [
        'value' => $id,
        'description' => $this
          ->t("The '@label' display mode for '@type' entities.", [
          '@label' => $current
            ->label(),
          '@type' => $this->entityTypeManager
            ->getDefinition($target)
            ->getLabel(),
        ]),
      ];
      return $carry;
    }, []);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DeriverBase::$derivatives protected property List of derivative definitions. 1
DeriverBase::getDerivativeDefinition public function Gets the definition of a derivative plugin. Overrides DeriverInterface::getDerivativeDefinition
DisplayModeIdDeriver::$entityTypeManager protected property Entity type manager.
DisplayModeIdDeriver::create public static function Creates a new class instance. Overrides ContainerDeriverInterface::create
DisplayModeIdDeriver::getDerivativeDefinitions public function Gets the definition of all derivatives of a base plugin. Overrides DeriverBase::getDerivativeDefinitions
DisplayModeIdDeriver::getDisplayModes protected function Retrieves a list of entity view modes grouped by their target type.
DisplayModeIdDeriver::__construct public function DisplayModeIdDeriver constructor.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.