class FieldPermissionsController in Field Permissions 8
Same name and namespace in other branches
- 8.2 src/Controller/FieldPermissionsController.php \Drupal\field_permissions\Controller\FieldPermissionsController
Define FieldPermissionsController.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\field_permissions\Controller\FieldPermissionsController
Expanded class hierarchy of FieldPermissionsController
File
- src/
Controller/ FieldPermissionsController.php, line 19
Namespace
Drupal\field_permissions\ControllerView source
class FieldPermissionsController extends ControllerBase {
/**
* The entity type manager service.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* The field permission service.
*
* @var \Drupal\field_permissions\FieldPermissionsServiceInterface
*/
protected $fieldPermissions;
/**
* The field permission type plugin manager.
*
* @var \Drupal\field_permissions\Plugin\FieldPermissionType\Manager
*/
protected $permissionTypeManager;
/**
* Construct the field permission controller.
*
* @param \Drupal\field_permissions\FieldPermissionsServiceInterface $field_permissions_service
* Field permissions services.
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* The entity type manager service.
* @param \Drupal\field_permissions\Plugin\FieldPermissionType\Manager $permission_type_manager
* The permission type plugin manager.
*/
public function __construct(FieldPermissionsServiceInterface $field_permissions_service, EntityTypeManagerInterface $entity_type_manager, Manager $permission_type_manager) {
$this->entityTypeManager = $entity_type_manager;
$this->fieldPermissions = $field_permissions_service;
$this->permissionTypeManager = $permission_type_manager;
}
/**
* {@inheritdoc}
*
* Uses late static binding to create an instance of this class with
* injected dependencies.
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('field_permissions.permissions_service'), $container
->get('entity_type.manager'), $container
->get('plugin.field_permissions.types.manager'));
}
/**
* Content to page report all field permissions settings.
*
* Build table to Path: 'admin/reports/fields/permissions'.
*/
public function content() {
$build['table'] = [
'#type' => 'table',
'#header' => $this
->buildHeader(),
'#title' => $this
->getTitle(),
'#rows' => $this
->buildRows(),
];
$build['#attached']['library'] = 'field_permissions/field_permissions';
return $build;
}
/**
* Build the table header for the report.
*/
public function buildHeader() {
$headers = [
$this
->t('Field name'),
$this
->t('Field type'),
$this
->t('Entity type'),
$this
->t('Used in'),
];
$permissions_list = $this->fieldPermissions
->getList();
foreach ($permissions_list as $permission_type => $permission_info) {
$headers[] = [
'data' => $permission_info['label'],
'class' => 'field-permissions-header',
];
}
return $headers;
}
/**
* {@inheritdoc}
*/
public function getTitle() {
return $this
->t('Field permissions');
}
/**
* Build table rows.
*/
protected function buildRows() {
/** @var \Drupal\field\FieldStorageConfigInterface $instances */
$instances = $this->entityTypeManager
->getStorage('field_storage_config')
->loadMultiple();
$rows = [];
foreach ($instances as $key => $instance) {
$rows[] = $this
->buildRow($instance);
}
return $rows;
}
/**
* Build a single row.
*
* @param \Drupal\field\FieldStorageConfigInterface $field_storage
* Field to populate row.
*
* @return array
* Build row.
*/
protected function buildRow(FieldStorageConfigInterface $field_storage) {
$row = [];
if ($field_storage
->isLocked()) {
$row[0]['class'] = [
'menu-disabled',
];
$row[0]['data'] = $this
->t('@field_name (Locked)', [
'@field_name' => $field_storage
->getName(),
]);
}
else {
$row[0]['data'] = $field_storage
->getName();
}
$row[1]['data'] = $field_storage
->getType();
$row[2]['data'] = $field_storage
->getTargetEntityTypeId();
$row[3]['data'] = implode(", ", $field_storage
->getBundles());
$default_type = $this->fieldPermissions
->fieldGetPermissionType($field_storage);
$field_permissions = $this->fieldPermissions
->getPermissionsByRole();
if ($default_type === FieldPermissionTypeInterface::ACCESS_PUBLIC) {
$row[4]['data'] = $this
->t('Not set (Field inherits content permissions.)');
$row[4]['colspan'] = 5;
}
else {
$plugin = $this->permissionTypeManager
->createInstance($default_type, [], $field_storage);
if ($plugin instanceof CustomPermissionsInterface) {
// This is a field with custom permissions. Link the field to the
// appropriate row of the permissions page, and theme it based on
// whether all users have access.
foreach (array_keys($plugin
->getPermissions()) as $index => $permission) {
$all_access = in_array($permission, $field_permissions[RoleInterface::ANONYMOUS_ID]) && in_array($permission, $field_permissions[RoleInterface::AUTHENTICATED_ID]);
$class = $all_access ? 'field-permissions-status-on' : 'field-permissions-status-off';
$text = $all_access ? $this
->t('All users have this permission') : $this
->t('Not all users have this permission');
$link = Link::createFromRoute($text, 'user.admin_permissions', [], [
'fragment' => 'module-field_permissions',
])
->toRenderable();
$link['#options']['attributes']['title'] = $text;
$row[4 + $index]['data'] = $link;
$row[4 + $index]['class'] = [
$class,
];
}
}
else {
// Use the label and description.
$row[4]['data'] = $this
->t('@label (@description)', [
'@label' => $plugin
->getLabel(),
'@description' => $plugin
->getDescription(),
]);
$row[4]['colspan'] = 5;
}
}
return $row;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
FieldPermissionsController:: |
protected | property |
The entity type manager service. Overrides ControllerBase:: |
|
FieldPermissionsController:: |
protected | property | The field permission service. | |
FieldPermissionsController:: |
protected | property | The field permission type plugin manager. | |
FieldPermissionsController:: |
public | function | Build the table header for the report. | |
FieldPermissionsController:: |
protected | function | Build a single row. | |
FieldPermissionsController:: |
protected | function | Build table rows. | |
FieldPermissionsController:: |
public | function | Content to page report all field permissions settings. | |
FieldPermissionsController:: |
public static | function |
Uses late static binding to create an instance of this class with
injected dependencies. Overrides ControllerBase:: |
|
FieldPermissionsController:: |
public | function | ||
FieldPermissionsController:: |
public | function | Construct the field permission controller. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
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. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |