danse_moderation_notifications-1.0.x-dev/src/Plugin/DanseRecipientSelection/TransitionEntityDeriver.php
src/Plugin/DanseRecipientSelection/TransitionEntityDeriver.php
<?php
namespace Drupal\danse_moderation_notifications\Plugin\DanseRecipientSelection;
use Drupal\Component\Plugin\Derivative\DeriverBase;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\user\Entity\Role;
use Drupal\user\RoleInterface;
/**
* Deriver for DANSE recipient plugins for each entity.
*/
class TransitionEntityDeriver extends DeriverBase {
use StringTranslationTrait;
/**
* {@inheritdoc}
*/
public function getDerivativeDefinitions($base_plugin_definition): array {
$this->derivatives = [];
$entity_type_id = 'danse_moderation_notifications';
$entity_type = \Drupal::entityTypeManager()->getDefinition($entity_type_id);
$entity_storage = \Drupal::entityTypeManager()->getStorage($entity_type_id);
// Load all entities.
$entities = $entity_storage->loadMultiple();
foreach ($entities as $entity) {
// Customize this according to your entity structure.
$label = $entity->label();
$this->derivatives[$entity->id()] = [
'entity_id' => $entity->id(),
'label' => $this->t('Entity @label', ['@label' => $label]),
'description' => t('Selects users associated with entity %label.', ['%label' => $label]),
] + $base_plugin_definition;
}
return $this->derivatives;
}
}
