ActionsPermissionsEventSubscriber.php in Views Bulk Operations (VBO) 8.2
File
modules/actions_permissions/src/EventSubscriber/ActionsPermissionsEventSubscriber.php
View source
<?php
namespace Drupal\actions_permissions\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\EventDispatcher\Event;
use Drupal\views_bulk_operations\Service\ViewsBulkOperationsActionManager;
class ActionsPermissionsEventSubscriber implements EventSubscriberInterface {
const PRIORITY = -999;
public static function getSubscribedEvents() {
$events[ViewsBulkOperationsActionManager::ALTER_ACTIONS_EVENT][] = [
'alterActions',
static::PRIORITY,
];
return $events;
}
public function alterActions(Event $event) {
if (!empty($event->alterParameters['skip_actions_permissions'])) {
return;
}
foreach ($event->definitions as $action_id => $definition) {
if (empty($definition['requirements'])) {
$permission_id = 'execute ' . $definition['id'];
if (empty($definition['type'])) {
$permission_id .= ' all';
}
else {
$permission_id .= ' ' . $definition['type'];
}
$definition['requirements']['_permission'] = $permission_id;
$event->definitions[$action_id] = $definition;
}
}
}
}