moderation_note-8.x-1.0-beta3/src/Plugin/EntityReferenceSelection/ModerationNoteUserSelection.php
src/Plugin/EntityReferenceSelection/ModerationNoteUserSelection.php
<?php
namespace Drupal\moderation_note\Plugin\EntityReferenceSelection;
use Drupal\Core\Entity\Plugin\EntityReferenceSelection\PhpSelection;
use Drupal\user\Entity\User;
/**
* A selection handler that only returns users with access to Moderation Notes.
*
* @EntityReferenceSelection(
* id = "moderation_note:user",
* label = @Translation("Select users who can access moderation notes"),
* group = "moderation_note",
* entity_types = {"user"},
* weight = 1,
* base_plugin_label = "Moderation Note: Filtered user selection"
* )
*/
class ModerationNoteUserSelection extends PhpSelection {
/**
* {@inheritdoc}
*/
public function getReferenceableEntities($match = NULL, $match_operator = 'CONTAINS', $limit = 0) {
$options = parent::getReferenceableEntities($match, $match_operator, $limit);
$filtered_options = [];
foreach ($options as $bundle => &$items) {
foreach ($items as $entity_id => $label) {
$user = User::load($entity_id);
if ($user && $user->hasPermission('access moderation notes')) {
$filtered_options[$bundle][$entity_id] = $label;
}
}
}
return $filtered_options;
}
}
