
| Current Path : /var/www/html/rocksensor1/web/core/modules/block_content/src/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : /var/www/html/rocksensor1/web/core/modules/block_content/src/BlockContentPermissions.php |
<?php
namespace Drupal\block_content;
use Drupal\block_content\Entity\BlockContentType;
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
use Drupal\Core\Entity\BundlePermissionHandlerTrait;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Provide dynamic permissions for blocks of different types.
*/
class BlockContentPermissions implements ContainerInjectionInterface {
use StringTranslationTrait;
use BundlePermissionHandlerTrait;
/**
* Constructs a BlockContentPermissions instance.
*
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager
* Entity type manager.
*/
public function __construct(
protected EntityTypeManagerInterface $entityTypeManager,
) {
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static(
$container->get('entity_type.manager'),
);
}
/**
* Build permissions for each block type.
*
* @return array
* The block type permissions.
*/
public function blockTypePermissions() {
return $this->generatePermissions($this->entityTypeManager->getStorage('block_content_type')->loadMultiple(), [$this, 'buildPermissions']);
}
/**
* Return all the permissions available for a block type.
*
* @param \Drupal\block_content\Entity\BlockContentType $type
* The block type.
*
* @return array
* Permissions available for the given block type.
*/
protected function buildPermissions(BlockContentType $type) {
$type_id = $type->id();
$type_params = ['%type_name' => $type->label()];
return [
"create $type_id block content" => [
'title' => $this->t('%type_name: Create new content block', $type_params),
],
"edit any $type_id block content" => [
'title' => $this->t('%type_name: Edit content block', $type_params),
],
"delete any $type_id block content" => [
'title' => $this->t('%type_name: Delete content block', $type_params),
],
"view any $type_id block content history" => [
'title' => $this->t('%type_name: View content block history pages', $type_params),
],
"revert any $type_id block content revisions" => [
'title' => $this->t('%type_name: Revert content block revisions', $type_params),
],
"delete any $type_id block content revisions" => [
'title' => $this->t('%type_name: Delete content block revisions', $type_params),
],
];
}
}