X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fentity%2Fsrc%2FPlugin%2FDerivative%2FEntityActionsDeriver.php;fp=web%2Fmodules%2Fcontrib%2Fentity%2Fsrc%2FPlugin%2FDerivative%2FEntityActionsDeriver.php;h=568ad7e872be801b1f16067ab5bacef5535b45b4;hp=0000000000000000000000000000000000000000;hb=f3baf763d342a5f82576890e2a8111a5aaf139dc;hpb=059867c3f96750652c80f39e44c442a58c2549ee diff --git a/web/modules/contrib/entity/src/Plugin/Derivative/EntityActionsDeriver.php b/web/modules/contrib/entity/src/Plugin/Derivative/EntityActionsDeriver.php new file mode 100644 index 000000000..568ad7e87 --- /dev/null +++ b/web/modules/contrib/entity/src/Plugin/Derivative/EntityActionsDeriver.php @@ -0,0 +1,58 @@ +entityTypeManager = $entity_type_manager; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, $base_plugin_id) { + return new static($container->get('entity_type.manager')); + } + + /** + * {@inheritdoc} + */ + public function getDerivativeDefinitions($base_plugin_definition) { + if (!$this->derivatives) { + foreach ($this->entityTypeManager->getDefinitions() as $entity_type_id => $entity_type) { + $handlers = $entity_type->getHandlerClasses(); + if (isset($handlers['local_action_provider'])) { + foreach ($handlers['local_action_provider'] as $class) { + /** @var \Drupal\entity\Menu\EntityLocalActionProviderInterface $handler */ + $handler = $this->entityTypeManager->createHandlerInstance($class, $entity_type); + $this->derivatives += $handler->buildLocalActions($entity_type); + } + } + } + } + return $this->derivatives; + } + +}