You are here

protected function PluggableSchemaDeriver::buildSubscriptionMap in GraphQL 8.3

Builds an optimized representation of all registered subscriptions.

Parameters

\Drupal\graphql\Plugin\SubscriptionPluginManager $manager: The subscription plugin manager.

Return value

array The optimized list of all registered subscriptions.

1 call to PluggableSchemaDeriver::buildSubscriptionMap()
PluggableSchemaDeriver::getDerivativeDefinitions in src/Plugin/Deriver/PluggableSchemaDeriver.php
Gets the definition of all derivatives of a base plugin.

File

src/Plugin/Deriver/PluggableSchemaDeriver.php, line 424

Class

PluggableSchemaDeriver

Namespace

Drupal\graphql\Plugin\Deriver

Code

protected function buildSubscriptionMap(SubscriptionPluginManager $manager) {
  $definitions = $manager
    ->getDefinitions();
  $subscriptions = array_reduce(array_keys($definitions), function ($carry, $id) use ($definitions) {
    $current = $definitions[$id];
    $name = $current['name'];
    if (empty($carry[$name]) || $carry[$name]['weight'] < $current['weight']) {
      $carry[$name] = [
        'id' => $id,
        'class' => $current['class'],
        'weight' => !empty($current['weight']) ? $current['weight'] : 0,
      ];
    }
    return $carry;
  }, []);
  return array_map(function ($definition) use ($manager) {
    $id = $definition['id'];
    $instance = $manager
      ->getInstance([
      'id' => $id,
    ]);
    return [
      'definition' => $instance
        ->getDefinition(),
    ] + $definition;
  }, $subscriptions);
}