public function LocalTasks::getDerivativeDefinitions in RNG - Events and Registrations 3.x
Same name in this branch
- 3.x src/Plugin/Derivative/LocalTasks.php \Drupal\rng\Plugin\Derivative\LocalTasks::getDerivativeDefinitions()
 - 3.x rng_debug/src/Plugin/Derivative/LocalTasks.php \Drupal\rng_debug\Plugin\Derivative\LocalTasks::getDerivativeDefinitions()
 
Same name and namespace in other branches
- 8.2 src/Plugin/Derivative/LocalTasks.php \Drupal\rng\Plugin\Derivative\LocalTasks::getDerivativeDefinitions()
 - 8 src/Plugin/Derivative/LocalTasks.php \Drupal\rng\Plugin\Derivative\LocalTasks::getDerivativeDefinitions()
 
Gets the definition of all derivatives of a base plugin.
Parameters
array $base_plugin_definition: The definition array of the base plugin.
Return value
array An array of full derivative definitions keyed on derivative id.
Overrides DeriverBase::getDerivativeDefinitions
See also
getDerivativeDefinition()
File
- src/
Plugin/ Derivative/ LocalTasks.php, line 69  
Class
- LocalTasks
 - Provides dynamic tasks for RNG.
 
Namespace
Drupal\rng\Plugin\DerivativeCode
public function getDerivativeDefinitions($base_plugin_definition) {
  $this->derivatives = [];
  /** @var \Drupal\rng\Entity\RngEventType[] $event_types */
  foreach ($this->eventManager
    ->getEventTypes() as $entity_type => $event_types) {
    $cache_tags = $this->entityManager
      ->getDefinition($entity_type)
      ->getListCacheTags();
    foreach ($event_types as $event_type) {
      $cache_tags = Cache::mergeTags($cache_tags, $event_type
        ->getCacheTags());
    }
    // Only need one set of tasks task per entity type.
    if ($this->routeProvider
      ->getRouteByName("entity.{$entity_type}.canonical")) {
      $event_default = "rng.event.{$entity_type}.event.default";
      $this->derivatives[$event_default] = [
        'title' => t('Event', [], [
          'context' => 'rng',
        ]),
        'base_route' => "entity.{$entity_type}.canonical",
        'route_name' => "rng.event.{$entity_type}.event",
        'weight' => 30,
        'cache_tags' => $cache_tags,
      ];
      $this->derivatives["rng.event.{$entity_type}.register.type_list"] = [
        'route_name' => "rng.event.{$entity_type}.register.type_list",
        'base_route' => "entity.{$entity_type}.canonical",
        'title' => t('Register', [], [
          'context' => 'rng',
        ]),
        'weight' => 40,
        'cache_tags' => $cache_tags,
      ];
      $this->derivatives["rng.event.{$entity_type}.register"] = [
        'route_name' => "rng.event.{$entity_type}.register",
        'parent_id' => 'rng.local_tasks:' . "rng.event.{$entity_type}.register.type_list",
        'title' => t('Register', [], [
          'context' => 'rng',
        ]),
        'weight' => 40,
        'cache_tags' => $cache_tags,
      ];
      $this->derivatives["rng.event.{$entity_type}.event.settings"] = [
        'title' => t('Settings'),
        'route_name' => $this->derivatives[$event_default]['route_name'],
        'parent_id' => 'rng.local_tasks:' . $event_default,
        'weight' => -100,
        'cache_tags' => $cache_tags,
      ];
      $this->derivatives["rng.event.{$entity_type}.event.access"] = [
        'title' => t('Access'),
        'route_name' => "rng.event.{$entity_type}.access",
        'parent_id' => 'rng.local_tasks:' . $event_default,
        'weight' => -80,
        'cache_tags' => $cache_tags,
      ];
      $this->derivatives["rng.event.{$entity_type}.event.messages"] = [
        'title' => t('Messages'),
        'route_name' => "rng.event.{$entity_type}.messages",
        'parent_id' => 'rng.local_tasks:' . $event_default,
        'weight' => 100,
        'cache_tags' => $cache_tags,
      ];
      $this->derivatives["rng.event.{$entity_type}.event.group.list"] = [
        'title' => t('Groups', [], [
          'context' => 'rng',
        ]),
        'route_name' => "rng.event.{$entity_type}.group.list",
        'parent_id' => 'rng.local_tasks:' . $event_default,
        'weight' => 150,
        'cache_tags' => $cache_tags,
      ];
    }
  }
  foreach ($this->derivatives as &$entry) {
    $entry += $base_plugin_definition;
  }
  return parent::getDerivativeDefinitions($base_plugin_definition);
}