class CommentSelection in Comment Permissions 8
Overrides CommentSelection plugin.
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginBase implements ConfigurableInterface, ConfigurablePluginInterface, DependentPluginInterface, SelectionInterface
- class \Drupal\Core\Entity\Plugin\EntityReferenceSelection\DefaultSelection implements SelectionWithAutocreateInterface, ContainerFactoryPluginInterface uses DeprecatedServicePropertyTrait
- class \Drupal\comment\Plugin\EntityReferenceSelection\CommentSelection
- class \Drupal\comment_perm\Plugin\EntityReferenceSelection\CommentSelection uses CommentAccessTrait
- class \Drupal\comment\Plugin\EntityReferenceSelection\CommentSelection
- class \Drupal\Core\Entity\Plugin\EntityReferenceSelection\DefaultSelection implements SelectionWithAutocreateInterface, ContainerFactoryPluginInterface uses DeprecatedServicePropertyTrait
- class \Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginBase implements ConfigurableInterface, ConfigurablePluginInterface, DependentPluginInterface, SelectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of CommentSelection
File
- src/
Plugin/ EntityReferenceSelection/ CommentSelection.php, line 12
Namespace
Drupal\comment_perm\Plugin\EntityReferenceSelectionView source
class CommentSelection extends CommentSelectionBase {
use CommentAccessTrait;
/**
* {@inheritdoc}
*/
protected function buildEntityQuery($match = NULL, $match_operator = 'CONTAINS') {
$query = parent::buildEntityQuery($match, $match_operator);
// Adding the 'comment_access' tag is sadly insufficient for comments:
// core requires us to also know about the concept of 'published' and
// 'unpublished'.
if ($this
->userHasAdminPerm()) {
// Add specific tag to alter query later and remove status condition.
$query
->addTag('comment_perm_access');
}
else {
$query
->condition('status', CommentInterface::PUBLISHED);
}
return $query;
}
/**
* {@inheritdoc}
*/
public function validateReferenceableNewEntities(array $entities) {
// Default selection validation by bundle.
$entities = array_filter($entities, function ($entity) {
$target_bundles = $this
->getConfiguration()['target_bundles'];
if (isset($target_bundles)) {
return in_array($entity
->bundle(), $target_bundles);
}
return TRUE;
});
// Mirror the conditions checked in buildEntityQuery().
if (!$this
->userHasAdminPerm()) {
$entities = array_filter($entities, function ($comment) {
/** @var \Drupal\comment\CommentInterface $comment */
return $comment
->isPublished();
});
}
return $entities;
}
/**
* Determine if current use has admin role for at least one comment type.
*
* @return bool
* TRUE user has administration role, FALSE otherwise.
*/
protected function userHasAdminPerm() {
$is_admin = FALSE;
foreach ($this
->getConfiguration()['target_bundles'] as $comment_type) {
if ($this
->accessAdministerComment($this->currentUser, $comment_type)) {
$is_admin = TRUE;
}
}
return $is_admin;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
CommentAccessTrait:: |
public | function | Check if user has access to administer comments. | |
CommentAccessTrait:: |
public | function | Check if user has access to administer comment type. | |
CommentAccessTrait:: |
public | function | Check if user has access to comments. | |
CommentAccessTrait:: |
public | function | Check if user has access to edit own comment. | |
CommentAccessTrait:: |
public | function | Check if user has access to comments. | |
CommentAccessTrait:: |
public | function | Check if user has access to skip comment approval. | |
CommentAccessTrait:: |
public | function | Check if user doesn't have access to administer comments. | |
CommentSelection:: |
protected | function |
Builds an EntityQuery to get referenceable entities. Overrides CommentSelection:: |
|
CommentSelection:: |
public | function |
Creates a new entity object that can be used as a valid reference. Overrides DefaultSelection:: |
|
CommentSelection:: |
public | function |
Allows the selection to alter the SelectQuery generated by EntityFieldQuery. Overrides SelectionPluginBase:: |
|
CommentSelection:: |
protected | function | Determine if current use has admin role for at least one comment type. | |
CommentSelection:: |
public | function |
Validates which newly created entities can be referenced. Overrides CommentSelection:: |
|
DefaultSelection:: |
protected | property | The current user. | |
DefaultSelection:: |
protected | property | ||
DefaultSelection:: |
protected | property | The entity field manager service. | |
DefaultSelection:: |
protected | property | The entity repository. | |
DefaultSelection:: |
public | property | Entity type bundle info service. | |
DefaultSelection:: |
protected | property | The entity type manager service. | |
DefaultSelection:: |
protected | property | The module handler service. | |
DefaultSelection:: |
public | function |
Form constructor. Overrides SelectionPluginBase:: |
3 |
DefaultSelection:: |
public | function |
Counts entities that are referenceable. Overrides SelectionInterface:: |
2 |
DefaultSelection:: |
public static | function |
Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: |
2 |
DefaultSelection:: |
public | function |
Gets default configuration for this plugin. Overrides SelectionPluginBase:: |
3 |
DefaultSelection:: |
public static | function | Form element validation handler; Filters the #value property of an element. | |
DefaultSelection:: |
public | function |
Gets the list of referenceable entities. Overrides SelectionInterface:: |
3 |
DefaultSelection:: |
protected | function | Helper method: Passes a query to the alteration system again. | |
DefaultSelection:: |
public | function |
Form validation handler. Overrides SelectionPluginBase:: |
|
DefaultSelection:: |
public | function |
Validates which existing entities can be referenced. Overrides SelectionInterface:: |
|
DefaultSelection:: |
public | function |
Constructs a new DefaultSelection object. Overrides SelectionPluginBase:: |
1 |
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
DeprecatedServicePropertyTrait:: |
public | function | Allows to access deprecated/removed properties. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
SelectionPluginBase:: |
public | function |
Calculates dependencies for the configured plugin. Overrides DependentPluginInterface:: |
|
SelectionPluginBase:: |
protected | function | Ensures a backward compatibility level configuration. | |
SelectionPluginBase:: |
public | function |
Gets this plugin's configuration. Overrides ConfigurableInterface:: |
|
SelectionPluginBase:: |
protected | function | Moves the backward compatibility level configurations in the right place. | |
SelectionPluginBase:: |
public | function |
Sets the configuration for this plugin instance. Overrides ConfigurableInterface:: |
|
SelectionPluginBase:: |
public | function |
Form submission handler. Overrides PluginFormInterface:: |
|
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |